diff options
author | reinelt <> | 2000-03-10 11:40:47 +0000 |
---|---|---|
committer | reinelt <> | 2000-03-10 11:40:47 +0000 |
commit | 105a7ce7020bc59816f12326bf1ae4470c85ee4c (patch) | |
tree | f347eaebea00b597a10ceecd1aa9bd762def3408 /config.c | |
parent | adeb0346086c03c48c716d3551a8edafa366b299 (diff) | |
download | lcd4linux-105a7ce7020bc59816f12326bf1ae4470c85ee4c.tar.gz |
[lcd4linux @ 2000-03-10 11:40:47 by reinelt]
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/config.c b/config.c deleted file mode 100644 index 6841c20..0000000 --- a/config.c +++ /dev/null @@ -1,169 +0,0 @@ -/* $Id: config.c,v 1.3 2000/03/07 11:01:34 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: config.c,v $ - * 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 <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <ctype.h> - -#include "config.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<nConfig; i++) { - if (strcasecmp(Config[i].key, key)==0) { - if (Config[i].val) free (Config[i].val); - Config[i].val=strdup(val); - return; - } - } - nConfig++; - Config=realloc(Config, nConfig*sizeof(ENTRY)); - Config[i].key=strdup(key); - Config[i].val=strdup(val); -} - - -char *cfg_get (char *key) -{ - int i; - - for (i=0; i<nConfig; i++) { - if (strcasecmp(Config[i].key, key)==0) { - return Config[i].val; - } - } - return NULL; -} - - -int cfg_read (char *file) -{ - FILE *stream; - char buffer[256]; - char *line, *p, *s; - - stream=fopen (file, "r"); - if (stream==NULL) { - fprintf (stderr, "open(%s) failed: %s\n", file, strerror(errno)); - return-1; - } - - if (Config_File) free (Config_File); - Config_File=strdup(file); - - while ((line=fgets(buffer,256,stream))!=NULL) { - if (*(line=strip(line))=='\0') continue; - for (p=line; *p; p++) { - if (isblank(*p)) { - *p++='\0'; - break; - } - } - p=strip(p); - if (*p) for (s=p; *(s+1); s++); - else s=p; - if (*p=='"' && *s=='"') { - *s='\0'; - p++; - } - else if (*p=='\'' && *s=='\'') { - *s='\0'; - p++; - } - cfg_set (line, p); - } - fclose (stream); - return 0; -} - - -char *cfg_file (void) -{ - if (Config_File) - return Config_File; - else - return ""; -} |