diff options
author | David Robillard <d@drobilla.net> | 2021-07-31 20:06:15 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-28 21:57:07 -0500 |
commit | f9524394dc6e5571b48af14fdda33316ba4feb07 (patch) | |
tree | 6065bfa8d7b977626287e3593911024934d96e1a /src | |
parent | 411b2ffac686478f3312c4a0c5cf20a230a3f728 (diff) | |
download | serd-f9524394dc6e5571b48af14fdda33316ba4feb07.tar.gz serd-f9524394dc6e5571b48af14fdda33316ba4feb07.tar.bz2 serd-f9524394dc6e5571b48af14fdda33316ba4feb07.zip |
Factor out Windows UTF-8 console setup code
Diffstat (limited to 'src')
-rw-r--r-- | src/console.c | 35 | ||||
-rw-r--r-- | src/console.h | 20 | ||||
-rw-r--r-- | src/serdi.c | 15 |
3 files changed, 58 insertions, 12 deletions
diff --git a/src/console.c b/src/console.c new file mode 100644 index 00000000..92c8bd71 --- /dev/null +++ b/src/console.c @@ -0,0 +1,35 @@ +/* + Copyright 2011-2021 David Robillard <d@drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include "console.h" + +#ifdef _WIN32 +# ifdef _MSC_VER +# define WIN32_LEAN_AND_MEAN 1 +# endif +# include <fcntl.h> +# include <io.h> +#endif + +void +serd_set_stream_utf8_mode(FILE* const stream) +{ +#ifdef _WIN32 + _setmode(_fileno(stream), _O_BINARY); +#else + (void)stream; +#endif +} diff --git a/src/console.h b/src/console.h new file mode 100644 index 00000000..73168e11 --- /dev/null +++ b/src/console.h @@ -0,0 +1,20 @@ +/* + Copyright 2021 David Robillard <d@drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include <stdio.h> + +void +serd_set_stream_utf8_mode(FILE* stream); diff --git a/src/serdi.c b/src/serdi.c index d84e3663..51ae084e 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -14,18 +14,11 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "console.h" #include "system.h" #include "serd/serd.h" -#ifdef _WIN32 -# ifdef _MSC_VER -# define WIN32_LEAN_AND_MEAN 1 -# endif -# include <fcntl.h> -# include <io.h> -#endif - #include <errno.h> #include <limits.h> #include <stdbool.h> @@ -405,12 +398,10 @@ main(int argc, char** argv) SerdEnv* const env = serd_env_new(base ? serd_node_string_view(base) : SERD_EMPTY_STRING()); -#ifdef _WIN32 - _setmode(_fileno(stdin), _O_BINARY); + serd_set_stream_utf8_mode(stdin); if (!out_filename) { - _setmode(_fileno(stdout), _O_BINARY); + serd_set_stream_utf8_mode(stdout); } -#endif const SerdDescribeFlags describe_flags = no_inline ? SERD_NO_INLINE_OBJECTS : 0u; |