char tmp_sectname[128];
char tmp_key[128];
char tmp_value[128];
+ char closing_bracket;
if (!fname || !cb)
return -EINVAL;
while (getline(&line, &len, fp) != EOF) {
// find section
- retval = sscanf_trim_whitespace_comment(line, "[%127[^]]]", tmp_sectname);
- if (retval != 1)
+ retval = sscanf_trim_whitespace_comment(line, "[%127[^]]%c", tmp_sectname, &closing_bracket);
+ if (retval != 2 || closing_bracket != ']')
continue;
result.section = strndup(tmp_sectname, sizeof(tmp_sectname));
// parse properties within the section
while((n_read = getline(&line, &len, fp)) != EOF) {
- retval = sscanf_trim_whitespace_comment(line, "[%127[^]]]", tmp_sectname);
- if (retval == 1) { // found next section. stop parsing properties
+ retval = sscanf_trim_whitespace_comment(line, "[%127[^]]%c", tmp_sectname, &closing_bracket);
+ if (retval == 2 && closing_bracket == ']') { // found next section. stop parsing properties
fseek(fp, -n_read, SEEK_CUR);
break;
}