diff options
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -59,9 +59,18 @@ char *read_file(const char *filename, long *size) { return buf; } -char *find_line(char *str) { - for (; *str != '\n' && *str != '\0'; str++); - return str; +char *get_line(char **str) { + char *s; + size_t i; + + for (i = 0; *str[i] != '\n' && *str[i] != '\0'; i++); + + s = malloc(i+1); + memset(s, 0, i+1); + memcpy(s, *str, i); + + str += i; + return s; } config *parse_config(const char *filename) { @@ -85,7 +94,8 @@ config *parse_config(const char *filename) { return NULL; } - for (; *buf != '\0'; buf = find_line(buf)) { + while (*buf != '\0') { + char *line = get_line(&buf); char *value; char *name = strtok_r(buf, "=", &value); } |