You missed the part about posting it in code tags. Please just post the code here, so anybody looking at the thread can easily following along.
Code:
get_config_value (
char *buf,
size_t buf_len,
const char *fmt,
...)
{
FILE *fp;
char *line = NULL;
size_t len = 0;
ssize_t read;
va_list argp;
char var[128];
api_rc_t rc = 4;
fp = fopen(CONFIG, "r");
if (fp == NULL) {
return (3);
}
va_start(argp, fmt);
vsnprintf(var, sizeof(var), fmt, argp);
va_end(argp);
while ((read = getline(&line, &len, fp)) != -1) {
char *tok;
char *val;
/* check for comment. not very robust. */
if (line[0] == '#') {
continue;
}
/* get token. */
tok = strtok(line, "=");
if (!tok) {
continue;
}
if (strcmp(tok, var)==0) {
val = strtok(NULL, "=\n\r\t");
if (!val) {
rc = 3;
} else {
if (buf && buf_len) {
strncpy(buf, val, buf_len);
}
rc = API_OK;
}
break;
}
}
if (rc == 2) {
/* variable was not found. */
}
if (line) {
free(line);
}
fclose(fp);
return (rc);
}