[hackers] [sbase] getlines: last line of file should always have a newline || Jakob Kramer

From: <git_AT_suckless.org>
Date: Tue, 24 Mar 2015 23:53:40 +0100 (CET)

commit 66a5ea722d18fc76ce7c5c4323e8cfebe58e7517
Author: Jakob Kramer <jakob.kramer_AT_gmx.de>
Date: Wed Feb 11 00:30:05 2015 +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

diff --git a/libutil/getlines.c b/libutil/getlines.c
index 55e9bf4..8d4fc44 100644
--- a/libutil/getlines.c
+++ b/libutil/getlines.c
_AT_@ -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';
+ }
 }
Received on Tue Mar 24 2015 - 23:53:40 CET

This archive was generated by hypermail 2.3.0 : Wed Mar 25 2015 - 00:09:44 CET