From 539dae520079857cd3bc5aaaf280a85a4e3b78c6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 25 Feb 1999 09:36:35 +0000 Subject: [PATCH] more DG-UX compilation fixes (thanks to Benjamin Beckwith) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1784 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 12 +++++++++--- src/gtk/app.cpp | 18 +++++++++++------- src/gtk/utilsgtk.cpp | 42 ++++++++++++++++++++++-------------------- src/gtk1/app.cpp | 18 +++++++++++------- src/gtk1/utilsgtk.cpp | 42 ++++++++++++++++++++++-------------------- 5 files changed, 75 insertions(+), 57 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 394a4e1d37..76161c8ca7 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -72,9 +72,9 @@ // suppress some Visual C++ warnings #ifdef __VISUALC__ -# pragma warning(disable:4244) // cobversion from double to float +# pragma warning(disable:4244) // conversion from double to float # pragma warning(disable:4100) // unreferenced formal parameter -#endif +#endif // __VISUALC__ // suppress some Salford C++ warnings #ifdef __SALFORDC__ @@ -83,7 +83,13 @@ # pragma suppress 61 // enum has no name (doesn't suppress!) # pragma suppress 106 // unnamed, unused parameter # pragma suppress 571 // Virtual function hiding -#endif +#endif // __SALFORDC__ + +// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, +// so definte it ourselves +#ifdef __DECCXX + #define __cplusplus +#endif // __DECCXX ////////////////////////////////////////////////////////////////////////////////// // Currently Only MS-Windows/NT, XView and Motif are supported diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 0f4c0825c3..09f0b96f0e 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -30,13 +30,17 @@ #endif #include "unistd.h" -// add more here if you run into problems -#if defined(__SUN__) && !defined(__SunOs_5_6) && !defined(__SunOs_5_7) && !defined(__SUNPRO_CC) -extern "C" -{ -void usleep(unsigned long usec); -}; -#endif +// many versions of Unices have this function, but it is not defined in system +// headers - please add your system here if it is the case for your OS. +// SunOS < 5.6 (i.e. Solaris < 2.6) and DG-UX are like this. +#if (defined(__SUN__) && !defined(__SunOs_5_6) && \ + !defined(__SunOs_5_7) && !defined(__SUNPRO_CC)) || \ + defined(__osf__) + extern "C" + { + void usleep(unsigned long usec); + }; +#endif // Unices without usleep() #include "glib.h" #include "gdk/gdk.h" diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index a280a4c189..a55812182a 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -43,14 +43,26 @@ #include #endif -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif +// many versions of Unices have this function, but it is not defined in system +// headers - please add your system here if it is the case for your OS. +// SunOS (and Solaris) and DG-UX are like this. +#if defined(__SOLARIS__) || defined(__osf__) + extern "C" + { + pid_t wait4(pid_t pid, int *statusp, int options, + struct rusage *rusage); + } + + #define wxWait4(pid, stat, flags, rusage) wait4(pid, stat, flags, rusage) +#elif defined(__sgi) || defined(__HPUX__) + // no wait4() at all on these systems + // TODO verify whether wait3() really works in this situation + #define wxWait4(pid, stat, flags, rusage) wait3(stat, flags, rusage) +#else + // other Unices: assume have wait4(), although it's not standard (but + // Linux and FreeBSD do have it) + #define wxWait4(pid, stat, flags, rusage) wait4(pid, stat, flags, rusage) +#endif // wait4() //------------------------------------------------------------------------ // misc. @@ -270,18 +282,8 @@ static void GTK_EndProcessDetector(gpointer data, gint source, pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid); - /* wait4 is not part of any standard, use at own risk - * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-) - * --- offer@sgi.com */ - // VZ: wait4() will be woken up by a signal, not wait3 - so it's quite - // different (also, wait3() waits for any child, wait4() only for this - // one) - int status = -1; -#if !defined(__sgi) - wait4(pid, &status, 0, (rusage *) NULL); -#else - wait3(&status, 0, (rusage *) NULL); -#endif + int status = 0; + wxWait4(pid, &status, 0, (rusage *) NULL); close(source); gdk_input_remove(proc_data->tag); diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 0f4c0825c3..09f0b96f0e 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -30,13 +30,17 @@ #endif #include "unistd.h" -// add more here if you run into problems -#if defined(__SUN__) && !defined(__SunOs_5_6) && !defined(__SunOs_5_7) && !defined(__SUNPRO_CC) -extern "C" -{ -void usleep(unsigned long usec); -}; -#endif +// many versions of Unices have this function, but it is not defined in system +// headers - please add your system here if it is the case for your OS. +// SunOS < 5.6 (i.e. Solaris < 2.6) and DG-UX are like this. +#if (defined(__SUN__) && !defined(__SunOs_5_6) && \ + !defined(__SunOs_5_7) && !defined(__SUNPRO_CC)) || \ + defined(__osf__) + extern "C" + { + void usleep(unsigned long usec); + }; +#endif // Unices without usleep() #include "glib.h" #include "gdk/gdk.h" diff --git a/src/gtk1/utilsgtk.cpp b/src/gtk1/utilsgtk.cpp index a280a4c189..a55812182a 100644 --- a/src/gtk1/utilsgtk.cpp +++ b/src/gtk1/utilsgtk.cpp @@ -43,14 +43,26 @@ #include #endif -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif +// many versions of Unices have this function, but it is not defined in system +// headers - please add your system here if it is the case for your OS. +// SunOS (and Solaris) and DG-UX are like this. +#if defined(__SOLARIS__) || defined(__osf__) + extern "C" + { + pid_t wait4(pid_t pid, int *statusp, int options, + struct rusage *rusage); + } + + #define wxWait4(pid, stat, flags, rusage) wait4(pid, stat, flags, rusage) +#elif defined(__sgi) || defined(__HPUX__) + // no wait4() at all on these systems + // TODO verify whether wait3() really works in this situation + #define wxWait4(pid, stat, flags, rusage) wait3(stat, flags, rusage) +#else + // other Unices: assume have wait4(), although it's not standard (but + // Linux and FreeBSD do have it) + #define wxWait4(pid, stat, flags, rusage) wait4(pid, stat, flags, rusage) +#endif // wait4() //------------------------------------------------------------------------ // misc. @@ -270,18 +282,8 @@ static void GTK_EndProcessDetector(gpointer data, gint source, pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid); - /* wait4 is not part of any standard, use at own risk - * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-) - * --- offer@sgi.com */ - // VZ: wait4() will be woken up by a signal, not wait3 - so it's quite - // different (also, wait3() waits for any child, wait4() only for this - // one) - int status = -1; -#if !defined(__sgi) - wait4(pid, &status, 0, (rusage *) NULL); -#else - wait3(&status, 0, (rusage *) NULL); -#endif + int status = 0; + wxWait4(pid, &status, 0, (rusage *) NULL); close(source); gdk_input_remove(proc_data->tag); -- 2.45.2