version 1.12, 2010/12/29 21:28:32 |
version 1.13, 2011/08/24 10:46:01 |
|
|
retval = 0; |
retval = 0; |
while ((buf = fgetln(f, &len))) { |
while ((buf = fgetln(f, &len))) { |
if (buf[len - 1] == '\n') |
if (buf[len - 1] == '\n') |
buf[len - 1] = '\0'; |
len--; |
|
|
|
if (line != NULL) |
|
line = xrealloc(line, 1, strlen(line) + len + 1); |
else { |
else { |
line = xrealloc(line, 1, len + 1); |
line = xmalloc(len + 1); |
memcpy(line, buf, len); |
*line = '\0'; |
line[len] = '\0'; |
|
buf = line; |
|
} |
} |
|
|
|
/* Append buffer to line. strncat will terminate. */ |
|
strncat(line, buf, len); |
n++; |
n++; |
|
|
|
/* Continuation: get next line? */ |
|
len = strlen(line); |
|
if (len > 0 && line[len - 1] == '\\') { |
|
line[len - 1] = '\0'; |
|
continue; |
|
} |
|
buf = line; |
|
line = NULL; |
|
|
if (cmd_string_parse(buf, &cmdlist, &cause) != 0) { |
if (cmd_string_parse(buf, &cmdlist, &cause) != 0) { |
|
xfree(buf); |
if (cause == NULL) |
if (cause == NULL) |
continue; |
continue; |
cfg_add_cause(causes, "%s: %u: %s", path, n, cause); |
cfg_add_cause(causes, "%s: %u: %s", path, n, cause); |
xfree(cause); |
xfree(cause); |
continue; |
continue; |
} |
} else |
|
xfree(buf); |
if (cmdlist == NULL) |
if (cmdlist == NULL) |
continue; |
continue; |
cfg_cause = NULL; |
cfg_cause = NULL; |
|
|
retval = 1; |
retval = 1; |
cmd_list_free(cmdlist); |
cmd_list_free(cmdlist); |
if (cfg_cause != NULL) { |
if (cfg_cause != NULL) { |
cfg_add_cause(causes, "%s: %d: %s", path, n, cfg_cause); |
cfg_add_cause( |
|
causes, "%s: %d: %s", path, n, cfg_cause); |
xfree(cfg_cause); |
xfree(cfg_cause); |
} |
} |
} |
} |
if (line != NULL) |
if (line != NULL) { |
|
cfg_add_cause(causes, |
|
"%s: %d: line continuation at end of file", path, n); |
xfree(line); |
xfree(line); |
|
} |
fclose(f); |
fclose(f); |
|
|
return (retval); |
return (retval); |