short conflib__get_string_key(const char *file, const char *section, const char *key, const char *value, long max_length, const char *defaut)
{
FILE *f=fopen(file,"r");
if (!f) return FAIL;
char sechead[strlen(section)+3];
sprintf(sechead,"[%s]",section);
int r;
do {
r=fscanf(f,sechead);
if (r>0) goto secfound; else if (!r) r=fscanf(f,"%*s");
} while (r!=EOF);
notfound:
strncpy(value,defaut,max_length);
value[max_length+1]=0;
goto valfound;
secfound:;
char valhead[strlen(value)+11];
sprintf(valhead,"%s = %%%ds",section,max_length);
do {
if (fscanf(f,"[%*s]")) goto notfound;
r=fscanf(f,valhead);
if (r>0) goto valfound; else if (!r) r=fscanf(f,"%*s");
} while (r!=EOF);
goto notfound;
valfound:
fclose(f);
return SUCCESS;
}