diff options
author | David Robillard <d@drobilla.net> | 2021-08-02 11:32:31 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-28 21:57:07 -0500 |
commit | 2746098ad7d9f9d81e616a25e16aeae784f438a5 (patch) | |
tree | fa38401f32247bbd183fc5920e080c1674ef8b8a /src/console.c | |
parent | 7eafa3587c370a204e08afbc4013f748dd78feba (diff) | |
download | serd-2746098ad7d9f9d81e616a25e16aeae784f438a5.tar.gz serd-2746098ad7d9f9d81e616a25e16aeae784f438a5.tar.bz2 serd-2746098ad7d9f9d81e616a25e16aeae784f438a5.zip |
Factor out opening input files
Diffstat (limited to 'src/console.c')
-rw-r--r-- | src/console.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/console.c b/src/console.c index 75de5f62..fd339526 100644 --- a/src/console.c +++ b/src/console.c @@ -15,6 +15,7 @@ */ #include "console.h" +#include "system.h" #include "serd/serd.h" @@ -26,6 +27,8 @@ # include <io.h> #endif +#include <string.h> + void serd_set_stream_utf8_mode(FILE* const stream) { @@ -52,3 +55,27 @@ serd_print_version(const char* const program) return 0; } + +SerdByteSource* +serd_open_input(const char* const filename, const size_t page_size) +{ + SerdByteSource* byte_source = NULL; + if (!strcmp(filename, "-")) { + serd_set_stream_utf8_mode(stdin); + + SerdNode* name = serd_new_string(SERD_STRING("stdin")); + + byte_source = serd_byte_source_new_function(serd_file_read_byte, + (SerdStreamErrorFunc)ferror, + NULL, + stdin, + name, + page_size); + + serd_node_free(name); + } else { + byte_source = serd_byte_source_new_filename(filename, page_size); + } + + return byte_source; +} |