summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2019-04-11 01:29:12 +0200
committerMikael Magnusson <mikma@users.sourceforge.net>2021-01-12 23:34:17 +0100
commit6ae9a32cd656e4398c11e851e959a0dd85f3c072 (patch)
treeebef928017286268ab0bcf80ac668217c9e6d784
parent50f4916fce668186c270550053978e13cb700f8a (diff)
Android: Disable include patterns if glob is unsupported
Because of missing glob() in NDK platforms before 28
-rw-r--r--conf/cf-lex.l10
-rw-r--r--configure.ac9
2 files changed, 15 insertions, 4 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index 05288b1a..cd720cdf 100644
--- a/conf/cf-lex.l
+++ b/conf/cf-lex.l
@@ -27,13 +27,16 @@
%{
#undef REJECT /* Avoid name clashes */
+#include "sysdep/config.h"
#include <errno.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdint.h>
#include <unistd.h>
#include <libgen.h>
+#ifdef HAVE_GLOB
#include <glob.h>
+#endif
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -461,7 +464,9 @@ cf_include(char *arg, int alen)
struct include_file_stack *base_ifs = ifs;
int new_depth, rv, i;
char *patt;
+#ifdef HAVE_GLOB
glob_t g = {};
+#endif
new_depth = ifs->depth + 1;
if (new_depth > MAX_INCLUDE_DEPTH)
@@ -491,6 +496,7 @@ cf_include(char *arg, int alen)
return;
}
+#ifdef HAVE_GLOB
/* Expand the pattern */
rv = glob(patt, GLOB_ERR | GLOB_NOESCAPE, NULL, &g);
if (rv == GLOB_ABORTED)
@@ -526,6 +532,10 @@ cf_include(char *arg, int alen)
globfree(&g);
enter_ifs(ifs);
+#else
+ cf_error("Pattern match unsupported %s: %m", patt);
+ return;
+#endif /* !HAVE_GLOB */
}
static int
diff --git a/configure.ac b/configure.ac
index 3ec309bf..4b6c31cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -361,10 +361,11 @@ AC_C_BIGENDIAN(
)
BIRD_CHECK_ANDROID_GLOB
-if test "$bird_cv_lib_glob" = no ; then
- AC_MSG_ERROR([glob.h not found.])
-elif test "$bird_cv_lib_glob" != yes ; then
- LIBS="$LIBS $bird_cv_lib_glob"
+if test "$bird_cv_lib_glob" != no ; then
+ AC_DEFINE([HAVE_GLOB], [1], [Define to 1 if you have glob()])
+ if test "$bird_cv_lib_glob" != yes ; then
+ LIBS="$LIBS $bird_cv_lib_glob"
+ fi
fi
BIRD_CHECK_ANDROID_LOG