From fc9970a6e99f24288ecab6da456c42989be26820 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Wed, 17 Jan 2007 20:32:53 +0000 Subject: [PATCH] MFH: fix #40129 (iconv extension doesn't compile with CodeWarrior on Netware) patch by gk at gknw dot de --- NEWS | 2 ++ ext/iconv/iconv.c | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 51dbbf01a72ac..6f49be660413c 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,8 @@ PHP NEWS - Added CURLOPT_TCP_NODELAY constant to Curl extension. (Sara) - Improved proc_open(). Now on Windows it can run external commands not through CMD.EXE. (Dmitry) +- Fixed bug #40129 (iconv extension doesn't compile with CodeWarrior on + Netware). (gk at gknw dot de, Tony) - Fixed bug #40127 (apache2handler doesnt compile on Netware). (gk at gknw dot de) - Fixed bug #40121 (PDO_DBLIB driver wont free statements). (Ilia) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 65c2b8f460d7e..8f68ef6708081 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -258,12 +258,16 @@ PHP_MINIT_FUNCTION(miconv) } #elif HAVE_GLIBC_ICONV version = (char *)gnu_get_libc_version(); +#elif defined(NETWARE) + version = "OS built-in"; #endif #ifdef PHP_ICONV_IMPL REGISTER_STRING_CONSTANT("ICONV_IMPL", PHP_ICONV_IMPL, CONST_CS | CONST_PERSISTENT); #elif HAVE_LIBICONV REGISTER_STRING_CONSTANT("ICONV_IMPL", "libiconv", CONST_CS | CONST_PERSISTENT); +#elif defined(NETWARE) + REGISTER_STRING_CONSTANT("ICONV_IMPL", "Novell", CONST_CS | CONST_PERSISTENT); #else REGISTER_STRING_CONSTANT("ICONV_IMPL", "unknown", CONST_CS | CONST_PERSISTENT); #endif @@ -434,7 +438,11 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len, out_buffer = (char *) emalloc(out_size + 1); out_p = out_buffer; +#ifdef NETWARE + result = iconv(cd, (char **) &in_p, &in_size, (char **) +#else result = iconv(cd, (const char **) &in_p, &in_size, (char **) +#endif &out_p, &out_left); if (result == (size_t)(-1)) { @@ -710,7 +718,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval, #endif } - cd2 = NULL; + cd2 = (iconv_t)NULL; for (in_p = str, in_left = nbytes, cnt = 0; in_left > 0 && len > 0; ++cnt) { size_t prev_in_left; @@ -726,11 +734,11 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval, } if (cnt >= (unsigned int)offset) { - if (cd2 == NULL) { + if (cd2 == (iconv_t)NULL) { cd2 = iconv_open(enc, GENERIC_SUPERSET_NAME); if (cd2 == (iconv_t)(-1)) { - cd2 = NULL; + cd2 = (iconv_t)NULL; #if ICONV_SUPPORTS_ERRNO if (errno == EINVAL) { err = PHP_ICONV_ERR_WRONG_CHARSET; @@ -767,17 +775,17 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval, } #endif if (err == PHP_ICONV_ERR_SUCCESS) { - if (cd2 != NULL) { + if (cd2 != (iconv_t)NULL) { _php_iconv_appendl(pretval, NULL, 0, cd2); } smart_str_0(pretval); } - if (cd1 != NULL) { + if (cd1 != (iconv_t)NULL) { iconv_close(cd1); } - if (cd2 != NULL) { + if (cd2 != (iconv_t)NULL) { iconv_close(cd2); } return err;