#pragma once #include #include #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);