/* read_config_var - a generic function used to read editable */ /* files. It looks for a keyword and returns it value. */ /* e.g. KEYWORD=value, TEMP_DIR=/usr/tmp, MAX_DOWNLOAD=10 */ /* This file is generic enough to be included as a library call*/ /* **NOTE: The total maximum of one table entry is 80 chars */ #include #include int read_config_var( char *, char * , char [] ); #ifndef GOOD #define GOOD 0 #endif #ifndef BAD #define BAD -1 #endif #ifndef UGLY #define UGLY -2 #endif /* BAD == file error, UGLY == bad user parm */ int read_config_var( char *values_file, char *keyword , char value[] ) { static char str[80]; int len; FILE * _file; if( keyword == NULL ) return (BAD); len = strlen(keyword); if( len > 77) return(UGLY); if( values_file ) { _file = fopen(values_file, "r"); if (_file == NULL) return(BAD); } else return(UGLY); if( fseek(_file, 0, SEEK_SET) ) { fclose(_file); return(BAD); } for(;;) { fgets(str, 80, _file); if( ferror(_file) || feof(_file) ) return(UGLY); len = strlen(str); if( strncmp(keyword, str, strlen(keyword)) == 0 ) { if (str[len - 1] == '\n') str[--len] = 0; sprintf(value, "%s", &str[strlen(keyword)+1] ); break; } } fclose(_file); return 0; } /* end of read_config_var */