Author: mlschroe Date: Fri May 9 15:15:03 2008 New Revision: 10011 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10011&view=rev Log: - add pool_id2langid function Modified: trunk/sat-solver/src/pool.c trunk/sat-solver/src/pool.h trunk/sat-solver/src/solvable.c Modified: trunk/sat-solver/src/pool.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=10011&r1=10010&r2=10011&view=diff ============================================================================== --- trunk/sat-solver/src/pool.c (original) +++ trunk/sat-solver/src/pool.c Fri May 9 15:15:03 2008 @@ -982,6 +982,28 @@ pool->languages[i] = strdup(languages[i]); } +Id +pool_id2langid(Pool *pool, Id id, const char *lang, int create) +{ + const char *n; + char buf[256], *p; + int l; + + if (!lang) + return id; + n = id2str(pool, id); + l = strlen(n) + strlen(lang) + 2; + if (l > sizeof(buf)) + p = sat_malloc(strlen(n) + strlen(lang) + 2); + else + p = buf; + sprintf(p, "%s:%s", n, lang); + id = str2id(pool, p, create); + if (p != buf) + free(p); + return id; +} + char * pool_alloctmpspace(Pool *pool, int len) { Modified: trunk/sat-solver/src/pool.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.h?rev=10011&r1=10010&r2=10011&view=diff ============================================================================== --- trunk/sat-solver/src/pool.h (original) +++ trunk/sat-solver/src/pool.h Fri May 9 15:15:03 2008 @@ -166,6 +166,7 @@ extern const char *solvable2str(Pool *pool, Solvable *s); void pool_set_languages(Pool *pool, const char **languages, int nlanguages); +Id pool_id2langid(Pool *pool, Id id, const char *lang, int create); Id solvable_lookup_id(Solvable *s, Id keyname); unsigned int solvable_lookup_num(Solvable *s, Id keyname, unsigned int notfound); Modified: trunk/sat-solver/src/solvable.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/solvable.c?rev=10011&r1=10010&r2=10011&view=diff ============================================================================== --- trunk/sat-solver/src/solvable.c (original) +++ trunk/sat-solver/src/solvable.c Fri May 9 15:15:03 2008 @@ -177,24 +177,12 @@ const char * solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang) { - Pool *pool; - Id id; - char *p; - const char *kn, *str; - - if (!s->repo) - return repo_lookup_str(s, keyname); - pool = s->repo->pool; - kn = id2str(pool, keyname); - p = sat_malloc(strlen(kn) + strlen(lang) + 2); - sprintf(p, "%s:%s", kn, lang); - id = str2id(pool, p, 0); - free(p); - if (id) - { - str = repo_lookup_str(s, id); - if (str) - return str; + if (s->repo) + { + const char *str; + Id id = pool_id2langid(s->repo->pool, keyname, lang, 0); + if (id && (str = repo_lookup_str(s, id)) != 0) + return str; } return repo_lookup_str(s, keyname); } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org