diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.ja | 5 | ||||
-rw-r--r-- | libsylph/utils.c | 14 |
3 files changed, 21 insertions, 3 deletions
@@ -1,5 +1,10 @@ 2005-10-31 + * libsylph/utils.c: execute_sync(): win32: get exit status of child + process by not using helper program. + +2005-10-31 + * src/textview.c: textview_show_part(): fixed scroll jumping on focus. 2005-10-29 diff --git a/ChangeLog.ja b/ChangeLog.ja index 48b95b2f..9687a9dc 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,5 +1,10 @@ 2005-10-31 + * libsylph/utils.c: execute_sync(): win32: ヘルパープログラムを使用 + しないようにして子プロセスの終了ステータスを得るようにした。 + +2005-10-31 + * src/textview.c: textview_show_part(): フォーカス時にスクロールが ジャンプしてしまう問題を修正。 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 } |