static void _php_iconv_show_error(php_iconv_err_t err, const char *out_charset, const char *in_charset TSRMLS_DC);
-static php_iconv_err_t _php_iconv_strlen(unsigned int *pretval, const char *str, size_t nbytes, const char *enc);
+static php_iconv_err_t _php_iconv_strlen(php_size_t *pretval, const char *str, size_t nbytes, const char *enc);
-static php_iconv_err_t _php_iconv_substr(smart_str *pretval, const char *str, size_t nbytes, int offset, int len, const char *enc);
+static php_iconv_err_t _php_iconv_substr(smart_str *pretval, const char *str, size_t nbytes, php_int_t offset, php_int_t len, const char *enc);
-static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval, const char *haystk, size_t haystk_nbytes, const char *ndl, size_t ndl_nbytes, int offset, const char *enc);
+static php_iconv_err_t _php_iconv_strpos(php_size_t *pretval, const char *haystk, size_t haystk_nbytes, const char *ndl, size_t ndl_nbytes, php_int_t offset, const char *enc);
-static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fname, size_t fname_nbytes, const char *fval, size_t fval_nbytes, unsigned int max_line_len, const char *lfchars, php_iconv_enc_scheme_t enc_scheme, const char *out_charset, const char *enc);
+static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fname, size_t fname_nbytes, const char *fval, size_t fval_nbytes, php_size_t max_line_len, const char *lfchars, php_iconv_enc_scheme_t enc_scheme, const char *out_charset, const char *enc);
static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *str, size_t str_nbytes, const char *enc, const char **next_pos, int mode);
}
if (mimetype != NULL && !(output_context->op & PHP_OUTPUT_HANDLER_CLEAN)) {
- int len;
+ php_int_t len;
char *p = strstr(get_output_encoding(TSRMLS_C), "//");
if (p) {
- len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, (int)(p - get_output_encoding(TSRMLS_C)), get_output_encoding(TSRMLS_C));
+ len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (php_size_t) strlen(mimetype), mimetype, (php_size_t)(p - get_output_encoding(TSRMLS_C)), get_output_encoding(TSRMLS_C));
} else {
- len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, get_output_encoding(TSRMLS_C));
+ len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%s", mimetype_len ? mimetype_len : (php_size_t) strlen(mimetype), mimetype, get_output_encoding(TSRMLS_C));
}
if (content_type && SUCCESS == sapi_add_header(content_type, len, 0)) {
SG(sapi_headers).send_default_content_type = 0;
/* }}} */
/* {{{ _php_iconv_strlen() */
-static php_iconv_err_t _php_iconv_strlen(unsigned int *pretval, const char *str, size_t nbytes, const char *enc)
+static php_iconv_err_t _php_iconv_strlen(php_size_t *pretval, const char *str, size_t nbytes, const char *enc)
{
char buf[GENERIC_SUPERSET_NBYTES*2];
char *out_p;
size_t out_left;
- unsigned int cnt;
+ php_size_t cnt;
- *pretval = (unsigned int)-1;
+ *pretval = (php_size_t)-1;
cd = iconv_open(GENERIC_SUPERSET_NAME, enc);
/* {{{ _php_iconv_substr() */
static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
- const char *str, size_t nbytes, int offset, int len, const char *enc)
+ const char *str, size_t nbytes, php_int_t offset, php_int_t len, const char *enc)
{
char buf[GENERIC_SUPERSET_NBYTES];
char *out_p;
size_t out_left;
- unsigned int cnt;
- int total_len;
+ php_size_t cnt;
+ php_int_t total_len;
err = _php_iconv_strlen(&total_len, str, nbytes, enc);
if (err != PHP_ICONV_ERR_SUCCESS) {
/* }}} */
/* {{{ _php_iconv_strpos() */
-static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval,
+static php_iconv_err_t _php_iconv_strpos(php_size_t *pretval,
const char *haystk, size_t haystk_nbytes,
const char *ndl, size_t ndl_nbytes,
- int offset, const char *enc)
+ php_int_t offset, const char *enc)
{
char buf[GENERIC_SUPERSET_NBYTES];
char *out_p;
size_t out_left;
- unsigned int cnt;
+ php_size_t cnt;
zend_string *ndl_buf;
const char *ndl_buf_p;
size_t ndl_buf_left;
- unsigned int match_ofs;
+ php_size_t match_ofs;
- *pretval = (unsigned int)-1;
+ *pretval = (php_size_t)-1;
err = php_iconv_string(ndl, ndl_nbytes, &ndl_buf, GENERIC_SUPERSET_NAME, enc);
ndl_buf_p = ndl_buf->val;
ndl_buf_left = ndl_buf->len;
- match_ofs = (unsigned int)-1;
+ match_ofs = (php_size_t)-1;
for (in_p = haystk, in_left = haystk_nbytes, cnt = 0; in_left > 0; ++cnt) {
size_t prev_in_left;
}
}
if (offset >= 0) {
- if (cnt >= (unsigned int)offset) {
+ if (cnt >= (php_size_t)offset) {
if (_php_iconv_memequal(buf, ndl_buf_p, sizeof(buf))) {
- if (match_ofs == (unsigned int)-1) {
+ if (match_ofs == (php_size_t)-1) {
match_ofs = cnt;
}
ndl_buf_p += GENERIC_SUPERSET_NBYTES;
break;
}
} else {
- unsigned int i, j, lim;
+ php_size_t i, j, lim;
i = 0;
j = GENERIC_SUPERSET_NBYTES;
- lim = (unsigned int)(ndl_buf_p - ndl_buf->val);
+ lim = (php_size_t)(ndl_buf_p - ndl_buf->val);
while (j < lim) {
if (_php_iconv_memequal(&ndl_buf->val[j], &ndl_buf->val[i],
ndl_buf_p = &ndl_buf->val[i];
ndl_buf_left = ndl_buf->len - i;
} else {
- match_ofs = (unsigned int)-1;
+ match_ofs = (php_size_t)-1;
ndl_buf_p = ndl_buf->val;
ndl_buf_left = ndl_buf->len;
}
}
} else {
if (_php_iconv_memequal(buf, ndl_buf_p, sizeof(buf))) {
- if (match_ofs == (unsigned int)-1) {
+ if (match_ofs == (php_size_t)-1) {
match_ofs = cnt;
}
ndl_buf_p += GENERIC_SUPERSET_NBYTES;
match_ofs = -1;
}
} else {
- unsigned int i, j, lim;
+ php_size_t i, j, lim;
i = 0;
j = GENERIC_SUPERSET_NBYTES;
- lim = (unsigned int)(ndl_buf_p - ndl_buf->val);
+ lim = (php_size_t)(ndl_buf_p - ndl_buf->val);
while (j < lim) {
if (_php_iconv_memequal(&ndl_buf->val[j], &ndl_buf->val[i],
ndl_buf_p = &ndl_buf->val[i];
ndl_buf_left = ndl_buf->len - i;
} else {
- match_ofs = (unsigned int)-1;
+ match_ofs = (php_size_t)-1;
ndl_buf_p = ndl_buf->val;
ndl_buf_left = ndl_buf->len;
}
/* }}} */
/* {{{ _php_iconv_mime_encode() */
-static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fname, size_t fname_nbytes, const char *fval, size_t fval_nbytes, unsigned int max_line_len, const char *lfchars, php_iconv_enc_scheme_t enc_scheme, const char *out_charset, const char *enc)
+static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fname, size_t fname_nbytes, const char *fval, size_t fval_nbytes, php_size_t max_line_len, const char *lfchars, php_iconv_enc_scheme_t enc_scheme, const char *out_charset, const char *enc)
{
php_iconv_err_t err = PHP_ICONV_ERR_SUCCESS;
iconv_t cd = (iconv_t)(-1), cd_pl = (iconv_t)(-1);
- unsigned int char_cnt = 0;
+ php_size_t char_cnt = 0;
size_t out_charset_len;
size_t lfchars_len;
char *buf = NULL;
{
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- char *str;
- int str_len;
+ zend_string *str;
php_iconv_err_t err;
- unsigned int retval;
+ php_size_t retval;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s",
- &str, &str_len, &charset, &charset_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|s",
+ &str, &charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
RETURN_FALSE;
}
- err = _php_iconv_strlen(&retval, str, str_len, charset);
+ err = _php_iconv_strlen(&retval, str->val, str->len, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS) {
RETVAL_INT(retval);
{
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- char *str;
- int str_len;
- long offset, length = 0;
+ zend_string *str;
+ php_int_t offset, length = 0;
php_iconv_err_t err;
smart_str retval = {0};
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|ls",
- &str, &str_len, &offset, &length,
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Si|is",
+ &str, &offset, &length,
&charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
}
if (ZEND_NUM_ARGS() < 3) {
- length = str_len;
+ length = str->len;
}
- err = _php_iconv_substr(&retval, str, str_len, offset, length, charset);
+ err = _php_iconv_substr(&retval, str->val, str->len, offset, length, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
- if (err == PHP_ICONV_ERR_SUCCESS && str != NULL && retval.s != NULL) {
+ if (err == PHP_ICONV_ERR_SUCCESS && str->val != NULL && retval.s != NULL) {
RETURN_STR(retval.s);
}
smart_str_free(&retval);
{
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- char *haystk;
- int haystk_len;
- char *ndl;
- int ndl_len;
- long offset = 0;
+ zend_string *haystk;
+ zend_string *ndl;
+ php_int_t offset = 0;
php_iconv_err_t err;
- unsigned int retval;
+ php_size_t retval;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls",
- &haystk, &haystk_len, &ndl, &ndl_len,
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|is",
+ &haystk, &ndl,
&offset, &charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
RETURN_FALSE;
}
- if (ndl_len < 1) {
+ if (ndl->len < 1) {
RETURN_FALSE;
}
- err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
+ err = _php_iconv_strpos(&retval, haystk->val, haystk->len, ndl->val, ndl->len,
offset, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
- if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
- RETVAL_INT((long)retval);
+ if (err == PHP_ICONV_ERR_SUCCESS && retval != (php_size_t)-1) {
+ RETVAL_INT((php_int_t)retval);
} else {
RETVAL_FALSE;
}
{
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- char *haystk;
- int haystk_len;
- char *ndl;
- int ndl_len;
+ zend_string *haystk;
+ zend_string *ndl;
php_iconv_err_t err;
- unsigned int retval;
+ php_size_t retval;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|s",
- &haystk, &haystk_len, &ndl, &ndl_len,
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|s",
+ &haystk, &ndl,
&charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
- if (ndl_len < 1) {
+ if (ndl->len < 1) {
RETURN_FALSE;
}
RETURN_FALSE;
}
- err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
+ err = _php_iconv_strpos(&retval, haystk->val, haystk->len, ndl->val, ndl->len,
-1, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
- if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
- RETVAL_INT((long)retval);
+ if (err == PHP_ICONV_ERR_SUCCESS && retval != (php_size_t)-1) {
+ RETVAL_INT((php_int_t)retval);
} else {
RETVAL_FALSE;
}
Composes a mime header field with field_name and field_value in a specified scheme */
PHP_FUNCTION(iconv_mime_encode)
{
- const char *field_name = NULL;
- int field_name_len;
- const char *field_value = NULL;
- int field_value_len;
+ zend_string *field_name = NULL;
+ zend_string *field_value = NULL;
zval *pref = NULL;
zval tmp_zv, *tmp_zv_p = NULL;
smart_str retval = {0};
const char *in_charset = get_internal_encoding(TSRMLS_C);
const char *out_charset = in_charset;
- long line_len = 76;
+ php_int_t line_len = 76;
const char *lfchars = "\r\n";
php_iconv_enc_scheme_t scheme_id = PHP_ICONV_ENC_SCHEME_BASE64;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|a",
- &field_name, &field_name_len, &field_value, &field_value_len,
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|a",
+ &field_name, &field_value,
&pref) == FAILURE) {
RETURN_FALSE;
}
}
- err = _php_iconv_mime_encode(&retval, field_name, field_name_len,
- field_value, field_value_len, line_len, lfchars, scheme_id,
+ err = _php_iconv_mime_encode(&retval, field_name->val, field_name->len,
+ field_value->val, field_value->len, line_len, lfchars, scheme_id,
out_charset, in_charset);
_php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
Decodes a mime header field */
PHP_FUNCTION(iconv_mime_decode)
{
- char *encoded_str;
- int encoded_str_len;
+ zend_string *encoded_str;
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- long mode = 0;
+ php_int_t mode = 0;
smart_str retval = {0};
php_iconv_err_t err;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls",
- &encoded_str, &encoded_str_len, &mode, &charset, &charset_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|is",
+ &encoded_str, &mode, &charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
RETURN_FALSE;
}
- err = _php_iconv_mime_decode(&retval, encoded_str, encoded_str_len, charset, NULL, mode);
+ err = _php_iconv_mime_decode(&retval, encoded_str->val, encoded_str->len, charset, NULL, mode);
_php_iconv_show_error(err, charset, "???" TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS) {
Decodes multiple mime header fields */
PHP_FUNCTION(iconv_mime_decode_headers)
{
- const char *encoded_str;
- int encoded_str_len;
+ zend_string *encoded_str;
char *charset = get_internal_encoding(TSRMLS_C);
int charset_len = 0;
- long mode = 0;
+ php_int_t mode = 0;
+ char *enc_str_tmp;
+ php_size_t enc_str_len_tmp;
php_iconv_err_t err = PHP_ICONV_ERR_SUCCESS;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls",
- &encoded_str, &encoded_str_len, &mode, &charset, &charset_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|is",
+ &encoded_str, &mode, &charset, &charset_len) == FAILURE) {
RETURN_FALSE;
}
array_init(return_value);
- while (encoded_str_len > 0) {
+ enc_str_tmp = encoded_str->val;
+ enc_str_len_tmp = encoded_str->len;
+ while (enc_str_len_tmp > 0) {
smart_str decoded_header = {0};
char *header_name = NULL;
size_t header_name_len = 0;
char *p, *limit;
const char *next_pos;
- if (PHP_ICONV_ERR_SUCCESS != (err = _php_iconv_mime_decode(&decoded_header, encoded_str, encoded_str_len, charset, &next_pos, mode))) {
+ if (PHP_ICONV_ERR_SUCCESS != (err = _php_iconv_mime_decode(&decoded_header, enc_str_tmp, enc_str_len_tmp, charset, &next_pos, mode))) {
smart_str_free(&decoded_header);
break;
}
add_assoc_stringl_ex(return_value, header_name, header_name_len, header_value, header_value_len);
}
}
- encoded_str_len -= next_pos - encoded_str;
- encoded_str = next_pos;
+ enc_str_len_tmp -= next_pos - enc_str_tmp;
+ enc_str_tmp = next_pos;
smart_str_free(&decoded_header);
}
Returns str converted to the out_charset character set */
PHP_NAMED_FUNCTION(php_if_iconv)
{
- char *in_charset, *out_charset, *in_buffer;
- int in_charset_len = 0, out_charset_len = 0, in_buffer_len;
+ char *in_charset, *out_charset;
+ zend_string *in_buffer;
+ int in_charset_len = 0, out_charset_len = 0;
php_iconv_err_t err;
zend_string *out_buffer;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
- &in_charset, &in_charset_len, &out_charset, &out_charset_len, &in_buffer, &in_buffer_len) == FAILURE)
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssS",
+ &in_charset, &in_charset_len, &out_charset, &out_charset_len, &in_buffer) == FAILURE)
return;
if (in_charset_len >= ICONV_CSNMAXLEN || out_charset_len >= ICONV_CSNMAXLEN) {
RETURN_FALSE;
}
- err = php_iconv_string(in_buffer, (size_t)in_buffer_len, &out_buffer, out_charset, in_charset);
+ err = php_iconv_string(in_buffer->val, (size_t)in_buffer->len, &out_buffer, out_charset, in_charset);
_php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) {
RETVAL_STR(out_buffer);
PHP_FUNCTION(iconv_get_encoding)
{
char *type = "all";
- int type_len = sizeof("all")-1;
+ php_size_t type_len = sizeof("all")-1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &type, &type_len) == FAILURE)
return;