From: Bruno Haible Date: Mon, 11 Aug 2003 13:02:26 +0000 (+0000) Subject: Work around the lack of wcslen() on Solaris 2.5.1. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c21c43c777f3d11b950393afd8cf8bda3ae865c;p=pspp Work around the lack of wcslen() on Solaris 2.5.1. --- diff --git a/lib/ChangeLog b/lib/ChangeLog index e08573f9fe..451a2249f1 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2003-08-11 Bruno Haible + + * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1. + (vasnprintf): Use it instead of wcslen. + 2003-08-11 Bruno Haible * stdbool_.h (_Bool): Undo last change; instead use a negative enum diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 994f993483..de1224a77e 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -47,6 +47,24 @@ # define freea(p) free (p) #endif +#ifdef HAVE_WCHAR_T +# ifdef HAVE_WCSLEN +# define local_wcslen wcslen +# else + /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid + a dependency towards this library, here is a local substitute. */ +static size_t +local_wcslen (const wchar_t *s) +{ + const wchar_t *ptr; + + for (ptr = s; *ptr != (wchar_t) 0; ptr++) + ; + return ptr - s; +} +# endif +#endif + char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) { @@ -368,7 +386,7 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) # ifdef HAVE_WCHAR_T if (type == TYPE_WIDE_STRING) tmp_length = - wcslen (a.arg[dp->arg_index].a.a_wide_string) + local_wcslen (a.arg[dp->arg_index].a.a_wide_string) * MB_CUR_MAX; else # endif diff --git a/m4/ChangeLog b/m4/ChangeLog index b4e396f33d..15ab932bb9 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,7 @@ +2003-08-11 Bruno Haible + + * vasnprintf.m4 (gl_PREREQ_VASNPRINTF): Also check for wcslen. + 2003-08-09 Paul Eggert * regex.m4 (jm_INCLUDED_REGEX): Change "\201" to "\371"; diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4 index b520581e03..2cbee3af97 100644 --- a/m4/vasnprintf.m4 +++ b/m4/vasnprintf.m4 @@ -1,4 +1,4 @@ -# vasnprintf.m4 serial 1 +# vasnprintf.m4 serial 2 dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General @@ -50,7 +50,7 @@ AC_DEFUN([gl_PREREQ_VASNPRINTF], AC_REQUIRE([gt_TYPE_LONGDOUBLE]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) - AC_CHECK_FUNCS(snprintf) + AC_CHECK_FUNCS(snprintf wcslen) ]) # Prerequisites of lib/asnprintf.c.