void config_read(char* filename, char** key, char** value) { FILE* cfile; char tok[80]; char line[2048]; char* target; int i; int length; cfile = fopen(filename, "r"); if (!cfile) { perror("config_read"); return; } while(fgets(line, 2048, cfile)) { if ((target = strchr(line, '='))) { sscanf(line, "%80s", tok); for(i=0; key[i]; i++) { if (strcmp(key[i], tok) == 0) { target++; while(isspace(*target)) target++; length = strlen(target); value[i] = (char*)calloc(1, length + 1); strcpy(value[i], target); target = &value[i][length - 1]; while(isspace(*target)) *target-- = 0; } } } } fclose(cfile); }