diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-12-08 00:02:14 +0100 |
---|---|---|
committer | Andrew Shadura <andrewsh@debian.org> | 2017-05-13 22:43:01 +0200 |
commit | d656f28bef7c69afa93e8187eb3c897e33f72ea0 (patch) | |
tree | 84de264d00a3cf6958dbd7aaa4ee785309ab5263 | |
parent | d97d910490b7d68f71240e471b2f0c1ee21bf9cb (diff) |
Do not parse the global variablesarchive/debian/0.9.12-6
This fixes an incompatibility with pkg-confing 0.29
Found by Thomas Klausner <wiz@NetBSD.org> when building gupnp-igd-0.2.3
with introspection support
Gbp-Pq: Name fix-define-variable.patch
-rw-r--r-- | pkg.c | 4 | ||||
-rw-r--r-- | pkg.h | 2 | ||||
-rw-r--r-- | tuple.c | 30 |
3 files changed, 24 insertions, 12 deletions
@@ -200,7 +200,7 @@ pkg_new_from_file(const char *filename, FILE *f, unsigned int flags) pkg = calloc(sizeof(pkg_t), 1); pkg->filename = strdup(filename); - pkg_tuple_add(&pkg->vars, "pcfiledir", pkg_get_parent_dir(pkg)); + pkg_tuple_add(&pkg->vars, "pcfiledir", pkg_get_parent_dir(pkg), true); /* make module id */ if ((idptr = strrchr(pkg->filename, PKG_DIR_SEP_S)) != NULL) @@ -265,7 +265,7 @@ pkg_new_from_file(const char *filename, FILE *f, unsigned int flags) pkg_dependency_parse(pkg, &pkg->conflicts, value); break; case '=': - pkg_tuple_add(&pkg->vars, key, value); + pkg_tuple_add(&pkg->vars, key, value, true); break; default: break; @@ -171,7 +171,7 @@ void pkg_fragment_free(pkg_list_t *list); char *pkg_fgetline(char *line, size_t size, FILE *stream); /* tuple.c */ -pkg_tuple_t *pkg_tuple_add(pkg_list_t *parent, const char *key, const char *value); +pkg_tuple_t *pkg_tuple_add(pkg_list_t *parent, const char *key, const char *value, bool parse); char *pkg_tuple_find(pkg_list_t *list, const char *key); char *pkg_tuple_parse(pkg_list_t *list, const char *value); void pkg_tuple_free(pkg_list_t *list); @@ -21,7 +21,7 @@ static pkg_list_t pkg_global_var = PKG_LIST_INITIALIZER; void pkg_tuple_add_global(const char *key, const char *value) { - pkg_tuple_add(&pkg_global_var, key, value); + pkg_tuple_add(&pkg_global_var, key, value, false); } char * @@ -63,12 +63,15 @@ out: } pkg_tuple_t * -pkg_tuple_add(pkg_list_t *list, const char *key, const char *value) +pkg_tuple_add(pkg_list_t *list, const char *key, const char *value, bool parse) { pkg_tuple_t *tuple = calloc(sizeof(pkg_tuple_t), 1); tuple->key = strdup(key); - tuple->value = pkg_tuple_parse(list, value); + if (parse) + tuple->value = pkg_tuple_parse(list, value); + else + tuple->value = strdup(value); pkg_node_insert(&tuple->iter, tuple, list); @@ -127,16 +130,25 @@ pkg_tuple_parse(pkg_list_t *vars, const char *value) } ptr += (pptr - ptr); - kv = pkg_tuple_find(vars, varname); - + kv = pkg_tuple_find_global(varname); if (kv != NULL) { - parsekv = pkg_tuple_parse(vars, kv); + strncpy(bptr, kv, PKG_BUFSIZE - (bptr - buf)); + bptr += strlen(kv); + } + else + { + kv = pkg_tuple_find(vars, varname); - strncpy(bptr, parsekv, PKG_BUFSIZE - (bptr - buf)); - bptr += strlen(parsekv); + if (kv != NULL) + { + parsekv = pkg_tuple_parse(vars, kv); + + strncpy(bptr, parsekv, PKG_BUFSIZE - (bptr - buf)); + bptr += strlen(parsekv); - free(parsekv); + free(parsekv); + } } } } |