diff options
Diffstat (limited to 'src/io/lines.h')
-rw-r--r-- | src/io/lines.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/io/lines.h b/src/io/lines.h new file mode 100644 index 0000000..b09b756 --- /dev/null +++ b/src/io/lines.h @@ -0,0 +1,25 @@ +#pragma once + +#include <stdio.h> +#include <stdbool.h> + +#include "util/string_view.h" + + +struct file_lines { + const char *progname, *fname; + + FILE *f; + size_t cap; + char *buffer; + size_t cursor; + size_t readfrom; // if -1, no newline in buffer +}; + +// Returns false on EOF. FILE remains ownership of the caller. +bool file_lines_open(const char *progname, const char *fname, FILE *f, struct file_lines *dst); + +// Returns whether successful +bool file_lines_read(struct file_lines *fl, struct string_view *dst); + +void file_lines_close(struct file_lines *fl); |