summaryrefslogtreecommitdiff
path: root/src/io/lines.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/io/lines.h')
-rw-r--r--src/io/lines.h25
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);