size_t len = 0;
ssize_t res;
FILE *f = fopen(fn, "rb");
+ bool ok = false;
if (!f)
return false;
while (1) {
res = getline(&ln, &len, f);
- if (res < 0)
+ if (res < 0) {
+ if (feof(f))
+ ok = true;
+ break;
+ }
+ if (!proc_line(arg, ln, res))
break;
- proc_line(arg, ln, res);
}
fclose(f);
free(ln);
- return true;
+ return ok;
}
/*
};
/** Signature for per-line callback */
-typedef void (*procline_cb)(void *arg, const char *line, ssize_t len);
+typedef bool (*procline_cb)(void *arg, const char *line, ssize_t len);
/** Read file into memory */
void *load_file(const char *fn, size_t *len_p);