static int Parser_init(ParserObject* self, PyObject* args, PyObject* kwds) {
PakfireObject* pakfire = NULL;
const char* namespace = NULL;
+ int flags = 0;
- if (!PyArg_ParseTuple(args, "O!|z", &PakfireType, &pakfire, &namespace))
+ if (!PyArg_ParseTuple(args, "O!|zi", &PakfireType, &pakfire, &namespace, &flags))
return -1;
// Allocate a new parser
- self->parser = pakfire_parser_create(pakfire->pakfire, NULL, namespace);
+ self->parser = pakfire_parser_create(pakfire->pakfire, NULL, namespace, flags);
if (!self->parser) {
// What went wrong here?
return -1;
archive->nrefs = 1;
archive->format = -1;
- archive->parser = pakfire_parser_create(pakfire, NULL, NULL);
+ archive->parser = pakfire_parser_create(pakfire, NULL, NULL, 0);
archive->signatures = NULL;
}
#include <pakfire/types.h>
+enum pakfire_parser_flags {
+ PAKFIRE_PARSER_FLAGS_NONE = 0,
+ PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS = (1 << 0),
+};
+
struct pakfire_parser_error;
PakfireParser pakfire_parser_create(Pakfire pakfire, PakfireParser parser,
- const char* namespace);
+ const char* namespace, int flags);
PakfireParser pakfire_parser_create_child(PakfireParser parser,
const char* namespace);
PakfireParser pakfire_parser_ref(PakfireParser parser);
const char* path, struct pakfire_parser_error** error) {
int r = 1;
- *parser = pakfire_parser_create(pakfire, NULL, NULL);
+ *parser = pakfire_parser_create(pakfire, NULL, NULL, PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS);
if (!*parser) {
r = 1;
goto ERROR;
struct _PakfireParser* parent;
int nrefs;
+ int flags;
char* namespace;
struct pakfire_parser_declaration** declarations;
return buffer;
}
-PAKFIRE_EXPORT PakfireParser pakfire_parser_create(Pakfire pakfire, PakfireParser parent, const char* namespace) {
+PAKFIRE_EXPORT PakfireParser pakfire_parser_create(Pakfire pakfire,
+ PakfireParser parent, const char* namespace, int flags) {
PakfireParser parser = calloc(1, sizeof(*parser));
if (parser) {
parser->pakfire = pakfire_ref(pakfire);
if (parent)
parser->parent = pakfire_parser_ref(parent);
+ // Store flags
+ parser->flags = flags;
+
// Make namespace
pakfire_parser_set_namespace(parser, namespace);
}
PAKFIRE_EXPORT PakfireParser pakfire_parser_create_child(PakfireParser parser, const char* namespace) {
- return pakfire_parser_create(parser->pakfire, parser, namespace);
+ return pakfire_parser_create(parser->pakfire, parser, namespace, parser->flags);
}
PAKFIRE_EXPORT PakfireParser pakfire_parser_ref(PakfireParser parser) {
grammar : %empty
{
- $$ = pakfire_parser_create(pakfire, NULL, NULL);
+ $$ = pakfire_parser_create(pakfire, NULL, NULL, 0);
if (!$$)
ABORT;
char* value;
// Create a new parser
- $$ = pakfire_parser_create(pakfire, NULL, NULL);
+ $$ = pakfire_parser_create(pakfire, NULL, NULL, 0);
if (!$$)
ABORT;
char* value = NULL;
// Create a new parser
- PakfireParser parser = pakfire_parser_create(t->pakfire, NULL, NULL);
+ PakfireParser parser = pakfire_parser_create(t->pakfire, NULL, NULL, 0);
// Retrieve a value that does not exist
value = pakfire_parser_get(parser, NULL, "null");
ASSERT(path);
// Create a new parser
- PakfireParser parser = pakfire_parser_create(t->pakfire, NULL, NULL);
+ PakfireParser parser = pakfire_parser_create(t->pakfire, NULL, NULL, 0);
FILE* f = fopen(path, "r");
ASSERT(f);