Hi On Sun, Feb 3, 2019 at 3:34 PM Samuel Thibault <[email protected]> wrote: > > Only slirp actually needs it, and will need it along in libslirp. > > Signed-off-by: Samuel Thibault <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]> > --- > include/glib-compat.h | 57 ------------------------------------------- > slirp/misc.c | 57 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 57 insertions(+), 57 deletions(-) > > diff --git a/include/glib-compat.h b/include/glib-compat.h > index 8a078c5288..1291628e09 100644 > --- a/include/glib-compat.h > +++ b/include/glib-compat.h > @@ -83,63 +83,6 @@ static inline gboolean g_strv_contains_qemu(const gchar > *const *strv, > } > #define g_strv_contains(a, b) g_strv_contains_qemu(a, b) > > -#if !GLIB_CHECK_VERSION(2, 58, 0) > -typedef struct QemuGSpawnFds { > - GSpawnChildSetupFunc child_setup; > - gpointer user_data; > - gint stdin_fd; > - gint stdout_fd; > - gint stderr_fd; > -} QemuGSpawnFds; > - > -static inline void > -qemu_gspawn_fds_setup(gpointer user_data) > -{ > - QemuGSpawnFds *q = (QemuGSpawnFds *)user_data; > - > - dup2(q->stdin_fd, 0); > - dup2(q->stdout_fd, 1); > - dup2(q->stderr_fd, 2); > - q->child_setup(q->user_data); > -} > -#endif > - > -static inline gboolean > -g_spawn_async_with_fds_qemu(const gchar *working_directory, > - gchar **argv, > - gchar **envp, > - GSpawnFlags flags, > - GSpawnChildSetupFunc child_setup, > - gpointer user_data, > - GPid *child_pid, > - gint stdin_fd, > - gint stdout_fd, > - gint stderr_fd, > - GError **error) > -{ > -#if GLIB_CHECK_VERSION(2, 58, 0) > - return g_spawn_async_with_fds(working_directory, argv, envp, flags, > - child_setup, user_data, > - child_pid, stdin_fd, stdout_fd, stderr_fd, > - error); > -#else > - QemuGSpawnFds setup = { > - .child_setup = child_setup, > - .user_data = user_data, > - .stdin_fd = stdin_fd, > - .stdout_fd = stdout_fd, > - .stderr_fd = stderr_fd, > - }; > - > - return g_spawn_async(working_directory, argv, envp, flags, > - qemu_gspawn_fds_setup, &setup, > - child_pid, error); > -#endif > -} > - > -#define g_spawn_async_with_fds(wd, argv, env, f, c, d, p, ifd, ofd, efd, > err) \ > - g_spawn_async_with_fds_qemu(wd, argv, env, f, c, d, p, ifd, ofd, efd, > err) > - > #if defined(_WIN32) && !GLIB_CHECK_VERSION(2, 50, 0) > /* > * g_poll has a problem on Windows when using > diff --git a/slirp/misc.c b/slirp/misc.c > index edb0d187d7..18b25f93ac 100644 > --- a/slirp/misc.c > +++ b/slirp/misc.c > @@ -120,6 +120,63 @@ fork_exec_child_setup(gpointer data) > #endif > } > > +#if !GLIB_CHECK_VERSION(2, 58, 0) > +typedef struct SlirpGSpawnFds { > + GSpawnChildSetupFunc child_setup; > + gpointer user_data; > + gint stdin_fd; > + gint stdout_fd; > + gint stderr_fd; > +} SlirpGSpawnFds; > + > +static inline void > +slirp_gspawn_fds_setup(gpointer user_data) > +{ > + SlirpGSpawnFds *q = (SlirpGSpawnFds *)user_data; > + > + dup2(q->stdin_fd, 0); > + dup2(q->stdout_fd, 1); > + dup2(q->stderr_fd, 2); > + q->child_setup(q->user_data); > +} > +#endif > + > +static inline gboolean > +g_spawn_async_with_fds_slirp(const gchar *working_directory, > + gchar **argv, > + gchar **envp, > + GSpawnFlags flags, > + GSpawnChildSetupFunc child_setup, > + gpointer user_data, > + GPid *child_pid, > + gint stdin_fd, > + gint stdout_fd, > + gint stderr_fd, > + GError **error) > +{ > +#if GLIB_CHECK_VERSION(2, 58, 0) > + return g_spawn_async_with_fds(working_directory, argv, envp, flags, > + child_setup, user_data, > + child_pid, stdin_fd, stdout_fd, stderr_fd, > + error); > +#else > + QemuGSpawnFds setup = { > + .child_setup = child_setup, > + .user_data = user_data, > + .stdin_fd = stdin_fd, > + .stdout_fd = stdout_fd, > + .stderr_fd = stderr_fd, > + }; > + > + return g_spawn_async(working_directory, argv, envp, flags, > + slirp_gspawn_fds_setup, &setup, > + child_pid, error); > +#endif > +} > + > +#define g_spawn_async_with_fds(wd, argv, env, f, c, d, p, ifd, ofd, efd, > err) \ > + g_spawn_async_with_fds_slirp(wd, argv, env, f, c, d, p, ifd, ofd, efd, > err) > + > int > fork_exec(struct socket *so, const char *ex) > { > -- > 2.20.1 > > -- Marc-André Lureau
