summaryrefslogtreecommitdiffstats
path: root/text-utils/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'text-utils/parse.c')
-rw-r--r--text-utils/parse.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/text-utils/parse.c b/text-utils/parse.c
index 45052982e..a6e577825 100644
--- a/text-utils/parse.c
+++ b/text-utils/parse.c
@@ -57,25 +57,24 @@ void addfile(char *name)
{
char *p;
FILE *fp;
- int ch;
- char buf[2048 + 1];
+ size_t n;
+ char *buf = NULL;
if ((fp = fopen(name, "r")) == NULL)
err(EXIT_FAILURE, _("can't read %s"), name);
- while (fgets(buf, sizeof(buf), fp)) {
- if ((p = strchr(buf, '\n')) == NULL) {
- warnx(_("line too long"));
- while ((ch = getchar()) != '\n' && ch != EOF)
- ;
- continue;
- }
+
+ while (getline(&buf, &n, fp) != -1) {
p = buf;
+
while (*p && isspace(*p))
++p;
if (!*p || *p == '#')
continue;
+
add(p);
}
+
+ free(buf);
fclose(fp);
}