config-parser: Handle lines that don't end in \n

If the last line in a config file doesn't have a newline
we end up chopping off the last character from that line.
This commit is contained in:
Kristian Høgsberg 2012-08-03 21:56:41 -04:00
parent 248aaecda2
commit 3d89049546

View file

@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
#include "config-parser.h"
@ -55,11 +56,13 @@ handle_key(const struct config_key *key, const char *value)
case CONFIG_KEY_STRING:
len = strlen(value);
s = malloc(len);
while (len > 0 && isspace(value[len - 1]))
len--;
s = malloc(len + 1);
if (s == NULL)
return -1;
memcpy(s, value, len - 1);
s[len - 1] = '\0';
memcpy(s, value, len);
s[len] = '\0';
*(char **)key->data = s;
return 0;