And more of the same kind. Solaris 9's successor, Solaris 10, was released in 2005. Solaris 9 workarounds therefore can also be dropped.
2024-09-09 Bruno Haible <br...@clisp.org> striconv, striconveh, unicodeio: Drop workaround for glibc 2.1. * lib/striconv.c (mem_cd_iconv, str_iconv): Remove glibc-2.1 and Solaris 9 bug workarounds. * lib/striconveh.c (mem_cd_iconveh_internal): Likewise. * lib/unicodeio.c (unicode_to_mb): Likewise. diff --git a/lib/striconv.c b/lib/striconv.c index 74aa969738..712a244ac7 100644 --- a/lib/striconv.c +++ b/lib/striconv.c @@ -47,13 +47,8 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, size_t length; char *result; - /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) /* Set to the initial state. */ iconv (cd, NULL, NULL, NULL, NULL); -# endif /* Determine the length we need. */ { @@ -96,10 +91,6 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, # endif count += outptr - tmpbuf; } - /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) { char *outptr = tmpbuf; size_t outsize = tmpbufsize; @@ -109,7 +100,6 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, return -1; count += outptr - tmpbuf; } -# endif length = count; # undef tmpbuf } @@ -131,13 +121,8 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, } } - /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) /* Return to the initial state. */ iconv (cd, NULL, NULL, NULL, NULL); -# endif /* Do the conversion for real. */ { @@ -172,17 +157,12 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, } # endif } - /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) { size_t res = iconv (cd, NULL, NULL, &outptr, &outsize); if (res == (size_t)(-1)) goto fail; } -# endif if (outsize != 0) abort (); } @@ -273,13 +253,8 @@ str_cd_iconv (const char *src, iconv_t cd) return NULL; } - /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) /* Set to the initial state. */ iconv (cd, NULL, NULL, NULL, NULL); -# endif /* Do the conversion. */ { @@ -326,10 +301,6 @@ str_cd_iconv (const char *src, iconv_t cd) else break; } - /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) for (;;) { /* Here outptr + outbytes_remaining = result + result_size - 1. */ @@ -365,7 +336,6 @@ str_cd_iconv (const char *src, iconv_t cd) else break; } -# endif /* Add the terminating NUL byte. */ *outptr++ = '\0'; diff --git a/lib/striconveh.c b/lib/striconveh.c index 64cf1a1efd..952754ba5c 100644 --- a/lib/striconveh.c +++ b/lib/striconveh.c @@ -395,13 +395,8 @@ mem_cd_iconveh_internal (const char *src, size_t srclen, const char *inptr = src; size_t insize = srclen; - /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) /* Set to the initial state. */ iconv (cd, NULL, NULL, NULL, NULL); -# endif while (insize > 0) { @@ -608,16 +603,11 @@ mem_cd_iconveh_internal (const char *src, size_t srclen, bool do_final_flush1 = true; bool do_final_flush2 = true; - /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \ - || defined __sun) /* Set to the initial state. */ if (cd1 != (iconv_t)(-1)) iconv (cd1, NULL, NULL, NULL, NULL); if (cd2 != (iconv_t)(-1)) iconv (cd2, NULL, NULL, NULL, NULL); -# endif while (in1size > 0 || do_final_flush1 || utf8len > 0 || do_final_flush2) { diff --git a/lib/unicodeio.c b/lib/unicodeio.c index 9ed3875f93..e93f86ecba 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -154,17 +154,10 @@ unicode_to_mb (unsigned int code, ) return failure (code, NULL, callback_arg); - /* Avoid glibc-2.1 bug and Solaris 7 bug. */ -# if defined _LIBICONV_VERSION \ - || !(((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) \ - && !defined __UCLIBC__) \ - || defined __sun) - /* Get back to the initial shift state. */ res = iconv (utf8_to_local, NULL, NULL, &outptr, &outbytesleft); if (res == (size_t)(-1)) return failure (code, NULL, callback_arg); -# endif return success (outbuf, outptr - outbuf, callback_arg); }