]> Savannah Git Hosting - gnulib.git/commitdiff
mountlist: Use Linux code on Android.
authorBruno Haible <bruno@clisp.org>
Sat, 26 Jan 2019 23:21:17 +0000 (00:21 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 26 Jan 2019 23:21:17 +0000 (00:21 +0100)
* lib/mountlist.c (setmntent, endmntent): Define fallbacks.
(unescape_tab, read_file_system_list): Enable Linux code on Android
as well.
* m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Test for setmntent
and endmntent.
* modules/mountlist (Depends-on): Add 'getline'.

ChangeLog
lib/mountlist.c
m4/ls-mntd-fs.m4
modules/mountlist

index 6eddae295e7a82435df64b4b2cdc5a9476e0ec5d..21fade73821f2f2ddd416615623bee74eaabb580 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2019-01-26  Bruno Haible  <bruno@clisp.org>
+
+       mountlist: Use Linux code on Android.
+       * lib/mountlist.c (setmntent, endmntent): Define fallbacks.
+       (unescape_tab, read_file_system_list): Enable Linux code on Android
+       as well.
+       * m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Test for setmntent
+       and endmntent.
+       * modules/mountlist (Depends-on): Add 'getline'.
+
 2019-01-26  Bruno Haible  <bruno@clisp.org>
 
        localename tests: Fix test failure on Android.
index 937b3bb7617dad8c39d2e6b36b1b1777ae9c0790..9b54a2cf70c499d187f14be3a5f4ca1919753c66 100644 (file)
 # include <sys/mntent.h>
 #endif
 
+#ifdef MOUNTED_GETMNTENT1
+# if !HAVE_SETMNTENT            /* Android <= 4.4 */
+#  define setmntent(fp,mode) fopen (fp, mode)
+# endif
+# if !HAVE_ENDMNTENT            /* Android <= 4.4 */
+#  define endmntent(fp) fclose (fp)
+# endif
+#endif
+
 #ifndef HAVE_HASMNTOPT
 # define hasmntopt(mnt, opt) ((char *) 0)
 #endif
@@ -383,7 +392,7 @@ dev_from_mount_options (char const *mount_options)
 
 #endif
 
-#if defined MOUNTED_GETMNTENT1 && defined __linux__ /* GNU/Linux, Android */
+#if defined MOUNTED_GETMNTENT1 && (defined __linux__ || defined __ANDROID__) /* GNU/Linux, Android */
 
 /* Unescape the paths in mount tables.
    STR is updated in place.  */
@@ -429,7 +438,7 @@ read_file_system_list (bool need_fs_type)
   {
     FILE *fp;
 
-# ifdef __linux__
+# if defined __linux__ || defined __ANDROID__
     /* Try parsing mountinfo first, as that make device IDs available.
        Note we could use libmount routines to simplify this parsing a little
        (and that code is in previous versions of this function), however
@@ -522,7 +531,7 @@ read_file_system_list (bool need_fs_type)
           goto free_then_fail;
       }
     else /* fallback to /proc/self/mounts (/etc/mtab).  */
-# endif /* __linux __ */
+# endif /* __linux __ || __ANDROID__ */
       {
         struct mntent *mnt;
         char const *table = MOUNTED;
index ba3843927192b7020fa119fc9a8df08871bfcf6e..05474c2ddda3c5fb27acec02b1fbaabcd76aa925 100644 (file)
@@ -1,4 +1,4 @@
-# serial 37
+# serial 38
 # How to list mounted file systems.
 
 # Copyright (C) 1998-2004, 2006, 2009-2019 Free Software Foundation, Inc.
@@ -123,7 +123,7 @@ $ac_includes_default
           [Define if there is a function named getmntent for reading the list
            of mounted file systems, and that function takes a single argument.
            (4.3BSD, SunOS, HP-UX, Irix)])
-        AC_CHECK_FUNCS([hasmntopt])
+        AC_CHECK_FUNCS([setmntent endmntent hasmntopt])
       fi
     fi
 
index 1e7d22a5e048c75bbc28e3c7c7fd5b8fa16c08b8..81ab2bfe400a100ea3d350258018e05943fdc691 100644 (file)
@@ -9,6 +9,7 @@ m4/fstypename.m4
 m4/mountlist.m4
 
 Depends-on:
+getline
 stdbool
 stdint
 strstr-simple