From ac402aa9aecc9a07d4615fcda1cba28fb6bc0600 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Sat, 5 Jun 2021 20:35:12 -0400 Subject: Replace `find_line()` with `get_line()`. The loop body was also changed accordingly. This was done to make the config parser easier to read. --- config.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'config.c') diff --git a/config.c b/config.c index fc5f6bd..948c3a5 100644 --- a/config.c +++ b/config.c @@ -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); } -- cgit v1.2.3-13-gbd6f