Be stricter when parsing the configuration file

Throw an error message if there is a line that contains an invalid
configuration line (e.g. a non-empty line that neither contains a key
nor a value).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2011-07-15 18:04:24 +02:00
parent b362c17daa
commit 1f658881de

View File

@ -42,7 +42,6 @@
/* Available configuration variables. */ /* Available configuration variables. */
enum conf_var { enum conf_var {
CUSTOM_CONF_NOVARIABLE,
CUSTOM_CONF_AUTOSAVE, CUSTOM_CONF_AUTOSAVE,
CUSTOM_CONF_PERIODICSAVE, CUSTOM_CONF_PERIODICSAVE,
CUSTOM_CONF_CONFIRMQUIT, CUSTOM_CONF_CONFIRMQUIT,
@ -62,8 +61,7 @@ enum conf_var {
CUSTOM_CONF_OUTPUTDATEFMT, CUSTOM_CONF_OUTPUTDATEFMT,
CUSTOM_CONF_INPUTDATEFMT, CUSTOM_CONF_INPUTDATEFMT,
CUSTOM_CONF_DMON_ENABLE, CUSTOM_CONF_DMON_ENABLE,
CUSTOM_CONF_DMON_LOG, CUSTOM_CONF_DMON_LOG
CUSTOM_CONF_VARIABLES
}; };
struct attribute { struct attribute {
@ -258,7 +256,9 @@ custom_load_conf (struct conf *conf, int background)
break; break;
io_extract_data (e_conf, buf, sizeof buf); io_extract_data (e_conf, buf, sizeof buf);
if (strncmp (e_conf, "auto_save=", 10) == 0) if (*e_conf == '\0')
continue;
else if (strncmp (e_conf, "auto_save=", 10) == 0)
var = CUSTOM_CONF_AUTOSAVE; var = CUSTOM_CONF_AUTOSAVE;
else if (strncmp (e_conf, "periodic_save=", 14) == 0) else if (strncmp (e_conf, "periodic_save=", 14) == 0)
var = CUSTOM_CONF_PERIODICSAVE; var = CUSTOM_CONF_PERIODICSAVE;
@ -300,8 +300,8 @@ custom_load_conf (struct conf *conf, int background)
var = CUSTOM_CONF_DMON_LOG; var = CUSTOM_CONF_DMON_LOG;
else else
{ {
var = CUSTOM_CONF_NOVARIABLE; EXIT (_("configuration variable unknown"));
continue; /* NOTREACHED */
} }
if (fgets (buf, sizeof buf, data_file) == NULL) if (fgets (buf, sizeof buf, data_file) == NULL)
@ -310,8 +310,6 @@ custom_load_conf (struct conf *conf, int background)
switch (var) switch (var)
{ {
case CUSTOM_CONF_NOVARIABLE:
break;
case CUSTOM_CONF_AUTOSAVE: case CUSTOM_CONF_AUTOSAVE:
conf->auto_save = fill_config_var (e_conf); conf->auto_save = fill_config_var (e_conf);
break; break;
@ -381,9 +379,6 @@ custom_load_conf (struct conf *conf, int background)
case CUSTOM_CONF_DMON_LOG: case CUSTOM_CONF_DMON_LOG:
dmon.log = fill_config_var (e_conf); dmon.log = fill_config_var (e_conf);
break; break;
default:
EXIT (_("configuration variable unknown"));
/* NOTREACHED */
} }
} }
file_close (data_file, __FILE_POS__); file_close (data_file, __FILE_POS__);