From: Dana Jansens Date: Sat, 22 Mar 2003 22:02:14 +0000 (+0000) Subject: give the filename to the parser for errors X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=799fe5a8bcdc799d7621e2e97659f564b95dda05;p=chaz%2Fopenbox give the filename to the parser for errors --- diff --git a/openbox/config.c b/openbox/config.c index e2a14e44..b66ad5e7 100644 --- a/openbox/config.c +++ b/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 @@ void config_parse() /* 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 @@ void config_parse() /* 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); diff --git a/openbox/cparse.l b/openbox/cparse.l index 60eff0e5..3266fe97 100644 --- a/openbox/cparse.l +++ b/openbox/cparse.l @@ -2,6 +2,7 @@ #include #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 @@ static int yywrap() return 1; } -void cparse_go(FILE *file) +void cparse_go(char *filename, FILE *file) { + yyfilename = filename; yyin = file; yylex(); }