Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/poolid.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ pool_str2id(Pool *pool, const char *str, int create)
}

Id
pool_strn2id(Pool *pool, const char *str, unsigned int len, int create)
pool_strn2id(Pool *pool, const char *str, size_t len, int create)
{
int oldnstrings = pool->ss.nstrings;
Id id = stringpool_strn2id(&pool->ss, str, len, create);
Expand Down
6 changes: 4 additions & 2 deletions src/poolid.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
#ifndef LIBSOLV_POOLID_H
#define LIBSOLV_POOLID_H

#include <stddef.h>

#include "pooltypes.h"
#include "hash.h"

Expand All @@ -30,8 +32,8 @@ typedef struct s_Reldep {
int flags; /* operation/relation, see REL_x in pool.h */
} Reldep;

extern Id pool_str2id(Pool *pool, const char *, int);
extern Id pool_strn2id(Pool *pool, const char *, unsigned int, int);
extern Id pool_str2id(Pool *pool, const char *str, int create);
extern Id pool_strn2id(Pool *pool, const char *str, size_t len, int create);
extern Id pool_rel2id(Pool *pool, Id, Id, int, int);
extern const char *pool_id2str(const Pool *pool, Id);
extern const char *pool_id2rel(const Pool *pool, Id);
Expand Down
12 changes: 9 additions & 3 deletions src/repo.c
Original file line number Diff line number Diff line change
Expand Up @@ -1423,7 +1423,7 @@ repo_set_num(Repo *repo, Id p, Id keyname, unsigned long long num)
}

void
repo_set_str(Repo *repo, Id p, Id keyname, const char *str)
repo_set_strn(Repo *repo, Id p, Id keyname, const char *str, size_t l)
{
Repodata *data;
if (p >= 0)
Expand All @@ -1434,12 +1434,18 @@ repo_set_str(Repo *repo, Id p, Id keyname, const char *str)
case SOLVABLE_ARCH:
case SOLVABLE_EVR:
case SOLVABLE_VENDOR:
repo_set_id(repo, p, keyname, pool_str2id(repo->pool, str, 1));
repo_set_id(repo, p, keyname, pool_strn2id(repo->pool, str, l, 1));
return;
}
}
data = repo_last_repodata(repo);
repodata_set_str(data, p, keyname, str);
repodata_set_strn(data, p, keyname, str, l);
}

void
repo_set_str(Repo *repo, Id p, Id keyname, const char *str)
{
repo_set_strn(repo, p, keyname, str, strlen(str));
}

void
Expand Down
1 change: 1 addition & 0 deletions src/repo.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ Id solv_depmarker(Id keyname, Id marker);

void repo_set_id(Repo *repo, Id p, Id keyname, Id id);
void repo_set_num(Repo *repo, Id p, Id keyname, unsigned long long num);
void repo_set_strn(Repo *repo, Id p, Id keyname, const char *str, size_t l);
void repo_set_str(Repo *repo, Id p, Id keyname, const char *str);
void repo_set_poolstr(Repo *repo, Id p, Id keyname, const char *str);
void repo_add_poolstr_array(Repo *repo, Id p, Id keyname, const char *str);
Expand Down
30 changes: 10 additions & 20 deletions src/repodata.c
Original file line number Diff line number Diff line change
Expand Up @@ -2513,20 +2513,24 @@ repodata_set_void(Repodata *data, Id solvid, Id keyname)
}

void
repodata_set_str(Repodata *data, Id solvid, Id keyname, const char *str)
repodata_set_strn(Repodata *data, Id solvid, Id keyname, const char *str, size_t l)
{
Repokey key;
int l;

l = strlen(str) + 1;
key.name = keyname;
key.type = REPOKEY_TYPE_STR;
key.size = 0;
key.storage = KEY_STORAGE_INCORE;
data->attrdata = solv_extend(data->attrdata, data->attrdatalen, l, 1, REPODATA_ATTRDATA_BLOCK);
data->attrdata = solv_extend(data->attrdata, data->attrdatalen, l + 1, 1, REPODATA_ATTRDATA_BLOCK);
data->attrdata[l] = '\0';
memcpy(data->attrdata + data->attrdatalen, str, l);
repodata_set(data, solvid, &key, data->attrdatalen);
data->attrdatalen += l;
data->attrdatalen += l + 1;
}

void
repodata_set_str(Repodata *data, Id solvid, Id keyname, const char *str)
{
repodata_set_strn(data, solvid, keyname, str, strlen(str));
}

void
Expand Down Expand Up @@ -2691,20 +2695,6 @@ repodata_set_poolstrn(Repodata *data, Id solvid, Id keyname, const char *str, in
repodata_set_id(data, solvid, keyname, id);
}

static inline void
repodata_set_strn(Repodata *data, Id solvid, Id keyname, const char *str, int l)
{
if (!str[l])
repodata_set_str(data, solvid, keyname, str);
else
{
char *s = solv_strdup(str);
s[l] = 0;
repodata_set_str(data, solvid, keyname, s);
free(s);
}
}

void
repodata_set_location(Repodata *data, Id solvid, int medianr, const char *dir, const char *file)
{
Expand Down
1 change: 1 addition & 0 deletions src/repodata.h
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ Id repodata_new_handle(Repodata *data);
void repodata_set_void(Repodata *data, Id solvid, Id keyname);
void repodata_set_num(Repodata *data, Id solvid, Id keyname, unsigned long long num);
void repodata_set_id(Repodata *data, Id solvid, Id keyname, Id id);
void repodata_set_strn(Repodata *data, Id solvid, Id keyname, const char *str, size_t l);
void repodata_set_str(Repodata *data, Id solvid, Id keyname, const char *str);
void repodata_set_binary(Repodata *data, Id solvid, Id keyname, void *buf, int len);
/* create id from string, then set_id */
Expand Down
8 changes: 7 additions & 1 deletion src/solvable.c
Original file line number Diff line number Diff line change
Expand Up @@ -578,10 +578,16 @@ solvable_set_num(Solvable *s, Id keyname, unsigned long long num)
repo_set_num(s->repo, s - s->repo->pool->solvables, keyname, num);
}

void
solvable_set_strn(Solvable *s, Id keyname, const char *str, size_t l)
{
repo_set_strn(s->repo, s - s->repo->pool->solvables, keyname, str, l);
}

void
solvable_set_str(Solvable *s, Id keyname, const char *str)
{
repo_set_str(s->repo, s - s->repo->pool->solvables, keyname, str);
solvable_set_strn(s, keyname, str, strlen(str));
}

void
Expand Down
1 change: 1 addition & 0 deletions src/solvable.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ unsigned int solvable_lookup_count(Solvable *s, Id keyname); /* internal */
/* setter functions */
void solvable_set_id(Solvable *s, Id keyname, Id id);
void solvable_set_num(Solvable *s, Id keyname, unsigned long long num);
void solvable_set_strn(Solvable *s, Id keyname, const char *str, size_t l);
void solvable_set_str(Solvable *s, Id keyname, const char *str);
void solvable_set_poolstr(Solvable *s, Id keyname, const char *str);
void solvable_add_poolstr_array(Solvable *s, Id keyname, const char *str);
Expand Down