From 869f49c82d936d518f1d97116d8475d5084f83e9 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 5 Apr 2011 16:03:47 -0400 Subject: Initial commit --- cfg.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 cfg.c (limited to 'cfg.c') diff --git a/cfg.c b/cfg.c new file mode 100644 index 0000000..4646c1d --- /dev/null +++ b/cfg.c @@ -0,0 +1,66 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include "duser.h" + +#define CFG_MAX 255 +FILE *cfgfp; + +int cfg_open(const char* filename) +{ + if((cfgfp = fopen(filename, "r")) == NULL) + return errno; + else + return 0; +} + +void cfg_close() +{ + fclose(cfgfp); +} + +//Value of key +int cfg_get_key(char* val, const char* key) +{ + + if(cfgfp == NULL) + return -1; + + if((fseek(cfgfp, 0L, SEEK_SET)) != 0) + return errno; + + char buffer[CFG_MAX]; + char *buf = buffer; //= (char*)malloc(sizeof(char) * CFG_MAX+1); + if(buffer == NULL) + { + fprintf(stderr, "%s: %s\n", SELF, strerror(errno)); + exit(1); + } + + int i = 0; + while(!feof(cfgfp)) + { + memset(buffer, 0L, CFG_MAX); + fgets(buffer, CFG_MAX, cfgfp); + if((strcasestr(buffer, key))) + { + while(buf) + { + if(isspace(*buf)) + { + strncpy(val, &buf[i+1], CFG_MAX); + val[strlen(val)-1] = 0; + break; + } + buf++; + } + i++; + break; + } + } + + return 0; +} -- cgit