From b29060f38b30e6e379769582a0cf7cc3e9ae5056 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 15 Jan 2021 02:05:17 -0800 Subject: Cleaned up and simplified global state setting stuff (e.g. --verbose) --- file_loader.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'file_loader.c') diff --git a/file_loader.c b/file_loader.c index 48e81e4..acbf8a6 100644 --- a/file_loader.c +++ b/file_loader.c @@ -42,10 +42,16 @@ static void populate_lines(file_t *f) // // Read an entire file into memory. // -file_t *load_file(file_t **files, const char *filename) +file_t *load_file(file_t **files, const char *fmt, ...) { - if (filename == NULL) filename = "-"; - int fd = streq(filename, "-") ? STDIN_FILENO : open(filename, O_RDONLY); + char filename[PATH_MAX+1] = {0}; + va_list args; + va_start(args, fmt); + check(vsnprintf(filename, PATH_MAX, fmt, args) <= PATH_MAX, + "File name is too large"); + va_end(args); + + int fd = filename[0] == '\0' ? STDIN_FILENO : open(filename, O_RDONLY); if (fd < 0) return NULL; size_t length; file_t *f = new(file_t); -- cgit v1.2.3