From aa5764107d4b2def9e51e232df52b50514421b03 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Wed, 3 Mar 2004 09:49:39 +0000 Subject: [PATCH] Use a macro GPID_FORMAT for the format to print GPid in (%p on Win32, %d 2004-03-03 Tor Lillqvist * tests/child-test.c: Use a macro GPID_FORMAT for the format to print GPid in (%p on Win32, %d on Unix). Maybe configure.in should place that in glibconfig.h? Print verbose error message if CreateProcess() fails. Don't close the child handle until in the child watch callback. Don't try to run /bin/true on Win32. Run ipconfig instead (just to pick a program that should exist on all Window boxes). --- ChangeLog | 13 +++++++++++++ ChangeLog.pre-2-10 | 13 +++++++++++++ ChangeLog.pre-2-12 | 13 +++++++++++++ ChangeLog.pre-2-4 | 13 +++++++++++++ ChangeLog.pre-2-6 | 13 +++++++++++++ ChangeLog.pre-2-8 | 13 +++++++++++++ tests/child-test.c | 35 ++++++++++++++++++++++------------- 7 files changed, 100 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c78e0535..97a91fa75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 4c78e0535..97a91fa75 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 4c78e0535..97a91fa75 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 4c78e0535..97a91fa75 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 4c78e0535..97a91fa75 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 4c78e0535..97a91fa75 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,16 @@ +2004-03-03 Tor Lillqvist + + * tests/child-test.c: Use a macro GPID_FORMAT for the format to + print GPid in (%p on Win32, %d on Unix). Maybe configure.in should + place that in glibconfig.h? + + Print verbose error message if CreateProcess() fails. + + Don't close the child handle until in the child watch callback. + + Don't try to run /bin/true on Win32. Run ipconfig instead (just to + pick a program that should exist on all Window boxes). + 2004-03-02 Sebastian Wilhelmi * glib/gatomic.c: Fixed missing definition for ppc code. Fix by diff --git a/tests/child-test.c b/tests/child-test.c index be65b3fca..e7d7daf9a 100644 --- a/tests/child-test.c +++ b/tests/child-test.c @@ -38,6 +38,12 @@ #include #endif +#ifdef G_OS_WIN32 +#define GPID_FORMAT "%p" +#else +#define GPID_FORMAT "%d" +#endif + GMainLoop *main_loop; gint alive; @@ -62,7 +68,7 @@ get_a_child (gint ttl) cmdline = g_strdup_printf( "child-test -c%d", ttl); if (!CreateProcess (argv0, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - exit (1); + g_error ("CreateProcess failed: %s\n", g_win32_error_message (GetLastError ())); g_free(cmdline); @@ -88,11 +94,9 @@ child_watch_callback (GPid pid, gint status, gpointer data) { gint ttl = GPOINTER_TO_INT (data); -#ifndef G_OS_WIN32 - g_print ("child %d (ttl %d) exited, status %d\n", pid, ttl, status); -#else - g_print ("child %p (ttl %d) exited, status %d\n", pid, ttl, status); -#endif + g_print ("child " GPID_FORMAT " (ttl %d) exited, status %d\n", pid, ttl, status); + + g_spawn_close_pid (pid); if (--alive == 0) g_main_loop_quit (main_loop); @@ -116,12 +120,7 @@ test_thread (gpointer data) g_source_attach (source, g_main_loop_get_context (new_main_loop)); g_source_unref (source); -#ifdef G_OS_WIN32 - g_print ("whee! created pid: %p (ttl %d)\n", pid, ttl); - CloseHandle(pid); -#else - g_print ("whee! created pid: %d (ttl %d)\n", pid, ttl); -#endif + g_print ("whee! created pid: " GPID_FORMAT " (ttl %d)\n", pid, ttl); g_main_loop_run (new_main_loop); @@ -137,16 +136,26 @@ main (int argc, char *argv[]) { int ttl = atoi (argv[1] + 2); Sleep (ttl * 1000); + /* Exit on purpose with STILL_ACTIVE (which isn't a very common + * exit status) to verify that g_child_watch_check() in gmain.c + * doesn't believe a child still to be active if it happens to + * exit with that status. + */ exit (STILL_ACTIVE); } #endif /* Only run the test, if threads are enabled and a default thread - implementation is available */ + * implementation is available. + */ #if defined(G_THREADS_ENABLED) && ! defined(G_THREADS_IMPL_NONE) g_thread_init (NULL); main_loop = g_main_loop_new (NULL, FALSE); +#ifdef G_OS_WIN32 + system ("ipconfig /all"); +#else system ("/bin/true"); +#endif alive = 2; g_thread_create (test_thread, GINT_TO_POINTER (10), FALSE, NULL);