From 8e3d5944a4c6fca1ecf1d76f669da83861eb0ca0 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 11 Dec 2021 17:43:48 +0100 Subject: [PATCH] get_ppid_of, get_progname_of: Fix compilation error on Mac OS X < 10.5. Reported by Ryan Schmidt in . * lib/get_ppid_of.c: Include AvailabilityMacros.h (get_ppid_of): Use MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED. * lib/get_progname_of: Include AvailabilityMacros.h (get_progname_of): Use MAC_OS_X_VERSION_MAX_ALLOWED and MAC_OS_X_VERSION_MIN_REQUIRED. --- ChangeLog | 12 ++++++++++++ lib/get_ppid_of.c | 20 ++++++++++++++++---- lib/get_progname_of.c | 20 ++++++++++++++++---- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 650fc090ed..28cccd5048 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2021-12-11 Bruno Haible + + get_ppid_of, get_progname_of: Fix compilation error on Mac OS X < 10.5. + Reported by Ryan Schmidt in + . + * lib/get_ppid_of.c: Include AvailabilityMacros.h + (get_ppid_of): Use MAC_OS_X_VERSION_MAX_ALLOWED and + MAC_OS_X_VERSION_MIN_REQUIRED. + * lib/get_progname_of: Include AvailabilityMacros.h + (get_progname_of): Use MAC_OS_X_VERSION_MAX_ALLOWED and + MAC_OS_X_VERSION_MIN_REQUIRED. + 2021-12-10 Paul Eggert backupfile: assume C99 decls diff --git a/lib/get_ppid_of.c b/lib/get_ppid_of.c index f153b7539c..dd4e38129d 100644 --- a/lib/get_ppid_of.c +++ b/lib/get_ppid_of.c @@ -33,7 +33,13 @@ #endif #if defined __APPLE__ && defined __MACH__ /* Mac OS X */ -# include +/* Get MAC_OS_X_VERSION_MIN_REQUIRED, MAC_OS_X_VERSION_MAX_ALLOWED. + The version at runtime satisfies + MAC_OS_X_VERSION_MIN_REQUIRED <= version <= MAC_OS_X_VERSION_MAX_ALLOWED. */ +# include +# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 +# include +# endif #endif #if defined _AIX /* AIX */ @@ -226,14 +232,19 @@ get_ppid_of (pid_t pid) #endif #if defined __APPLE__ && defined __MACH__ /* Mac OS X */ +# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 -# if defined PROC_PIDT_SHORTBSDINFO + /* Mac OS X >= 10.7 has PROC_PIDT_SHORTBSDINFO. */ +# if defined PROC_PIDT_SHORTBSDINFO struct proc_bsdshortinfo info; if (proc_pidinfo (pid, PROC_PIDT_SHORTBSDINFO, 0, &info, sizeof (info)) == sizeof (info)) return info.pbsi_ppid; -# else +# endif + +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 + /* For older versions, use PROC_PIDTBSDINFO instead. */ /* Note: The second part of 'struct proc_bsdinfo' differs in size between 32-bit and 64-bit environments, and the kernel of Mac OS X 10.5 knows only about the 32-bit 'struct proc_bsdinfo'. Fortunately all the info @@ -242,8 +253,9 @@ get_ppid_of (pid_t pid) if (proc_pidinfo (pid, PROC_PIDTBSDINFO, 0, &info, 128) == 128) return info.pbi_ppid; -# endif +# endif +# endif #endif #if defined _AIX /* AIX */ diff --git a/lib/get_progname_of.c b/lib/get_progname_of.c index 46144e7426..bdda3c60d8 100644 --- a/lib/get_progname_of.c +++ b/lib/get_progname_of.c @@ -41,7 +41,13 @@ #endif #if defined __APPLE__ && defined __MACH__ /* Mac OS X */ -# include +/* Get MAC_OS_X_VERSION_MIN_REQUIRED, MAC_OS_X_VERSION_MAX_ALLOWED. + The version at runtime satisfies + MAC_OS_X_VERSION_MIN_REQUIRED <= version <= MAC_OS_X_VERSION_MAX_ALLOWED. */ +# include +# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 +# include +# endif #endif #if defined _AIX /* AIX */ @@ -266,14 +272,19 @@ get_progname_of (pid_t pid) #endif #if defined __APPLE__ && defined __MACH__ /* Mac OS X */ +# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 -# if defined PROC_PIDT_SHORTBSDINFO + /* Mac OS X >= 10.7 has PROC_PIDT_SHORTBSDINFO. */ +# if defined PROC_PIDT_SHORTBSDINFO struct proc_bsdshortinfo info; if (proc_pidinfo (pid, PROC_PIDT_SHORTBSDINFO, 0, &info, sizeof (info)) == sizeof (info)) return strdup (info.pbsi_comm); -# else +# endif + +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 + /* For older versions, use PROC_PIDTBSDINFO instead. */ /* Note: The second part of 'struct proc_bsdinfo' differs in size between 32-bit and 64-bit environments, and the kernel of Mac OS X 10.5 knows only about the 32-bit 'struct proc_bsdinfo'. Fortunately all the info @@ -282,8 +293,9 @@ get_progname_of (pid_t pid) if (proc_pidinfo (pid, PROC_PIDTBSDINFO, 0, &info, 128) == 128) return strdup (info.pbi_comm); -# endif +# endif +# endif #endif #if defined _AIX /* AIX */ -- 2.39.5