give the filename to the parser for errors
Dana Jansens danakj@orodu.net
2 files changed,
9 insertions(+),
6 deletions(-)
M
openbox/config.c
→
openbox/config.c
@@ -17,7 +17,7 @@ static GData *config = NULL;
static GData *config_def = NULL; /* provided by cparse.l */ -void cparse_go(FILE *); +void cparse_go(char *filename, FILE *); void config_startup()@@ -53,7 +53,7 @@
/* load the system wide rc file first */ path = g_build_filename(RCDIR, "rc3", NULL); if ((file = fopen(path, "r")) != NULL) { - cparse_go(file); + cparse_go(path, file); fclose(file); } g_free(path);@@ -61,7 +61,7 @@
/* then load the user one which can override it */ path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL); if ((file = fopen(path, "r")) != NULL) { - cparse_go(file); + cparse_go(path, file); fclose(file); } g_free(path);
M
openbox/cparse.l
→
openbox/cparse.l
@@ -2,6 +2,7 @@ %{
#include <glib.h> #include "config.h" +static char *yyfilename; static int yylineno = 1; static gboolean haserror = FALSE; static ConfigEntry entry = { NULL, -1 };@@ -64,9 +65,10 @@ static void newline()
{ if (!haserror && entry.name != NULL && (signed)entry.type >= 0) { if (!config_set(entry.name, entry.type, entry.value)) - g_warning("Invalid option in config file: '%s'\n", entry.name); + g_warning("Invalid option in '%s': '%s'\n", + yyfilename, entry.name); } else { - printf("Parser error in config file on line %d\n", yylineno); + printf("Parser error in '%s' on line %d\n", yyfilename, yylineno); } g_free(entry.name); entry.name = NULL;@@ -87,8 +89,9 @@ g_free(entry.value.string);
return 1; } -void cparse_go(FILE *file) +void cparse_go(char *filename, FILE *file) { + yyfilename = filename; yyin = file; yylex(); }