aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-07-31 20:06:15 -0400
committerDavid Robillard <d@drobilla.net>2022-01-28 21:57:07 -0500
commitf9524394dc6e5571b48af14fdda33316ba4feb07 (patch)
tree6065bfa8d7b977626287e3593911024934d96e1a /src
parent411b2ffac686478f3312c4a0c5cf20a230a3f728 (diff)
downloadserd-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.c35
-rw-r--r--src/console.h20
-rw-r--r--src/serdi.c15
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;