]> Savannah Git Hosting - gnulib.git/commitdiff
get-rusage-data: Avoid warnings on Mac OS X.
authorBruno Haible <bruno@clisp.org>
Sat, 22 Apr 2017 11:51:02 +0000 (13:51 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 22 Apr 2017 11:51:02 +0000 (13:51 +0200)
* lib/get-rusage-data.c: On Mac OS X, don't define
get_rusage_data_via_setrlimit nor get_rusage_data_via_iterator.
(get_rusage_data) [Mac OS X]: Just return 0.

ChangeLog
lib/get-rusage-data.c

index 4b92ba228c6223f52257bb67e08fba3c113a321f..4f11fca06d790b0b8fc9e6e6c9f808f41c239a00 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-04-22  Bruno Haible  <bruno@clisp.org>
+
+       get-rusage-data: Avoid warnings on Mac OS X.
+       * lib/get-rusage-data.c: On Mac OS X, don't define
+       get_rusage_data_via_setrlimit nor get_rusage_data_via_iterator.
+       (get_rusage_data) [Mac OS X]: Just return 0.
+
 2017-04-22  Bruno Haible  <bruno@clisp.org>
 
        xbinary-io: Fix build error.
index 62293ad13949558d5a7b9a95e34d8301330e6ffd..1fc8202131afdbb3cf91bbad020d0ef4349d8acd 100644 (file)
 #include "vma-iter.h"
 
 
-#if HAVE_SETRLIMIT && defined RLIMIT_DATA
+#if !(defined __APPLE__ && defined __MACH__) || defined TEST
+/* Implement get_rusage_data_via_setrlimit().  */
 
-# ifdef _AIX
-#  define errno_expected() (errno == EINVAL || errno == EFAULT)
-# else
-#  define errno_expected() (errno == EINVAL)
-# endif
+# if HAVE_SETRLIMIT && defined RLIMIT_DATA
+
+#  ifdef _AIX
+#   define errno_expected() (errno == EINVAL || errno == EFAULT)
+#  else
+#   define errno_expected() (errno == EINVAL)
+#  endif
 
 static uintptr_t
 get_rusage_data_via_setrlimit (void)
@@ -163,7 +166,7 @@ get_rusage_data_via_setrlimit (void)
 
   struct rlimit orig_limit;
 
-# ifdef __hpux
+#  ifdef __hpux
   /* On HP-UX 11.00, setrlimit() RLIMIT_DATA of does not work: It cannot
      restore the previous limits.
      On HP-UX 11.11, setrlimit() RLIMIT_DATA of does not work: It sometimes
@@ -177,7 +180,7 @@ get_rusage_data_via_setrlimit (void)
             || strcmp (buf.release + strlen (buf.release) - 5, "11.11") == 0))
       return 0;
   }
-# endif
+#  endif
 
   /* Record the original limit.  */
   if (getrlimit (RLIMIT_DATA, &orig_limit) < 0)
@@ -310,7 +313,7 @@ get_rusage_data_via_setrlimit (void)
   return result;
 }
 
-#else
+# else
 
 static uintptr_t
 get_rusage_data_via_setrlimit (void)
@@ -318,10 +321,15 @@ get_rusage_data_via_setrlimit (void)
   return 0;
 }
 
+# endif
+
 #endif
 
 
-#if VMA_ITERATE_SUPPORTED
+#if !(defined __APPLE__ && defined __MACH__) || defined TEST
+/* Implement get_rusage_data_via_iterator().  */
+
+# if VMA_ITERATE_SUPPORTED
 
 struct locals
 {
@@ -346,7 +354,7 @@ vma_iterate_callback (void *data, uintptr_t start, uintptr_t end,
 static uintptr_t
 get_rusage_data_via_iterator (void)
 {
-# if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __BEOS__ || defined __HAIKU__
+#  if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __BEOS__ || defined __HAIKU__
   /* On native Windows, there is no sbrk() function.
      On Haiku, sbrk(0) always returns 0.  */
   static void *brk_value;
@@ -357,13 +365,13 @@ get_rusage_data_via_iterator (void)
       if (brk_value == NULL)
         return 0;
     }
-# else
+#  else
   void *brk_value;
 
   brk_value = sbrk (0);
   if (brk_value == (void *)-1)
     return 0;
-# endif
+#  endif
 
   {
     struct locals l;
@@ -376,7 +384,7 @@ get_rusage_data_via_iterator (void)
   }
 }
 
-#else
+# else
 
 static uintptr_t
 get_rusage_data_via_iterator (void)
@@ -384,13 +392,20 @@ get_rusage_data_via_iterator (void)
   return 0;
 }
 
+# endif
+
 #endif
 
 
 uintptr_t
 get_rusage_data (void)
 {
-#if (defined __APPLE__ && defined __MACH__) || defined __CYGWIN__ /* Mac OS X, Cygwin */
+#if (defined __APPLE__ && defined __MACH__) /* Mac OS X */
+  /* get_rusage_data_via_setrlimit() does not work: it always returns 0.
+     get_rusage_data_via_iterator() does not work: it always returns 0x400000.
+     And sbrk() is deprecated.  */
+  return 0;
+#elif defined __CYGWIN__ /* Cygwin */
   /* get_rusage_data_via_setrlimit() does not work.
      Prefer get_rusage_data_via_iterator().  */
   return get_rusage_data_via_iterator ();