From: Bruno Haible Date: Tue, 12 Aug 2003 17:43:43 +0000 (+0000) Subject: Fix portability problem on Solaris 2.5.1. X-Git-Tag: v0.13~371 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae09087f650559141e4eddd446da6affe30404d3;p=thirdparty%2Fgettext.git Fix portability problem on Solaris 2.5.1. --- diff --git a/gettext-runtime/intl/ChangeLog b/gettext-runtime/intl/ChangeLog index fd06b4ed7..92485dce3 100644 --- a/gettext-runtime/intl/ChangeLog +++ b/gettext-runtime/intl/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-01 Bruno Haible * relocatable.c (find_shared_library_fullname): Disable the code on diff --git a/gettext-runtime/intl/vasnprintf.c b/gettext-runtime/intl/vasnprintf.c index b94297d1e..6d2c768fd 100644 --- a/gettext-runtime/intl/vasnprintf.c +++ b/gettext-runtime/intl/vasnprintf.c @@ -58,6 +58,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 + #if WIDE_CHAR_VERSION # define VASNPRINTF vasnwprintf # define CHAR_T wchar_t @@ -399,10 +417,10 @@ VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list ar if (type == TYPE_WIDE_STRING) # if WIDE_CHAR_VERSION tmp_length = - wcslen (a.arg[dp->arg_index].a.a_wide_string); + local_wcslen (a.arg[dp->arg_index].a.a_wide_string); # else 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; # endif else diff --git a/gettext-runtime/libasprintf/ChangeLog b/gettext-runtime/libasprintf/ChangeLog index e2e0943e8..1dd9226ed 100644 --- a/gettext-runtime/libasprintf/ChangeLog +++ b/gettext-runtime/libasprintf/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-06-20 Bruno Haible * configure.ac: Invoke gt_PRINTF_POSIX. diff --git a/gettext-runtime/libasprintf/vasnprintf.c b/gettext-runtime/libasprintf/vasnprintf.c index b94297d1e..6d2c768fd 100644 --- a/gettext-runtime/libasprintf/vasnprintf.c +++ b/gettext-runtime/libasprintf/vasnprintf.c @@ -58,6 +58,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 + #if WIDE_CHAR_VERSION # define VASNPRINTF vasnwprintf # define CHAR_T wchar_t @@ -399,10 +417,10 @@ VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list ar if (type == TYPE_WIDE_STRING) # if WIDE_CHAR_VERSION tmp_length = - wcslen (a.arg[dp->arg_index].a.a_wide_string); + local_wcslen (a.arg[dp->arg_index].a.a_wide_string); # else 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; # endif else