diff options
author | mrb0nk500 <b0nk@b0nk.xyz> | 2021-06-05 20:35:12 -0400 |
---|---|---|
committer | mrb0nk500 <b0nk@b0nk.xyz> | 2021-06-05 20:35:12 -0400 |
commit | ac402aa9aecc9a07d4615fcda1cba28fb6bc0600 (patch) | |
tree | c1f07754b56491cc030f39a256bb6a7cd283484d /config.c | |
parent | 2a9a76b3e7ebfa4c56a0f37074e90bdb7a90533a (diff) |
Replace `find_line()` with `get_line()`.
The loop body was also changed accordingly.
This was done to make the config parser easier to read.
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); } |