From 105a7ce7020bc59816f12326bf1ae4470c85ee4c Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Fri, 10 Mar 2000 11:40:47 +0000 Subject: [lcd4linux @ 2000-03-10 11:40:47 by reinelt] --- cfg.c | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 cfg.c (limited to 'cfg.c') diff --git a/cfg.c b/cfg.c new file mode 100644 index 0000000..c0245a7 --- /dev/null +++ b/cfg.c @@ -0,0 +1,172 @@ +/* $Id: cfg.c,v 1.1 2000/03/10 11:40:47 reinelt Exp $ + * + * config file stuff + * + * Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * $Log: cfg.c,v $ + * Revision 1.1 2000/03/10 11:40:47 reinelt + * *** empty log message *** + * + * Revision 1.3 2000/03/07 11:01:34 reinelt + * + * system.c cleanup + * + * Revision 1.2 2000/03/06 06:04:06 reinelt + * + * minor cleanups + * + * + */ + +/* + * exported functions: + * + * cfg_set (key, value) + * pre-set key's value + * should be called before cfg_read() + * so we can specify 'default values' + * + * cfg_get (key) + * return the a value for a given key + * or NULL if key does not exist + * + * cfg_read (file) + * read configuration from file + * returns 0 if successful + * returns -1 in case of an error + * + * cfg_file (void) + * returns the file the configuration was read from + * + */ + +#include +#include +#include +#include + +#include "cfg.h" + +typedef struct { + char *key; + char *val; +} ENTRY; + +static char *Config_File=NULL; +static ENTRY *Config=NULL; +static int nConfig=0; + + +static char *strip (char *s) +{ + char *p; + + while (isblank(*s)) s++; + for (p=s; *p; p++) { + if (*p=='"') do p++; while (*p && *p!='\n' && *p!='"'); + if (*p=='\'') do p++; while (*p && *p!='\n' && *p!='\''); + if (*p=='#' || *p=='\n') { + *p='\0'; + break; + } + } + for (p--; p>s && isblank(*p); p--) *p='\0'; + return s; +} + + +void cfg_set (char *key, char *val) +{ + int i; + + for (i=0; i