diff options
author | David Robillard <d@drobilla.net> | 2021-07-31 20:06:15 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2023-12-02 18:49:08 -0500 |
commit | 70036e2a0d7ca13ef9a126be4e751fc5768613b6 (patch) | |
tree | 018f152719734ad7a6d22a84aadb7ddda25ab591 /src | |
parent | d76b4da8f420a320b830544288c555a284151773 (diff) | |
download | serd-70036e2a0d7ca13ef9a126be4e751fc5768613b6.tar.gz serd-70036e2a0d7ca13ef9a126be4e751fc5768613b6.tar.bz2 serd-70036e2a0d7ca13ef9a126be4e751fc5768613b6.zip |
Factor out Windows UTF-8 console setup code
Diffstat (limited to 'src')
-rw-r--r-- | src/console.c | 22 | ||||
-rw-r--r-- | src/console.h | 7 | ||||
-rw-r--r-- | src/serdi.c | 16 |
3 files changed, 33 insertions, 12 deletions
diff --git a/src/console.c b/src/console.c new file mode 100644 index 00000000..a15c8e7d --- /dev/null +++ b/src/console.c @@ -0,0 +1,22 @@ +// Copyright 2011-2021 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#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..ff21e442 --- /dev/null +++ b/src/console.h @@ -0,0 +1,7 @@ +// Copyright 2021 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#include <stdio.h> + +void +serd_set_stream_utf8_mode(FILE* stream); diff --git a/src/serdi.c b/src/serdi.c index ac4d3178..bc68e591 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -1,6 +1,8 @@ // Copyright 2011-2023 David Robillard <d@drobilla.net> // SPDX-License-Identifier: ISC +#include "console.h" + #include "serd/env.h" #include "serd/error.h" #include "serd/input_stream.h" @@ -15,14 +17,6 @@ #include "serd/world.h" #include "serd/writer.h" -#ifdef _WIN32 -# ifdef _MSC_VER -# define WIN32_LEAN_AND_MEAN -# endif -# include <fcntl.h> -# include <io.h> -#endif - #include <limits.h> #include <stdbool.h> #include <stdio.h> @@ -221,10 +215,8 @@ main(int argc, char** argv) return print_usage(prog, true); } -#ifdef _WIN32 - _setmode(_fileno(stdin), _O_BINARY); - _setmode(_fileno(stdout), _O_BINARY); -#endif + serd_set_stream_utf8_mode(stdin); + serd_set_stream_utf8_mode(stdout); const char* input = argv[a++]; |