From 5a58a6bc477f290ee0b8a6111e92df56ff538719 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 2 May 2023 08:16:00 +0800 Subject: [PATCH] Port Android port to older Android systems * exec/config.h.in: Autoheader. * exec/configure.ac: Check for declarations of stpcpy and stpncpy. * exec/exec.c (stpcpy, stpncpy): Use replacements if declarations are not present; this happens when a new Android NDK is building for an old version of Android. --- exec/config.h.in | 8 ++++++++ exec/configure.ac | 1 + exec/exec.c | 10 +++++----- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/exec/config.h.in b/exec/config.h.in index c276ff3f1f7..d8c225b631d 100644 --- a/exec/config.h.in +++ b/exec/config.h.in @@ -38,6 +38,14 @@ along with GNU Emacs. If not, see . */ /* Define to number of the `exec' system call. */ #undef EXEC_SYSCALL +/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. + */ +#undef HAVE_DECL_STPCPY + +/* Define to 1 if you have the declaration of `stpncpy', and to 0 if you + don't. */ +#undef HAVE_DECL_STPNCPY + /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE diff --git a/exec/configure.ac b/exec/configure.ac index 9b4bcebe34e..f3eef60173c 100644 --- a/exec/configure.ac +++ b/exec/configure.ac @@ -55,6 +55,7 @@ AC_TYPE_PID_T AC_HEADER_STDBOOL AC_CHECK_FUNCS([getpagesize stpcpy stpncpy]) +AC_CHECK_DECLS([stpcpy, stpncpy]) AH_BOTTOM([ #ifdef HAVE_STDBOOL_H diff --git a/exec/exec.c b/exec/exec.c index df8c9430236..7f2cc75338b 100644 --- a/exec/exec.c +++ b/exec/exec.c @@ -50,7 +50,7 @@ along with GNU Emacs. If not, see . */ /* Define replacements for required string functions. */ -#ifndef HAVE_STPCPY +#if !defined HAVE_STPCPY || !defined HAVE_DECL_STPCPY /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ @@ -72,14 +72,14 @@ rpl_stpcpy (char *dest, const char *src) } #define stpcpy rpl_stpcpy -#endif /* !HAVE_STPCPY */ +#endif /* !defined HAVE_STPCPY || !defined HAVE_DECL_STPCPY */ -#ifndef HAVE_STPNCPY +#if !defined HAVE_STPNCPY || !defined HAVE_DECL_STPNCPY /* Copy no more than N bytes of SRC to DST, returning a pointer past the last non-NUL byte written into DST. */ -char * +static char * rpl_stpncpy (char *dest, const char *src, size_t n) { char c, *s; @@ -140,7 +140,7 @@ rpl_stpncpy (char *dest, const char *src, size_t n) } #define stpncpy rpl_stpncpy -#endif /* !HAVE_STPNCPY */ +#endif /* !defined HAVE_STPNCPY || !defined HAVE_DECL_STPNCPY */ -- 2.39.2