Mercurial > gnulib
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 Mon Apr 25 10:38:33 2011 +0200 +++ b/ChangeLog Mon Apr 25 19:43:59 2011 +0200 @@ -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 Mon Apr 25 10:38:33 2011 +0200 +++ b/doc/posix-functions/memchr.texi Mon Apr 25 19:43:59 2011 +0200 @@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m4/memchr-obsolete.m4 Mon Apr 25 19:43:59 2011 +0200 @@ -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 Mon Apr 25 10:38:33 2011 +0200 +++ b/m4/memchr.m4 Mon Apr 25 19:43:59 2011 +0200 @@ -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 Mon Apr 25 10:38:33 2011 +0200 +++ b/modules/memchr Mon Apr 25 19:43:59 2011 +0200 @@ -10,6 +10,7 @@ Depends-on: extensions string +memchr-obsolete configure.ac: gl_FUNC_MEMCHR
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/memchr-obsolete Mon Apr 25 19:43:59 2011 +0200 @@ -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