Mercurial > hg > octave-lojdl > gnulib-hg
changeset 14613:2683cd2b0569
strnlen: Avoid memchr related link error on old obsolete platforms.
* modules/memchr-obsolete: New file.
* m4/memchr-obsolete.m4: New file.
* m4/memchr.m4 (gl_FUNC_MEMCHR): Don't check whether memchr exists if
gl_FUNC_MEMCHR_OBSOLETE is not also defined.
* modules/memchr (Depends-on): Add memchr-obsolete.
* modules/strnlen (Depends-on): Likewise.
* doc/posix-functions/memchr.texi: Mention module memchr-obsolete.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 25 Apr 2011 19:43:59 +0200 |
parents | 6ef4f1f39105 |
children | 284da5defc58 |
files | ChangeLog doc/posix-functions/memchr.texi m4/memchr-obsolete.m4 m4/memchr.m4 modules/memchr modules/memchr-obsolete modules/strnlen |
diffstat | 7 files changed, 70 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2011-04-25 Bruno Haible <bruno@clisp.org> + + strnlen: Avoid memchr related link error on old obsolete platforms. + * modules/memchr-obsolete: New file. + * m4/memchr-obsolete.m4: New file. + * m4/memchr.m4 (gl_FUNC_MEMCHR): Don't check whether memchr exists if + gl_FUNC_MEMCHR_OBSOLETE is not also defined. + * modules/memchr (Depends-on): Add memchr-obsolete. + * modules/strnlen (Depends-on): Likewise. + * doc/posix-functions/memchr.texi: Mention module memchr-obsolete. + 2011-04-25 Jim Meyering <meyering@redhat.com> maint.mk: makefile_at_at_check extend and clean up
--- a/doc/posix-functions/memchr.texi +++ b/doc/posix-functions/memchr.texi @@ -4,18 +4,21 @@ POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/memchr.html} -Gnulib module: memchr +Gnulib module: memchr or memchr-obsolete -Portability problems fixed by Gnulib: +Portability problems fixed by either Gnulib module @code{memchr} or @code{memchr-obsolete}: @itemize @item -This function is missing on some older platforms. - -@item This function dereferences too much memory on some platforms: glibc 2.10 on x86_64, IA-64; glibc 2.11 on Alpha. @end itemize +Portability problems fixed by Gnulib module @code{memchr-obsolete}: +@itemize +@item +This function is missing on some older platforms. +@end itemize + Portability problems not fixed by Gnulib: @itemize @end itemize
new file mode 100644 --- /dev/null +++ b/m4/memchr-obsolete.m4 @@ -0,0 +1,11 @@ +# memchr-obsolete.m4 serial 1 +dnl Copyright (C) 2011 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_MEMCHR_OBSOLETE], +[ + dnl The real code is in memchr.m4. + : +])
--- a/m4/memchr.m4 +++ b/m4/memchr.m4 @@ -1,4 +1,4 @@ -# memchr.m4 serial 10 +# memchr.m4 serial 11 dnl Copyright (C) 2002-2004, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -11,10 +11,16 @@ AC_CHECK_HEADERS_ONCE([sys/mman.h]) AC_CHECK_FUNCS_ONCE([mprotect]) - dnl These days, we assume memchr is present. But just in case... AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) - AC_CHECK_FUNCS_ONCE([memchr]) - if test $ac_cv_func_memchr = yes; then + m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [ + dnl These days, we assume memchr is present. But if support for old + dnl platforms is desired: + AC_CHECK_FUNCS_ONCE([memchr]) + if test $ac_cv_func_memchr = no; then + HAVE_MEMCHR=0 + fi + ]) + if test $HAVE_MEMCHR = 1; then # Detect platform-specific bugs in some versions of glibc: # memchr should not dereference anything with length 0 # http://bugzilla.redhat.com/499689 @@ -73,8 +79,6 @@ if test "$gl_cv_func_memchr_works" != yes; then REPLACE_MEMCHR=1 fi - else - HAVE_MEMCHR=0 fi if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then AC_LIBOBJ([memchr])
--- a/modules/memchr +++ b/modules/memchr @@ -10,6 +10,7 @@ Depends-on: extensions string +memchr-obsolete configure.ac: gl_FUNC_MEMCHR
new file mode 100644 --- /dev/null +++ b/modules/memchr-obsolete @@ -0,0 +1,28 @@ +Description: +memchr() function for old platforms. + +Status: +obsolete + +Notice: +This module is obsolete. + +Files: +m4/memchr-obsolete.m4 + +Depends-on: +memchr + +configure.ac: +gl_FUNC_MEMCHR_OBSOLETE + +Makefile.am: + +Include: +<string.h> + +License: +LGPLv2+ + +Maintainer: +Bruno Haible