On 2025-04-21 10:19, Bruno Haible wrote:
when writing 'defined __linux__' one typically thinks about
GNU/Linux and musl-based systems. Android systems are often so different
and always require separate testing.

OK, thanks for the review. I installed the following patch to Gnulib. It should work the same as Po Lu's patch, while not unnecessarily repeating symbols which was my concern, and also while not assuming __ANDROID__ implies __linux__ which was your concern.
From cd9859b6f5908f933d2db7ee92bcd1e0db9aac1f Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Mon, 21 Apr 2025 10:58:58 -0700
Subject: [PATCH] getloadavg: port to Android 3.1-

Problem reported by Po Lu in:
https://lists.gnu.org/r/bug-gnulib/2025-04/msg00172.html
* lib/getloadavg.c (getloadavg): Do not try to use sysinfo on
Android 3.1 Honeycomb (API 12, 2011) and earlier.
---
 ChangeLog        | 8 ++++++++
 lib/getloadavg.c | 7 ++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2d3705be93..6993f2d9b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-04-21  Paul Eggert  <egg...@cs.ucla.edu>
+
+	getloadavg: port to Android 3.1-
+	Problem reported by Po Lu in:
+	https://lists.gnu.org/r/bug-gnulib/2025-04/msg00172.html
+	* lib/getloadavg.c (getloadavg): Do not try to use sysinfo on
+	Android 3.1 Honeycomb (API 12, 2011) and earlier.
+
 2025-04-19  Bruno Haible  <br...@clisp.org>
 
 	Update users.txt.
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
index 9da41c16c0..5b21ed525c 100644
--- a/lib/getloadavg.c
+++ b/lib/getloadavg.c
@@ -499,8 +499,9 @@ getloadavg (double loadavg[], int nelem)
   }
 # endif
 
-# if !defined (LDAV_DONE) && (defined __linux__ || defined __ANDROID__)
-                                      /* Linux without glibc, Android, Cygwin */
+# if (!defined LDAV_DONE \
+      && (defined __ANDROID__ ? 13 <= __ANDROID_API__ : __defined __linux__))
+                    /* non-Android Linux without glibc, Android 3.2+, Cygwin */
 #  define LDAV_DONE
 #  undef LOAD_AVE_TYPE
 
@@ -513,7 +514,7 @@ getloadavg (double loadavg[], int nelem)
     loadavg[2] = info.loads[2] / (double)(1U << SI_LOAD_SHIFT);
     elem = 3;
   }
-# endif /* __linux__ || __ANDROID__ */
+# endif /* __ANDROID__ ? 13 <= __ANDROID_API__ : __linux__ */
 
 # if !defined (LDAV_DONE) && defined __CYGWIN__
                                       /* Cygwin */
-- 
2.48.1

Reply via email to