summaryrefslogtreecommitdiff
path: root/src/io/lines.h
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-07-14 10:25:56 +0200
committerTom Smeding <tom@tomsmeding.com>2024-07-14 10:25:56 +0200
commit1168c8ab426105bcd1b65aaf1f62c7a6144b0ae8 (patch)
treedd7d13be9988d234d9b3284b4bc88a9dd7f74d46 /src/io/lines.h
parent723828d1d473b70f77fa7878f855c2956ddcacc4 (diff)
file_lines module, herschrijf omd ermee
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);