summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
Diffstat (limited to 'grammar')
-rw-r--r--grammar/parserif.h3
-rw-r--r--grammar/rainerscript.c3
-rw-r--r--grammar/rainerscript.h2
3 files changed, 7 insertions, 1 deletions
diff --git a/grammar/parserif.h b/grammar/parserif.h
index 58b8fbdd..adb0f42f 100644
--- a/grammar/parserif.h
+++ b/grammar/parserif.h
@@ -3,10 +3,11 @@
#include "rainerscript.h"
int cnfSetLexFile(char*);
int yyparse();
-int yydebug;
char *cnfcurrfn;
void dbgprintf(char *fmt, ...) __attribute__((format(printf, 1, 2)));
void parser_errmsg(char *fmt, ...) __attribute__((format(printf, 1, 2)));
+extern int yydebug;
+extern int yylineno;
/* entry points to be called after the parser has processed the
* element in question. Actual processing must than be done inside
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 0b2ee7cb..43c5a677 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -449,6 +449,8 @@ cnfactlstNew(enum cnfactType actType, struct nvlst *lst, char *actLine)
actlst->next = NULL;
actlst->syslines = NULL;
actlst->actType = actType;
+ actlst->lineno = yylineno;
+ actlst->cnfFile = strdup(cnfcurrfn);
if(actType == CNFACT_V2)
actlst->data.lst = lst;
else
@@ -484,6 +486,7 @@ cnfactlstDestruct(struct cnfactlst *actlst)
while(actlst != NULL) {
toDel = actlst;
actlst = actlst->next;
+ free(toDel->cnfFile);
cnfcfsyslinelstDestruct(toDel->syslines);
if(toDel->actType == CNFACT_V2)
nvlstDestruct(toDel->data.lst);
diff --git a/grammar/rainerscript.h b/grammar/rainerscript.h
index 7cc38abb..e11ae62f 100644
--- a/grammar/rainerscript.h
+++ b/grammar/rainerscript.h
@@ -86,6 +86,8 @@ struct cnfactlst {
struct nvlst *lst;
char *legActLine;
} data;
+ char *cnfFile;
+ int lineno;
};
/* the following structures support expressions, and may (very much later