From dd4d20ad1a3970752a4fe81c95c164bf751c0f16 Mon Sep 17 00:00:00 2001 From: reinelt Date: Tue, 9 Sep 2003 06:54:43 +0000 Subject: [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 --- cfg.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 6 deletions(-) (limited to 'cfg.c') diff --git a/cfg.c b/cfg.c index 708bf59..0689ce6 100644 --- a/cfg.c +++ b/cfg.c @@ -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 (*valuemax) { + 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; -- cgit v1.2.3