summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2020-07-14 15:51:14 +0000
committerChristoph Reiter <reiter.christoph@gmail.com>2020-07-14 15:51:14 +0000
commit9f9d8cefe966d260cf8c12971dcad40537adb5c6 (patch)
tree1d0eded74c6371848bde389ce7589bd23d65c565
parentbc8d3bc249e8eeff444e5fafac0d8821244fdb26 (diff)
parent89c81712570e98e5ee411275c0fa467a6b61e977 (diff)
downloadgobject-introspection-9f9d8cefe966d260cf8c12971dcad40537adb5c6.tar.gz
Merge branch 'patch-1' into 'master'
[Win32] Fix gi-dump-types.c to build on Windows See merge request GNOME/gobject-introspection!218
-rw-r--r--girepository/gi-dump-types.c21
-rw-r--r--girepository/meson.build4
-rw-r--r--meson.build3
3 files changed, 22 insertions, 6 deletions
diff --git a/girepository/gi-dump-types.c b/girepository/gi-dump-types.c
index 69d8b12d..aeef774c 100644
--- a/girepository/gi-dump-types.c
+++ b/girepository/gi-dump-types.c
@@ -1,16 +1,29 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#include "gdump.c"
-#include <gio/gunixoutputstream.h>
+#ifdef G_OS_WIN32
+ #include <windows.h>
+ #include <io.h> /* For _get_osfhandle() */
+ #include <gio/gwin32outputstream.h>
+#else
+ #include <gio/gunixoutputstream.h>
+#endif
int
main (int argc,
char **argv)
{
int i;
- GOutputStream *stdout;
+ GOutputStream *Stdout;
GModule *self;
- stdout = g_unix_output_stream_new (1, FALSE);
+#if defined(G_OS_WIN32)
+ HANDLE *hnd = (HANDLE) _get_osfhandle (1);
+
+ g_return_val_if_fail (hnd && hnd != INVALID_HANDLE_VALUE, 1);
+ Stdout = g_win32_output_stream_new (hnd, FALSE);
+#else
+ Stdout = g_unix_output_stream_new (1, FALSE);
+#endif
self = g_module_open (NULL, 0);
@@ -26,7 +39,7 @@ main (int argc,
g_clear_error (&error);
}
else
- dump_type (type, argv[i], stdout);
+ dump_type (type, argv[i], Stdout);
}
return 0;
diff --git a/girepository/meson.build b/girepository/meson.build
index 6cd8fd30..c8ef6aa9 100644
--- a/girepository/meson.build
+++ b/girepository/meson.build
@@ -204,7 +204,7 @@ gthash_test = executable('gthash-test', 'gthash-test.c',
test('gthash-test', gthash_test)
-if giounix_dep.found()
+if giounix_dep.found() or giowin_dep.found()
executable('gi-dump-types', 'gi-dump-types.c',
- dependencies: [girepo_dep, giounix_dep])
+ dependencies: [girepo_dep, giounix_dep, giowin_dep])
endif
diff --git a/meson.build b/meson.build
index 658727d8..04426515 100644
--- a/meson.build
+++ b/meson.build
@@ -144,12 +144,15 @@ gmodule_dep = dependency('gmodule-2.0', version : glib_version,
if host_system != 'windows'
giounix_dep = dependency('gio-unix-2.0', version : glib_version,
fallback: ['glib', 'libgiounix_dep'])
+ giowin_dep = dependency('', required : false)
else
# Don't even try to look for gio-unix-2.0 on Windows because Meson will
# fruitlessly try to find it in the glib subproject even when we don't want
# it to look in the subproject at all. Just use a not-found dependency.
giounix_dep = dependency('', required : false)
# XXX: Autotools doesn't build girs for gio-win32-2.0, but maybe we should?
+ giowin_dep = dependency('gio-windows-2.0', version : glib_version,
+ fallback: ['glib', 'libgiowin32_dep'])
endif
libffi_dep = dependency('libffi',
fallback : ['libffi', 'ffi_dep'])