summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libopkg/file_util.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libopkg/file_util.c b/libopkg/file_util.c
index 64e2bd3..e625984 100644
--- a/libopkg/file_util.c
+++ b/libopkg/file_util.c
@@ -66,11 +66,17 @@ file_read_line_alloc(FILE *fp)
int buf_len;
char *line = NULL;
int line_size = 0;
+ int got_nl = 0;
buf[0] = '\0';
while (fgets(buf, BUFSIZ, fp)) {
buf_len = strlen(buf);
+ if (buf[buf_len - 1] == '\n') {
+ buf_len--;
+ buf[buf_len] = '\0';
+ got_nl = 1;
+ }
if (line) {
line_size += buf_len;
line = xrealloc(line, line_size+1);
@@ -79,10 +85,8 @@ file_read_line_alloc(FILE *fp)
line_size = buf_len + 1;
line = xstrdup(buf);
}
- if (buf[buf_len - 1] == '\n') {
- buf[buf_len -1] = '\0';
+ if (got_nl)
break;
- }
}
return line;