aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--liberty.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/liberty.c b/liberty.c
index 035d23d..178754c 100644
--- a/liberty.c
+++ b/liberty.c
@@ -3040,23 +3040,19 @@ xstrtoul (unsigned long *out, const char *s, int base)
}
static bool
-read_line (FILE *fp, struct str *s)
+read_line (FILE *fp, struct str *line)
{
- int c;
- bool at_end = true;
+ str_reset (line);
- str_reset (s);
- while ((c = fgetc (fp)) != EOF)
+ int c;
+ while ((c = fgetc (fp)) != '\n')
{
- at_end = false;
- if (c == '\r')
- continue;
- if (c == '\n')
- break;
- str_append_c (s, c);
+ if (c == EOF)
+ return line->len != 0;
+ if (c != '\r')
+ str_append_c (line, c);
}
-
- return !at_end;
+ return true;
}
static char *