summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2015-12-08 00:02:14 +0100
committerAndrew Shadura <andrewsh@debian.org>2017-05-13 22:43:01 +0200
commitd656f28bef7c69afa93e8187eb3c897e33f72ea0 (patch)
tree84de264d00a3cf6958dbd7aaa4ee785309ab5263
parentd97d910490b7d68f71240e471b2f0c1ee21bf9cb (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.c4
-rw-r--r--pkg.h2
-rw-r--r--tuple.c30
3 files changed, 24 insertions, 12 deletions
diff --git a/pkg.c b/pkg.c
index 752b7f8..ca3bd9d 100644
--- a/pkg.c
+++ b/pkg.c
@@ -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;
diff --git a/pkg.h b/pkg.h
index 83add6f..3f963e8 100644
--- a/pkg.h
+++ b/pkg.h
@@ -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);
diff --git a/tuple.c b/tuple.c
index dc2a195..d752730 100644
--- a/tuple.c
+++ b/tuple.c
@@ -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);
+ }
}
}
}