diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 02:05:17 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 02:05:17 -0800 |
| commit | b29060f38b30e6e379769582a0cf7cc3e9ae5056 (patch) | |
| tree | a8ace7d44e071f4d77de9b300855f8d9687cee86 /file_loader.c | |
| parent | 8ff80b09ccd7e680829d0911d965ad4b0d6f7939 (diff) | |
Cleaned up and simplified global state setting stuff (e.g. --verbose)
Diffstat (limited to 'file_loader.c')
| -rw-r--r-- | file_loader.c | 12 |
1 files changed, 9 insertions, 3 deletions
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); |
