]> granicus.if.org Git - php/commitdiff
-fix one warning
authorMarcus Boerger <helly@php.net>
Mon, 5 Aug 2002 18:26:06 +0000 (18:26 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 5 Aug 2002 18:26:06 +0000 (18:26 +0000)
-send Content-Type Header with charset

ext/iconv/iconv.c

index 2a9e5e73164bcbe60e74bb3736778227ffbd1d51..e36605e9727baa4730f93155ca6c8a2fb5c2c4b4 100644 (file)
@@ -203,7 +203,7 @@ static int php_iconv_string(const char *in_p, size_t in_len,
        iconv_t cd;
        size_t in_left, out_size, out_left;
        char *out_p, *out_buf, *tmp_buf;
-       size_t bsz, result;
+       size_t bsz, result = 0;
 
        *err = 0;
        cd = icv_open(out_charset, in_charset);
@@ -311,22 +311,37 @@ PHP_NAMED_FUNCTION(php_if_iconv)
    Returns str in output buffer converted to the iconv.output_encoding character set */
 PHP_FUNCTION(ob_iconv_handler)
 {
-       char *out_buffer;
+       char *out_buffer, *content_type, *mimetype = NULL, *s;
        zval *zv_string;
        unsigned int out_len;
-       int err, status;;
+       int err, status;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zl", &zv_string, &status) == FAILURE)
                return;
 
        convert_to_string_ex(&zv_string);
 
-       if (SG(sapi_headers).send_default_content_type &&
+       if (SG(sapi_headers).mimetype && 
+               strncmp(SG(sapi_headers).mimetype, "text/", 5) == 0) {
+               if ((s = strchr(SG(sapi_headers).mimetype,';')) == NULL){
+                       mimetype = estrdup(SG(sapi_headers).mimetype);
+               } else {
+                       mimetype = estrndup(SG(sapi_headers).mimetype,s-SG(sapi_headers).mimetype);
+               }
+       } else if (SG(sapi_headers).send_default_content_type) {
+               mimetype = estrdup(SG(default_mimetype) ? SG(default_mimetype) : SAPI_DEFAULT_MIMETYPE);
+       }
+       if (mimetype &&
                php_iconv_string(Z_STRVAL_P(zv_string), Z_STRLEN_P(zv_string),
                                                 &out_buffer, &out_len,
                                                 ICONVG(internal_encoding),
                                                 ICONVG(output_encoding),
                                                 &err TSRMLS_CC) == SUCCESS) {
+               spprintf(&content_type, 0, "Content-Type:%s;charset=%s", mimetype, ICONVG(output_encoding));
+               if (content_type && sapi_add_header(content_type, strlen(content_type), 0) != FAILURE) {
+                       SG(sapi_headers).send_default_content_type = 0;
+               }
+               efree(mimetype);
                RETVAL_STRINGL(out_buffer, out_len, 0);
        } else {
                zval_dtor(return_value);