diff options
author | reinelt <> | 2003-09-09 06:54:43 +0000 |
---|---|---|
committer | reinelt <> | 2003-09-09 06:54:43 +0000 |
commit | b1f5fffddaf31835515f88859f8a4670b6252deb (patch) | |
tree | c78e80eb3a22e818c6039ca5aa68c7f46000fd94 /cfg.c | |
parent | b39a42b909dfb1c174044cf977d272f94445b18e (diff) | |
download | lcd4linux-b1f5fffddaf31835515f88859f8a4670b6252deb.tar.gz |
[lcd4linux @ 2003-09-09 06:54:43 by reinelt]
new function 'cfg_number()'
Diffstat (limited to '')
-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; |