parser->parent = pakfire_parser_ref(parent);
// Make namespace
- parser->namespace = pakfire_parser_make_namespace(parent, namespace);
+ pakfire_parser_set_namespace(parser, namespace);
DEBUG(pakfire, "Allocated new parser at %p (%s, %p)\n",
parser, parser->namespace, parser->parent);
if (value)
d->value = strdup(value);
+ else
+ d->value = NULL;
DEBUG(parser->pakfire, "%p: Updated declaration: %s = %s\n",
parser, d->name, d->value);
}
PAKFIRE_EXPORT int pakfire_parser_set(PakfireParser parser, const char* name, const char* value) {
- char* canonical_name = pakfire_parser_make_canonical_name(parser, name);
-
- int r = pakfire_parser_set_declaration(parser, canonical_name, value);
- free(canonical_name);
-
- return r;
+ return pakfire_parser_set_declaration(parser, name, value);
}
int pakfire_parser_apply_declaration(PakfireParser parser,
if (!d)
break;
- pakfire_parser_set_declaration(parser1, d->name, d->value);
+ char* canonical_name = pakfire_parser_make_canonical_name(parser2, d->name);
+
+ pakfire_parser_set_declaration(parser1, canonical_name, d->value);
+
+ free(canonical_name);
}
return parser1;
PAKFIRE_EXPORT const char* pakfire_parser_get_namespace(PakfireParser parser) {
return parser->namespace;
}
+
+PAKFIRE_EXPORT int pakfire_parser_set_namespace(PakfireParser parser, const char* namespace) {
+ if (parser->namespace)
+ free(parser->namespace);
+
+ if (namespace)
+ parser->namespace = strdup(namespace);
+ else
+ parser->namespace = NULL;
+
+ DEBUG(parser->pakfire, "%p: Set namespace to: %s\n", parser, parser->namespace);
+
+ return 0;
+}
pakfire_parser_merge(parser, subparser);
// Now a should have changed to "a b c"
- value = pakfire_parser_get(parser, "a");
+ value = pakfire_parser_get(parser, "child.a");
ASSERT_STRING_EQUALS(value, "a b c");
// Set a variable
// Get the value of c
value = pakfire_parser_get(parser, "c");
- ASSERT_STRING_EQUALS(value, "1");
+ ASSERT_STRING_EQUALS(value, "");
// Dump the parser
char* s = pakfire_parser_dump(parser);