commit 66a5ea722d18fc76ce7c5c4323e8cfebe58e7517
parent c1e6ecb41b1dc4d0e6e35430e21d36c55c08cd39
Author: Jakob Kramer <jakob.kramer@gmx.de>
Date: Wed, 11 Feb 2015 00:30:05 +0100
getlines: last line of file should always have a newline
This is a useful behavior if you want to reorder the lines,
because otherwise you might end up with originally two lines
on one, e.g.
$ echo -ne "foo\nbar" | sort
barfoo
Diffstat:
1 file changed, 5 insertions(+), 0 deletions(-)
diff --git a/libutil/getlines.c b/libutil/getlines.c
@@ -24,4 +24,9 @@ getlines(FILE *fp, struct linebuf *b)
memcpy(b->lines[b->nlines-1], line, linelen);
}
free(line);
+ if (strchr(b->lines[b->nlines-1], '\n') == NULL) {
+ b->lines[b->nlines-1] = erealloc(b->lines[b->nlines-1], linelen + 1);
+ b->lines[b->nlines-1][linelen-1] = '\n';
+ b->lines[b->nlines-1][linelen] = '\0';
+ }
}