lib: glob: Fix compilation on Android
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 26 Jun 2018 14:39:38 +0000 (17:39 +0300)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 31 Jul 2018 12:56:48 +0000 (15:56 +0300)
The glibc glob() implementation doesn't compile on Android due to
missing support for getlogin_r (before Android ABI 28) and to missing
__THROW, __THROWNL and __attribute_noinline__ macros.

getlogin_r is only used to implement support for the '~' path component
which we don't use in the uvc-gadget library, so we can compile it out.
The three macros can safely be defined as no-op.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
include/compat/glob.h
lib/compat/glob.c

index b5bd9ac..b05550b 100644 (file)
 #ifndef        _GLOB_H
 #define        _GLOB_H 1
 
+#ifndef __THROW
+#define __THROW
+#endif
+
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
index e48b030..28fd48e 100644 (file)
 #define __glibc_unlikely(x)            x
 #define __libc_use_alloca(x)           0
 #define alloca_account(size, avar)     alloca(size)
+#ifndef __THROWNL
+#define __THROWNL
+#endif
+#ifndef __attribute_noinline__
+#define __attribute_noinline__
+#endif
 
 #include <glob.h>
 
@@ -604,7 +610,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
        }
     }
 
-#ifndef VMS
+#if !defined(VMS) && !defined(ANDROID)
   if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && dirname[0] == '~')
     {
       if (dirname[1] == '\0' || dirname[1] == '/'
@@ -973,7 +979,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
        }
 # endif        /* Not Amiga && not WINDOWS32.  */
     }
-#endif /* Not VMS.  */
+#endif /* Not VMS && not ANDROID.  */
 
   /* Now test whether we looked for "~" or "~NAME".  In this case we
      can give the answer now.  */