diff options
Diffstat (limited to 'libsylph/utils.c')
-rw-r--r-- | libsylph/utils.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libsylph/utils.c b/libsylph/utils.c index 0ad23c3a..b6c41e12 100644 --- a/libsylph/utils.c +++ b/libsylph/utils.c @@ -3111,19 +3111,27 @@ gint execute_sync(gchar *const argv[]) g_return_val_if_fail(argv != NULL && argv[0] != NULL, -1); +#ifdef G_OS_WIN32 + if (g_spawn_sync(NULL, (gchar **)argv, NULL, + G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN | + G_SPAWN_LEAVE_DESCRIPTORS_OPEN, + NULL, NULL, NULL, NULL, &status, NULL) == FALSE) { + g_warning("Can't execute command: %s\n", argv[0]); + return -1; + } + + return status; +#else if (g_spawn_sync(NULL, (gchar **)argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL, &status, NULL) == FALSE) { g_warning("Can't execute command: %s\n", argv[0]); return -1; } -#ifdef G_OS_UNIX if (WIFEXITED(status)) return WEXITSTATUS(status); else return -1; -#else - return status; #endif } |