give the filename to the parser for errors

This commit is contained in:
Dana Jansens 2003-03-22 22:02:14 +00:00
parent a26cd30bf0
commit 799fe5a8bc
2 changed files with 9 additions and 6 deletions

View file

@ -17,7 +17,7 @@ static GData *config = NULL;
static GData *config_def = NULL; static GData *config_def = NULL;
/* provided by cparse.l */ /* provided by cparse.l */
void cparse_go(FILE *); void cparse_go(char *filename, FILE *);
void config_startup() void config_startup()
@ -53,7 +53,7 @@ void config_parse()
/* load the system wide rc file first */ /* load the system wide rc file first */
path = g_build_filename(RCDIR, "rc3", NULL); path = g_build_filename(RCDIR, "rc3", NULL);
if ((file = fopen(path, "r")) != NULL) { if ((file = fopen(path, "r")) != NULL) {
cparse_go(file); cparse_go(path, file);
fclose(file); fclose(file);
} }
g_free(path); g_free(path);
@ -61,7 +61,7 @@ void config_parse()
/* then load the user one which can override it */ /* then load the user one which can override it */
path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL); path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL);
if ((file = fopen(path, "r")) != NULL) { if ((file = fopen(path, "r")) != NULL) {
cparse_go(file); cparse_go(path, file);
fclose(file); fclose(file);
} }
g_free(path); g_free(path);

View file

@ -2,6 +2,7 @@
#include <glib.h> #include <glib.h>
#include "config.h" #include "config.h"
static char *yyfilename;
static int yylineno = 1; static int yylineno = 1;
static gboolean haserror = FALSE; static gboolean haserror = FALSE;
static ConfigEntry entry = { NULL, -1 }; static ConfigEntry entry = { NULL, -1 };
@ -64,9 +65,10 @@ static void newline()
{ {
if (!haserror && entry.name != NULL && (signed)entry.type >= 0) { if (!haserror && entry.name != NULL && (signed)entry.type >= 0) {
if (!config_set(entry.name, entry.type, entry.value)) 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 { } 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); g_free(entry.name);
entry.name = NULL; entry.name = NULL;
@ -87,8 +89,9 @@ static int yywrap()
return 1; return 1;
} }
void cparse_go(FILE *file) void cparse_go(char *filename, FILE *file)
{ {
yyfilename = filename;
yyin = file; yyin = file;
yylex(); yylex();
} }