Commit 8bdef139a62c74d002a976e830f9d8e09628aea3

Pekka Paalanen 2012-05-15T15:23:41

Use eaccess() only if available Fixes build on Android. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>

diff --git a/configure.ac b/configure.ac
index 54bd6a5..1fc6436 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,6 +62,8 @@ if test "x$ac_cv_func_strcasecmp" = xno || \
     AC_MSG_ERROR([C library does not support strcasecmp/strncasecmp])
 fi
 
+AC_CHECK_FUNCS([eaccess euidaccess])
+
 # Build native compiler needed for makekeys
 AC_ARG_VAR([CC_FOR_BUILD], [Build native C compiler program])
 if test "x$CC_FOR_BUILD" = x; then
diff --git a/src/context.c b/src/context.c
index 2472d36..3f2f13d 100644
--- a/src/context.c
+++ b/src/context.c
@@ -72,8 +72,14 @@ xkb_context_include_path_append(struct xkb_context *ctx, const char *path)
         return 0;
     if (!S_ISDIR(stat_buf.st_mode))
         return 0;
+
+#if defined(HAVE_EACCESS)
     if (eaccess(path, R_OK | X_OK) != 0)
         return 0;
+#elif defined(HAVE_EUIDACCESS)
+    if (euidaccess(path, R_OK | X_OK) != 0)
+        return 0;
+#endif
 
     ctx->include_paths[ctx->num_include_paths] = strdup(path);
     if (!ctx->include_paths[ctx->num_include_paths])