diff --git a/docs/reference/gio/meson.build b/docs/reference/gio/meson.build index dba062055..bb14e6923 100644 --- a/docs/reference/gio/meson.build +++ b/docs/reference/gio/meson.build @@ -108,7 +108,6 @@ if get_option('gtk_doc') if host_system == 'windows' ignore_headers += [ 'gfiledescriptorbased.h', - 'gunixconnection.h', 'gunixmounts.h', 'gunixfdlist.h', 'gunixfdmessage.h', diff --git a/gio/gsocketconnection.c b/gio/gsocketconnection.c index 37d5d330c..64fe9753b 100644 --- a/gio/gsocketconnection.c +++ b/gio/gsocketconnection.c @@ -615,9 +615,7 @@ g_socket_connection_factory_register_type (GType g_type, static void init_builtin_types (void) { -#ifndef G_OS_WIN32 g_type_ensure (G_TYPE_UNIX_CONNECTION); -#endif g_type_ensure (G_TYPE_TCP_CONNECTION); } diff --git a/gio/gunixconnection.c b/gio/gunixconnection.c index e9e2f75f0..e89aba6ca 100644 --- a/gio/gunixconnection.c +++ b/gio/gunixconnection.c @@ -24,7 +24,9 @@ #include #include +#ifdef HAVE_UNISTD_H #include +#endif /** * SECTION:gunixconnection @@ -39,9 +41,12 @@ * It contains functions to do some of the UNIX socket specific * functionality like passing file descriptors. * - * Note that `` belongs to the UNIX-specific - * GIO interfaces, thus you have to use the `gio-unix-2.0.pc` - * pkg-config file when using it. + * Since GLib 2.72, #GUnixConnection is available on all platforms. It requires + * underlying system support (such as Windows 10 with `AF_UNIX`) at run time. + * + * Before GLib 2.72, `` belonged to the UNIX-specific GIO + * interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file when + * using it. This is no longer necessary since GLib 2.72. * * Since: 2.22 */ @@ -86,6 +91,7 @@ g_unix_connection_send_fd (GUnixConnection *connection, GCancellable *cancellable, GError **error) { +#ifdef G_OS_UNIX GSocketControlMessage *scm; GSocket *socket; @@ -114,6 +120,11 @@ g_unix_connection_send_fd (GUnixConnection *connection, g_object_unref (scm); return TRUE; +#else + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Sending FD is not supported")); + return FALSE; +#endif } /** @@ -139,6 +150,7 @@ g_unix_connection_receive_fd (GUnixConnection *connection, GCancellable *cancellable, GError **error) { +#ifdef G_OS_UNIX GSocketControlMessage **scms; gint *fds, nfd, fd, nscm; GUnixFDMessage *fdmsg; @@ -221,6 +233,11 @@ g_unix_connection_receive_fd (GUnixConnection *connection, } return fd; +#else + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Receiving FD is not supported")); + return -1; +#endif } static void diff --git a/gio/meson.build b/gio/meson.build index 9e7539edd..d6a3d2d76 100644 --- a/gio/meson.build +++ b/gio/meson.build @@ -346,7 +346,6 @@ if host_system != 'windows' unix_sources = files( 'gfiledescriptorbased.c', 'giounix-private.c', - 'gunixconnection.c', 'gunixfdlist.c', 'gunixfdmessage.c', 'gunixmount.c', @@ -374,7 +373,6 @@ if host_system != 'windows' gio_unix_include_headers = files( 'gfiledescriptorbased.h', - 'gunixconnection.h', 'gunixmounts.h', 'gunixfdlist.h', 'gunixfdmessage.h', @@ -565,6 +563,7 @@ gio_sources = files( 'gdtlsclientconnection.c', 'gdtlsserverconnection.c', 'gunionvolumemonitor.c', + 'gunixconnection.c', 'gunixcredentialsmessage.c', 'gunixsocketaddress.c', 'gvfs.c', @@ -702,6 +701,7 @@ gio_headers = files( 'gdtlsconnection.h', 'gdtlsclientconnection.h', 'gdtlsserverconnection.h', + 'gunixconnection.h', 'gunixcredentialsmessage.h', 'gunixsocketaddress.h', 'gvfs.h',