]> granicus.if.org Git - php/commitdiff
@added mb_get_info() to get internal settings of mbstring.
authorRui Hirokawa <hirokawa@php.net>
Mon, 7 Jan 2002 02:40:54 +0000 (02:40 +0000)
committerRui Hirokawa <hirokawa@php.net>
Mon, 7 Jan 2002 02:40:54 +0000 (02:40 +0000)
ext/mbstring/mbstring.c
ext/mbstring/mbstring.h

index 8432be684b97eb0d24318da034681996f663b923..24feee23ebf6daccc505930c6a1cc0aa10cf775f 100644 (file)
@@ -124,6 +124,7 @@ function_entry mbstring_functions[] = {
        PHP_FE(mb_encode_numericentity,         NULL)
        PHP_FE(mb_decode_numericentity,         NULL)
        PHP_FE(mb_send_mail,                                    NULL)
+       PHP_FE(mb_get_info,                                     NULL)
        PHP_FALIAS(mbstrlen,    mb_strlen,      NULL)
        PHP_FALIAS(mbstrpos,    mb_strpos,      NULL)
        PHP_FALIAS(mbstrrpos,   mb_strrpos,     NULL)
@@ -430,6 +431,9 @@ PHP_MINIT_FUNCTION(mbstring)
        sapi_register_post_entries(mbstr_post_entries);
 #endif
 
+       REGISTER_LONG_CONSTANT("MB_OVERLOAD_MAIL", MB_OVERLOAD_MAIL, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MB_OVERLOAD_STRING", MB_OVERLOAD_STRING, CONST_CS | CONST_PERSISTENT);
+
        return SUCCESS;
 }
 
@@ -2686,6 +2690,66 @@ PHP_FUNCTION(mb_send_mail)
 
 #endif /* HAVE_SENDMAIL */
 
+/* {{{ proto string mb_get_info([string type])
+   Returns the current settings of mbstring. */
+PHP_FUNCTION(mb_get_info)
+{
+       zval **type;
+       char *name;
+       int argc = ZEND_NUM_ARGS();
+
+       if (argc < 0 || argc > 1 || zend_get_parameters_ex(1, &type) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       convert_to_string_ex(type);
+
+       if (argc == 0 || !strcasecmp("all", Z_STRVAL_PP(type))) {
+               if (array_init(return_value) == FAILURE) {
+                       RETURN_FALSE;
+               }
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)))
+ != NULL) {
+                       add_assoc_string(return_value, "internal_encoding", name, 1);
+               }
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(http_input_identify)))
+ != NULL) {
+                       add_assoc_string(return_value, "http_input", name, 1);
+               }
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_http_output_encoding)))
+ != NULL) {
+                       add_assoc_string(return_value, "http_output", name, 1);
+               }
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload)))
+ != NULL) {
+                       add_assoc_string(return_value, "func_overload", name, 1);
+               }
+       } else if (!strcasecmp("internal_encoding", Z_STRVAL_PP(type))) {
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)))
+ != NULL) {
+                       RETVAL_STRING(name, 1);
+               }               
+       } else if (!strcasecmp("http_input", Z_STRVAL_PP(type))) {
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(http_input_identify)))
+ != NULL) {
+                       RETVAL_STRING(name, 1);
+               }               
+       } else if (!strcasecmp("http_output", Z_STRVAL_PP(type))) {
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_http_output_encoding)))
+ != NULL) {
+                       RETVAL_STRING(name, 1);
+               }               
+       } else if (!strcasecmp("func_overload", Z_STRVAL_PP(type))) {
+               if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload)))
+ != NULL) {
+                       RETVAL_STRING(name, 1);
+               }
+       } else {
+               RETURN_FALSE;
+       }
+}
+/* }}} */
+
 #endif /* HAVE_MBSTRING */
 
 /*
index bed70adadcc20c3060fcd4850a7a9dbb58046f5b..6a0000048c1a1e18c1591123072aad377cb936d8 100644 (file)
@@ -90,6 +90,7 @@ PHP_FUNCTION(mb_convert_variables);
 PHP_FUNCTION(mb_encode_numericentity);
 PHP_FUNCTION(mb_decode_numericentity);
 PHP_FUNCTION(mb_send_mail);
+PHP_FUNCTION(mb_get_info);
 
 ZEND_BEGIN_MODULE_GLOBALS(mbstring)
        int language;