diff options
author | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2003-09-09 06:54:43 +0000 |
---|---|---|
committer | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2003-09-09 06:54:43 +0000 |
commit | dd4d20ad1a3970752a4fe81c95c164bf751c0f16 (patch) | |
tree | c78e80eb3a22e818c6039ca5aa68c7f46000fd94 /cfg.c | |
parent | ca55019e85e081afe878a93ba0dc83a44d862de9 (diff) | |
download | lcd4linux-dd4d20ad1a3970752a4fe81c95c164bf751c0f16.tar.gz |
[lcd4linux @ 2003-09-09 06:54:43 by reinelt]
new function 'cfg_number()'
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@233 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to 'cfg.c')
-rw-r--r-- | cfg.c | 56 |
1 files changed, 50 insertions, 6 deletions
@@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.15 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: cfg.c,v 1.16 2003/09/09 06:54:43 reinelt Exp $ * * config file stuff * @@ -20,6 +20,9 @@ * * * $Log: cfg.c,v $ + * Revision 1.16 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.15 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -128,12 +131,14 @@ #include "debug.h" #include "cfg.h" + typedef struct { char *key; char *val; int lock; } ENTRY; + static char *Config_File=NULL; static ENTRY *Config=NULL; static int nConfig=0; @@ -156,6 +161,7 @@ static char *strip (char *s, int strip_comments) return s; } + static char *dequote (char *string) { char *s=string; @@ -172,6 +178,7 @@ static char *dequote (char *string) return string; } + static void cfg_add (char *key, char *val, int lock) { int i; @@ -191,6 +198,7 @@ static void cfg_add (char *key, char *val, int lock) Config[i].lock=lock; } + int l4l_cfg_cmd (char *arg) { char *key, *val; @@ -209,6 +217,7 @@ int l4l_cfg_cmd (char *arg) return 0; } + char *l4l_cfg_get (char *key, char *defval) { int i; @@ -221,6 +230,38 @@ char *l4l_cfg_get (char *key, char *defval) return defval; } + +int l4l_cfg_number (char *key, int defval, int min, int max, int *value) +{ + + char *s, *e; + + s=cfg_get(key, NULL); + if (s==NULL) { + *value=defval; + return 0; + } + + *value=strtol(s, &e, 0); + if (*e!='\0') { + error ("bad %s entry '%s' in %s", key, s, cfg_source()); + return -1; + } + + if (*value<min) { + error ("bad %s value '%s' in %s, minimum is %d", key, s, cfg_source(), min); + return -1; + } + + if (*value>max) { + error ("bad %s value '%s' in %s, maximum is %d", key, s, cfg_source(), max); + return -1; + } + + return 0; +} + + static int check_cfg_source(char *file) { /* as passwords and commands are stored in the config file, @@ -261,6 +302,7 @@ static int check_cfg_source(char *file) return error; } + int l4l_cfg_init (char *file) { FILE *stream; @@ -306,6 +348,7 @@ int l4l_cfg_init (char *file) return 0; } + char *l4l_cfg_source (void) { if (Config_File) @@ -315,8 +358,9 @@ char *l4l_cfg_source (void) } -int (*cfg_init) (char *source) = l4l_cfg_init; -char *(*cfg_source) (void) = l4l_cfg_source; -int (*cfg_cmd) (char *arg) = l4l_cfg_cmd; -char *(*cfg_get) (char *key, char *defval) = l4l_cfg_get; - +int (*cfg_init) (char *source) = l4l_cfg_init; +char *(*cfg_source) (void) = l4l_cfg_source; +int (*cfg_cmd) (char *arg) = l4l_cfg_cmd; +char *(*cfg_get) (char *key, char *defval) = l4l_cfg_get; +int (*cfg_number) (char *key, int defval, + int min, int max, int *value) = l4l_cfg_number; |