Marc-André Lureau, le mer. 14 nov. 2018 16:36:04 +0400, a ecrit: > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
Reviewed-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> include/glib-compat.h maintainers, may I keep this in my slirp tree, to be pushed to master when appropriate? Samuel > --- > include/glib-compat.h | 56 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 56 insertions(+) > > diff --git a/include/glib-compat.h b/include/glib-compat.h > index fdf95a255d..8a078c5288 100644 > --- a/include/glib-compat.h > +++ b/include/glib-compat.h > @@ -83,6 +83,62 @@ 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) > /* > -- > 2.19.1.708.g4ede3d42df > -- Samuel bien sûr que ça convient mieux à tout le monde enfin, dans la mesure où tout le monde c'est comme moi -+- le consensus, c'est facile -+-