From 969fe755730d23ba7ff21ae7511f66067d0a94d8 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 7 Jan 2010 23:42:03 +0100 Subject: [PATCH] mbslen: Avoid collision with system function. --- ChangeLog | 13 +++++++++++++ lib/string.in.h | 11 +++++++++++ m4/mbslen.m4 | 16 ++++++++++++++++ m4/string_h.m4 | 7 ++++--- modules/mbslen | 2 ++ modules/string | 1 + 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 m4/mbslen.m4 diff --git a/ChangeLog b/ChangeLog index 9153817401..9c573e40a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2010-01-07 Bruno Haible + + mbslen: Avoid collision with system function. + * lib/string.in.h [MirBSD]: Include . + (mbslen): Undefine first. Alias mbslen to rpl_mbslen. + * m4/mbslen.m4: New file. + * modules/mbslen (Files): Add it. + (configure.ac): Invoke gl_MBSLEN. + * m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Initialize HAVE_MBSLEN. + * modules/string (Makefile.am): Substitute HAVE_MBSLEN. + Reported by Nelson H. F. Beebe + via Ian Beckwith . + 2010-01-07 Bruno Haible dirent: Document the last fix. diff --git a/lib/string.in.h b/lib/string.in.h index c03790c5b5..cffe372955 100644 --- a/lib/string.in.h +++ b/lib/string.in.h @@ -31,6 +31,11 @@ /* NetBSD 5.0 mis-defines NULL. */ #include +/* MirBSD defines mbslen as a macro. */ +#if @GNULIB_MBSLEN@ && defined __MirBSD__ +# include +#endif + #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) @@ -439,6 +444,12 @@ extern char *strtok_r (char *restrict s, char const *restrict delim, #if @GNULIB_MBSLEN@ /* Return the number of multibyte characters in the character string STRING. This considers multibyte characters, unlike strlen, which counts bytes. */ +# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ +# undef mbslen +# endif +# if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ +# define mbslen rpl_mbslen +# endif extern size_t mbslen (const char *string) _GL_ARG_NONNULL ((1)); #endif diff --git a/m4/mbslen.m4 b/m4/mbslen.m4 new file mode 100644 index 0000000000..3c44fa6526 --- /dev/null +++ b/m4/mbslen.m4 @@ -0,0 +1,16 @@ +# mbslen.m4 serial 1 +dnl Copyright (C) 2010 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_MBSLEN], +[ + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + AC_CHECK_FUNCS_ONCE([mbslen]) + if test $ac_cv_func_mbslen = yes; then + HAVE_MBSLEN=1 + else + HAVE_MBSLEN=0 + fi +]) diff --git a/m4/string_h.m4 b/m4/string_h.m4 index 4e2db06538..f2f64d1935 100644 --- a/m4/string_h.m4 +++ b/m4/string_h.m4 @@ -1,11 +1,11 @@ # Configure a GNU-like replacement for . -# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# Copyright (C) 2007-2010 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 +# serial 10 # Written by Paul Eggert. @@ -64,7 +64,8 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) - GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) + GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) + HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) diff --git a/modules/mbslen b/modules/mbslen index 9374c93747..3551809fad 100644 --- a/modules/mbslen +++ b/modules/mbslen @@ -3,12 +3,14 @@ mbslen() function: Determine the number of multibyte characters in a string. Files: lib/mbslen.c +m4/mbslen.m4 Depends-on: mbuiter string configure.ac: +gl_MBSLEN gl_STRING_MODULE_INDICATOR([mbslen]) Makefile.am: diff --git a/modules/string b/modules/string index d445e3da60..de6eac253f 100644 --- a/modules/string +++ b/modules/string @@ -59,6 +59,7 @@ string.h: string.in.h $(LINK_WARNING_H) $(ARG_NONNULL_H) -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \ -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \ -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \ + -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -- 2.30.2