jani Sun Aug 3 11:32:45 2008 UTC Modified files: /php-src/ext/intl/locale locale.c locale.h locale_class.c locale_class.h locale_methods.c locale_methods.h Log: - These files do not conform to any kind of coding standard. Sync from 5.3 too
http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale.c?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/intl/locale/locale.c diff -u php-src/ext/intl/locale/locale.c:1.2 php-src/ext/intl/locale/locale.c:1.3 --- php-src/ext/intl/locale/locale.c:1.2 Mon Jul 7 23:42:29 2008 +++ php-src/ext/intl/locale/locale.c Sun Aug 3 11:32:45 2008 @@ -10,9 +10,11 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Author: Kirti Velankar <[EMAIL PROTECTED]> | + | Author: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ + +/* $Id: locale.c,v 1.3 2008/08/03 11:32:45 jani Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -54,7 +56,7 @@ LOCALE_EXPOSE_CUSTOM_CLASS_CONST_STR( "GRANDFATHERED_LANG_TAG",LOC_GRANDFATHERED_LANG_TAG); LOCALE_EXPOSE_CUSTOM_CLASS_CONST_STR( "PRIVATE_TAG",LOC_PRIVATE_TAG); - #undef LOCALE_EXPOSE_CUSTOM_CLASS_CONS_STR + #undef LOCALE_EXPOSE_CUSTOM_CLASS_CONST_STR #undef LOCALE_EXPOSE_CLASS_CONST #undef LOCALE_EXPOSE_CONST } http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale.h?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/intl/locale/locale.h diff -u php-src/ext/intl/locale/locale.h:1.2 php-src/ext/intl/locale/locale.h:1.3 --- php-src/ext/intl/locale/locale.h:1.2 Mon Jul 7 23:42:29 2008 +++ php-src/ext/intl/locale/locale.h Sun Aug 3 11:32:45 2008 @@ -10,9 +10,11 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Kirti Velankar <[EMAIL PROTECTED]> | + | Authors: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ + +/* $Id: locale.h,v 1.3 2008/08/03 11:32:45 jani Exp $ */ #ifndef LOCALE_LOCALE_H #define LOCALE_LOCALE_H http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale_class.c?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/intl/locale/locale_class.c diff -u php-src/ext/intl/locale/locale_class.c:1.3 php-src/ext/intl/locale/locale_class.c:1.4 --- php-src/ext/intl/locale/locale_class.c:1.3 Wed Jul 23 18:45:10 2008 +++ php-src/ext/intl/locale/locale_class.c Sun Aug 3 11:32:45 2008 @@ -10,14 +10,14 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Kirti Velankar <[EMAIL PROTECTED]> | + | Authors: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ -#include <unicode/uloc.h> +/* $Id $ */ +#include <unicode/uloc.h> #include "php_intl.h" - #include "intl_error.h" #include "locale_class.h" #include "locale_methods.h" @@ -25,15 +25,15 @@ zend_class_entry *Locale_ce_ptr = NULL; - -///////////////////////////////////////////////////////////////////////////// -// 'Locale' class registration structures & functions -///////////////////////////////////////////////////////////////////////////// +/* + * 'Locale' class registration structures & functions + */ /* {{{ Locale methods arguments info */ -// NOTE: modifying 'locale_XX_args' do not forget to -// modify approptiate 'locale_XX_args' for -// the procedural API. +/* + * NOTE: when modifying 'locale_XX_args' do not forget to modify + * approptiate 'locale_XX_args' for the procedural API! + */ static ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 ) @@ -101,12 +101,12 @@ { zend_class_entry ce; - // Create and register 'Locale' class. + /* Create and register 'Locale' class. */ INIT_CLASS_ENTRY( ce, "Locale", Locale_class_functions ); ce.create_object = NULL; Locale_ce_ptr = zend_register_internal_class( &ce TSRMLS_CC ); - // Declare 'Locale' class properties. + /* Declare 'Locale' class properties. */ if( !Locale_ce_ptr ) { zend_error( E_ERROR, @@ -116,7 +116,6 @@ } /* }}} */ - /* * Local variables: * tab-width: 4 http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale_class.h?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/intl/locale/locale_class.h diff -u php-src/ext/intl/locale/locale_class.h:1.2 php-src/ext/intl/locale/locale_class.h:1.3 --- php-src/ext/intl/locale/locale_class.h:1.2 Mon Jul 7 23:42:29 2008 +++ php-src/ext/intl/locale/locale_class.h Sun Aug 3 11:32:45 2008 @@ -10,9 +10,11 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Kirti Velankar <[EMAIL PROTECTED]> | + | Authors: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ + +/* $Id: locale_class.h,v 1.3 2008/08/03 11:32:45 jani Exp $ */ #ifndef LOCALE_CLASS_H #define LOCALE_CLASS_H http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale_methods.c?r1=1.8&r2=1.9&diff_format=u Index: php-src/ext/intl/locale/locale_methods.c diff -u php-src/ext/intl/locale/locale_methods.c:1.8 php-src/ext/intl/locale/locale_methods.c:1.9 --- php-src/ext/intl/locale/locale_methods.c:1.8 Wed Jul 30 19:33:04 2008 +++ php-src/ext/intl/locale/locale_methods.c Sun Aug 3 11:32:45 2008 @@ -10,9 +10,11 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Kirti Velankar <[EMAIL PROTECTED]> | + | Authors: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ + +/* $Id: locale_methods.c,v 1.9 2008/08/03 11:32:45 jani Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -38,7 +40,7 @@ ZEND_EXTERN_MODULE_GLOBALS( intl ) -//Sizes required for the strings "variant15" , "extlang11", "private12" etc. +/* Sizes required for the strings "variant15" , "extlang11", "private12" etc. */ #define SEPARATOR "_" #define SEPARATOR1 "-" #define DELIMITER "-_" @@ -51,12 +53,13 @@ #define MAX_NO_PRIVATE 15 #define MAX_NO_LOOKUP_LANG_TAG 100 -//Sizes required for the strings "variant15" , "extlang3", "private12" etc. +#define LOC_NOT_FOUND 1 + +/* Sizes required for the strings "variant15" , "extlang3", "private12" etc. */ #define VARIANT_KEYNAME_LEN 11 #define EXTLANG_KEYNAME_LEN 10 #define PRIVATE_KEYNAME_LEN 11 -#define LOC_NOT_FOUND 1 /* Based on IANA registry at the time of writing this code * */ @@ -98,17 +101,14 @@ #define isKeywordPrefix(s) ( isKeywordSeparator(s[0]) ) /* Dot terminates it because of POSIX form where dot precedes the codepage - * except for variant - */ + * except for variant */ #define isTerminator(a) ((a==0)||(a=='.')||(a=='@')) - -/*{{{ return the offset of 'key' in the array 'list'. - * returns -1 if not present - */ +/* {{{ return the offset of 'key' in the array 'list'. + * returns -1 if not present */ static int16_t findOffset(const char* const* list, const char* key) { - const char* const* anchor = list; + const char* const* anchor = list; while (*list != NULL) { if (strcmp(key, *list) == 0) { return (int16_t)(list - anchor); @@ -116,7 +116,7 @@ list++; } - return -1; + return -1; } /*}}}*/ @@ -128,10 +128,10 @@ grOffset = findOffset( LOC_GRANDFATHERED ,gf_tag); if( grOffset < LOC_PREFERRED_GRANDFATHERED_LEN ){ - //return preferred tag + /* return preferred tag */ result = estrdup( LOC_PREFERRED_GRANDFATHERED[grOffset] ); } else { - //Return correct grandfathered language tag + /* Return correct grandfathered language tag */ result = estrdup( LOC_GRANDFATHERED[grOffset] ); } return result; @@ -149,9 +149,9 @@ for( i=savedPos; i>=0 ;i--){ if( isIDSeparator(*(str+i)) ){ - //delimiter found; check for singleton + /* delimiter found; check for singleton */ if( isIDSeparator(*(str+i-2)) ){ - //a singleton; so send the position of token before the singleton + /* a singleton; so send the position of token before the singleton */ result = i-3; } else { result = i-1; @@ -160,7 +160,7 @@ } } if(result < 1){ - //Just in case inavlid locale e.g. '-x-xyz' or '-sl_Latn' + /* Just in case inavlid locale e.g. '-x-xyz' or '-sl_Latn' */ result =-1; } return result; @@ -182,53 +182,50 @@ for( i=0; i<len ; i++){ if( isIDSeparator(*(str+i)) ){ if( i==1){ - // string is of the form x-avy or a-prv1 + /* string is of the form x-avy or a-prv1 */ result =0; break; } else { - //delimiter found; check for singleton + /* delimiter found; check for singleton */ if( isIDSeparator(*(str+i+2)) ){ - //a singleton; so send the position of separator before singleton + /* a singleton; so send the position of separator before singleton */ result = i+1; break; } } } - }//end of for + }/* end of for */ } return result; } /* }}} */ -/* {{{ proto static string Locale::getDefault( ) - * Gets the default locale - }}} */ +/* {{{ proto static string Locale::getDefault( ) + Get default locale */ +/* }}} */ /* {{{ proto static string locale_get_default( ) - * Gets the default locale - */ + Get default locale */ PHP_NAMED_FUNCTION(zif_locale_get_default) { - if( UG(default_locale) == NULL ) { - UG(default_locale) = pestrdup( uloc_getDefault(), 1); + if( INTL_G(default_locale) == NULL ) { + INTL_G(default_locale) = pestrdup( uloc_getDefault(), 1); } - RETURN_STRING( UG(default_locale), TRUE ); + RETURN_STRING( INTL_G(default_locale), TRUE ); } /* }}} */ /* {{{ proto static string Locale::setDefault( string $locale ) -* sets the default locale -* }}} */ + Set default locale */ +/* }}} */ /* {{{ proto static string locale_set_default( string $locale ) -* sets the default locale -*/ + Set default locale */ PHP_NAMED_FUNCTION(zif_locale_set_default) { char* locale_name = NULL; int len=0; - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &locale_name ,&len ) == FAILURE) { @@ -239,7 +236,7 @@ } if(len == 0) { - locale_name = uloc_getDefault() ; + locale_name = (char *)uloc_getDefault() ; len = strlen(locale_name); } @@ -268,20 +265,20 @@ if( tag_name != LOC_CANONICALIZE_TAG ){ - //Handle grandfathered languages + /* Handle grandfathered languages */ grOffset = findOffset( LOC_GRANDFATHERED , loc_name ); if( grOffset >= 0 ){ if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ tag_value = estrdup(loc_name); return tag_value; } else { - //Since Grandfathered , no value , do nothing , retutn NULL + /* Since Grandfathered , no value , do nothing , retutn NULL */ return NULL; } } if( fromParseLocale==1 ){ - //Handle singletons + /* Handle singletons */ if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ if( strlen(loc_name)>1 && (isIDPrefix(loc_name) ==1 ) ){ return loc_name; @@ -290,47 +287,50 @@ singletonPos = getSingletonPos( loc_name ); if( singletonPos == 0){ - //singleton at start of script, region , variant etc. - //or invalid singleton at start of language + /* singleton at start of script, region , variant etc. + * or invalid singleton at start of language */ return NULL; - }else if( singletonPos > 0 ){ - //singleton at some position except at start - //strip off the singleton and rest of the loc_name + } else if( singletonPos > 0 ){ + /* singleton at some position except at start + * strip off the singleton and rest of the loc_name */ mod_loc_name = estrndup ( loc_name , singletonPos-1); } - }//end of if fromParse + } /* end of if fromParse */ - }//end of if != LOC_CANONICAL_TAG + } /* end of if != LOC_CANONICAL_TAG */ if( mod_loc_name == NULL){ mod_loc_name = estrdup(loc_name ); } -//Proceed to ICU - do { + /* Proceed to ICU */ + do{ tag_value = erealloc( tag_value , buflen ); tag_value_len = buflen; if( strcmp(tag_name , LOC_SCRIPT_TAG)==0 ){ buflen = uloc_getScript ( mod_loc_name ,tag_value , tag_value_len , &status); - } else if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ + } + if( strcmp(tag_name , LOC_LANG_TAG )==0 ){ buflen = uloc_getLanguage ( mod_loc_name ,tag_value , tag_value_len , &status); - } else if( strcmp(tag_name , LOC_REGION_TAG)==0 ){ + } + if( strcmp(tag_name , LOC_REGION_TAG)==0 ){ buflen = uloc_getCountry ( mod_loc_name ,tag_value , tag_value_len , &status); - } else if( strcmp(tag_name , LOC_VARIANT_TAG)==0 ){ + } + if( strcmp(tag_name , LOC_VARIANT_TAG)==0 ){ buflen = uloc_getVariant ( mod_loc_name ,tag_value , tag_value_len , &status); - } else if( strcmp(tag_name , LOC_CANONICALIZE_TAG)==0 ){ + } + if( strcmp(tag_name , LOC_CANONICALIZE_TAG)==0 ){ buflen = uloc_canonicalize ( mod_loc_name ,tag_value , tag_value_len , &status); } if( U_FAILURE( status ) ) { - if( status == U_BUFFER_OVERFLOW_ERROR ) - { + if( status == U_BUFFER_OVERFLOW_ERROR ) { status = U_ZERO_ERROR; continue; } - //Error in retriving data + /* Error in retriving data */ *result = 0; if( tag_value ){ efree( tag_value ); @@ -340,10 +340,10 @@ } return NULL; } - } while( buflen > tag_value_len ); + } while( buflen > tag_value_len ); if( buflen ==0 ){ - //No value found + /* No value found */ *result = -1; if( tag_value ){ efree( tag_value ); @@ -383,7 +383,6 @@ intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &loc_name ,&loc_name_len ) == FAILURE) { spprintf(&msg , 0, "locale_get_%s : unable to parse input params", tag_name ); @@ -394,13 +393,13 @@ } if(loc_name_len == 0) { - loc_name = UG(default_locale); + loc_name = INTL_G(default_locale); } - //Call ICU get + /* Call ICU get */ tag_value = get_icu_value_internal( loc_name , tag_name , &result ,0); - //No value found + /* No value found */ if( result == -1 ) { if( tag_value){ efree( tag_value); @@ -408,12 +407,12 @@ RETURN_STRING( empty_result , TRUE); } - //value found + /* value found */ if( tag_value){ RETURN_STRING( tag_value , FALSE); } - //Error encountered while fetching the value + /* Error encountered while fetching the value */ if( result ==0) { spprintf(&msg , 0, "locale_get_%s : unable to get locale %s", tag_name , tag_name ); intl_error_set( NULL, status, msg , 1 TSRMLS_CC ); @@ -480,12 +479,14 @@ int32_t buflen = 512; UErrorCode status = U_ZERO_ERROR; + char* utf8value = NULL; + int utf8value_len = 0; + char* msg = NULL; int grOffset = 0; intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &loc_name, &loc_name_len , &disp_loc_name ,&disp_loc_name_len ) == FAILURE) @@ -497,17 +498,17 @@ } if(loc_name_len == 0) { - loc_name = UG(default_locale); + loc_name = INTL_G(default_locale); } if( tag_name != DISP_NAME ){ - //Handle grandfathered languages - grOffset = findOffset( LOC_GRANDFATHERED , loc_name ); + /* Handle grandfathered languages */ + grOffset = findOffset( LOC_GRANDFATHERED , loc_name ); if( grOffset >= 0 ){ if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ mod_loc_name = getPreferredTag( loc_name ); } else { - //Since Grandfathered , no value , do nothing , retutn NULL + /* Since Grandfathered, no value, do nothing, retutn NULL */ RETURN_FALSE; } } @@ -515,7 +516,7 @@ /* int singletonPos = 0; //Handle singletons - if( (strcmp(tag_name , LOC_LANG_TAG)==0) && isIDPrefix(loc_name) ){ + if( (strcmp(tag_name , LOC_LANG_TAG)==0) && isIDPrefix(loc_name) ){ //return mod_loc_name; } else { singletonPos = getSingletonPos( loc_name ); @@ -530,20 +531,20 @@ } } */ - }//end of if != LOC_CANONICAL_TAG + } /* end of if != LOC_CANONICAL_TAG */ if( mod_loc_name==NULL ){ mod_loc_name = estrdup( loc_name ); } - //Get the disp_value for the given locale + /* Get the disp_value for the given locale */ do{ disp_name = erealloc( disp_name , buflen ); disp_name_len = buflen; - //Check if disp_loc_name passed , if not use default locale + /* Check if disp_loc_name passed , if not use default locale */ if( !disp_loc_name){ - disp_loc_name = estrdup(UG(default_locale)); + disp_loc_name = estrdup(INTL_G(default_locale)); } if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ @@ -582,8 +583,19 @@ if( mod_loc_name){ efree( mod_loc_name ); } + /* Convert display locale name from UTF-16 to UTF-8. */ + intl_convert_utf16_to_utf8( &utf8value, &utf8value_len, disp_name, buflen, &status ); + efree( disp_name ); + if( U_FAILURE( status ) ) + { + spprintf(&msg, 0, "locale_get_display_%s :error converting display name for %s to UTF-8", tag_name , tag_name ); + intl_error_set( NULL, status, msg , 1 TSRMLS_CC ); + efree(msg); + RETURN_FALSE; + } + + RETVAL_STRINGL( utf8value, utf8value_len , FALSE); - RETURN_UNICODEL(disp_name, buflen, 0); } /* }}} */ @@ -635,10 +647,12 @@ } /* }}} */ -/* {{{ proto static string Locale::getDisplayVariant($locale, $in_locale = null) +/* {{{ +* proto static string Locale::getDisplayVariant($locale, $in_locale = null) * gets the variant for the $locale in $in_locale or default_locale }}} */ -/* {{{ proto static string get_display_variant($locale, $in_locale = null) +/* {{{ +* proto static string get_display_variant($locale, $in_locale = null) * gets the variant for the $locale in $in_locale or default_locale */ PHP_FUNCTION(locale_get_display_variant) @@ -647,15 +661,14 @@ } /* }}} */ - /* {{{ proto static string[] getKeywords(string $locale) + /* {{{ proto static array getKeywords(string $locale) { * return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}*/ - /* {{{ proto static string[] locale_get_keywords(string $locale) + /* {{{ proto static array locale_get_keywords(string $locale) { * return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) */ - PHP_FUNCTION( locale_get_keywords ) { UEnumeration* e = NULL; @@ -678,7 +691,6 @@ intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &loc_name, &loc_name_len ) == FAILURE) { @@ -689,20 +701,20 @@ } if(loc_name_len == 0) { - loc_name = UG(default_locale); + loc_name = INTL_G(default_locale); } - //Get the keywords + /* Get the keywords */ e = uloc_openKeywords( loc_name, &status ); if( e != NULL ) { - // Traverse it, filling the return array. + /* Traverse it, filling the return array. */ array_init( return_value ); while( ( kw_key = uenum_next( e, &kw_key_len, &status ) ) != NULL ){ kw_value = ecalloc( 1 , kw_value_len ); - //Get the keyword value for each keyword + /* Get the keyword value for each keyword */ kw_value_len=uloc_getKeywordValue( loc_name,kw_key, kw_value, kw_value_len , &status ); if (status == U_BUFFER_OVERFLOW_ERROR) { status = U_ZERO_ERROR; @@ -721,18 +733,18 @@ } add_assoc_stringl( return_value, (char *)kw_key, kw_value , kw_value_len, 0); - } //end of while + } /* end of while */ - }//end of if e!=NULL + } /* end of if e!=NULL */ uenum_close( e ); } /* }}} */ - /* {{{ proto static string Locale::canonicalize($locale) + /* {{{ proto static string Locale::canonicalize($locale) * @return string the canonicalized locale * }}} */ - /* {{{ proto static string locale_canonicalize(Locale $loc, string $locale) + /* {{{ proto static string locale_canonicalize(Locale $loc, string $locale) * @param string $locale The locale string to canonicalize */ PHP_FUNCTION(locale_canonicalize) @@ -741,54 +753,27 @@ } /* }}} */ -/* {{{ append_convert_to_string -*/ -static int append_convert_to_string(zval **val, char **strval, int *str_len TSRMLS_DC) -{ - if(Z_TYPE_PP(val) == IS_UNICODE) { - *strval = zend_unicode_to_ascii(Z_USTRVAL_PP(val), Z_USTRLEN_PP(val) TSRMLS_CC); - *str_len = strlen(*strval); - return 1; - } else if(Z_TYPE_PP(val) == IS_STRING) { - *strval = Z_STRVAL_PP(val); - *str_len = Z_STRLEN_PP(val); - return 0; - } - *strval = NULL; - return 0; -} -/* }}} */ - /* {{{ append_key_value * Internal function which is called from locale_compose * gets the value for the key_name and appends to the loc_name * returns 1 if successful , -1 if not found , * 0 if array element is not a string , -2 if buffer-overflow */ -static int append_key_value(smart_str* loc_name, HashTable* hash_arr, char* key_name TSRMLS_DC) +static int append_key_value(smart_str* loc_name, HashTable* hash_arr, char* key_name) { zval** ele_value = NULL; - if(zend_hash_find(hash_arr , key_name , strlen(key_name) + 1 ,(void **)&ele_value ) == SUCCESS || - zend_ascii_hash_find( hash_arr , key_name , strlen(key_name) + 1 , (void **)&ele_value ) == SUCCESS) { - int free_val; - char *val = NULL; - int len = 0; - - free_val = append_convert_to_string(ele_value, &val, &len TSRMLS_CC); - if(val == NULL) { - //element value is not a string + if(zend_hash_find(hash_arr , key_name , strlen(key_name) + 1 ,(void **)&ele_value ) == SUCCESS ) { + if(Z_TYPE_PP(ele_value)!= IS_STRING ){ + /* element value is not a string */ return FAILURE; } if(strcmp(key_name, LOC_LANG_TAG) != 0 && strcmp(key_name, LOC_GRANDFATHERED_LANG_TAG)!=0 ) { - // not lang or grandfathered tag + /* not lang or grandfathered tag */ smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1); } - smart_str_appendl(loc_name, val, len); - if(free_val) { - efree(val); - } + smart_str_appendl(loc_name, Z_STRVAL_PP(ele_value) , Z_STRLEN_PP(ele_value)); return SUCCESS; } @@ -796,7 +781,6 @@ } /* }}} */ - /* {{{ append_prefix , appends the prefix needed * e.g. private adds 'x' */ @@ -808,6 +792,7 @@ } } /* }}} */ + /* {{{ append_multiple_key_values * Internal function which is called from locale_compose * gets the multiple values for the key_name and appends to the loc_name @@ -821,54 +806,39 @@ int i = 0; int isFirstSubtag = 0; int max_value = 0; - int free_val; - char *val = NULL; - int len = 0; - //Variant/ Extlang/Private etc. - if( zend_hash_find( hash_arr , key_name , strlen(key_name) + 1 ,(void **)&ele_value ) == SUCCESS || - zend_ascii_hash_find( hash_arr , key_name , strlen(key_name) + 1 , (void **)&ele_value ) == SUCCESS) { - if(Z_TYPE_PP(ele_value) == IS_ARRAY ) { + /* Variant/ Extlang/Private etc. */ + if( zend_hash_find( hash_arr , key_name , strlen(key_name) + 1 ,(void **)&ele_value ) == SUCCESS ) { + if( Z_TYPE_PP(ele_value) == IS_STRING ){ + add_prefix( loc_name , key_name); + + smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1); + smart_str_appendl(loc_name, Z_STRVAL_PP(ele_value) , Z_STRLEN_PP(ele_value)); + return SUCCESS; + } else if(Z_TYPE_PP(ele_value) == IS_ARRAY ) { HashPosition pos; HashTable *arr = HASH_OF(*ele_value); zval **data = NULL; zend_hash_internal_pointer_reset_ex(arr, &pos); while(zend_hash_get_current_data_ex(arr, (void **)&data, &pos) != FAILURE) { - free_val = append_convert_to_string(data, &val, &len TSRMLS_CC); - if(val == NULL) { - //element value is not a string + if(Z_TYPE_PP(data) != IS_STRING) { return FAILURE; } if (isFirstSubtag++ == 0){ add_prefix(loc_name , key_name); } smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1); - smart_str_appendl(loc_name, val, len); + smart_str_appendl(loc_name, Z_STRVAL_PP(data) , Z_STRLEN_PP(data)); zend_hash_move_forward_ex(arr, &pos); - if(free_val) { - efree(val); - } } return SUCCESS; } else { - free_val = append_convert_to_string(ele_value, &val, &len TSRMLS_CC); - if(val == NULL) { - //element value is not a string - return FAILURE; - } - add_prefix( loc_name , key_name); - - smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1); - smart_str_appendl(loc_name, val, len); - if(free_val) { - efree(val); - } - return SUCCESS; - } + return FAILURE; + } } else { char cur_key_name[31]; - //Decide the max_value: the max. no. of elements allowed + /* Decide the max_value: the max. no. of elements allowed */ if( strcmp(key_name , LOC_VARIANT_TAG) ==0 ){ max_value = MAX_NO_VARIANT; } @@ -879,29 +849,24 @@ max_value = MAX_NO_PRIVATE; } - //Multiple variant values as variant0, variant1 ,variant2 + /* Multiple variant values as variant0, variant1 ,variant2 */ isFirstSubtag = 0; for( i=0 ; i< max_value; i++ ){ snprintf( cur_key_name , 30, "%s%d", key_name , i); - if(zend_hash_find(hash_arr, cur_key_name, strlen(cur_key_name)+1, (void **)&ele_value) == SUCCESS || - zend_ascii_hash_find(hash_arr, cur_key_name, strlen(cur_key_name)+1, (void **)&ele_value) == SUCCESS) { - free_val = append_convert_to_string(ele_value, &val, &len TSRMLS_CC); - if(val == NULL) { - //element value is not a string + if( zend_hash_find( hash_arr , cur_key_name , strlen(cur_key_name) + 1,(void **)&ele_value ) == SUCCESS ){ + if( Z_TYPE_PP(ele_value)!= IS_STRING ){ + /* variant is not a string */ return FAILURE; } - //Add the contents + /* Add the contents */ if (isFirstSubtag++ == 0){ add_prefix(loc_name , cur_key_name); } smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1); - smart_str_appendl(loc_name, val, len); - if(free_val) { - efree(val); - } + smart_str_appendl(loc_name, Z_STRVAL_PP(ele_value) , Z_STRLEN_PP(ele_value)); } - }//end of for - }//end of else + } /* end of for */ + } /* end of else */ return SUCCESS; } @@ -941,7 +906,7 @@ int result = 0; intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. + if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) { @@ -955,8 +920,8 @@ if( !hash_arr || zend_hash_num_elements( hash_arr ) == 0 ) RETURN_FALSE; - //Check for grandfathered first - result = append_key_value(loc_name, hash_arr, LOC_GRANDFATHERED_LANG_TAG TSRMLS_CC); + /* Check for grandfathered first */ + result = append_key_value(loc_name, hash_arr, LOC_GRANDFATHERED_LANG_TAG); if( result == SUCCESS){ RETURN_SMART_STR(loc_name); } @@ -964,8 +929,8 @@ RETURN_FALSE; } - //Not grandfathered - result = append_key_value(loc_name, hash_arr , LOC_LANG_TAG TSRMLS_CC); + /* Not grandfathered */ + result = append_key_value(loc_name, hash_arr , LOC_LANG_TAG); if( result == LOC_NOT_FOUND ){ intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "locale_compose: parameter array does not contain 'language' tag.", 0 TSRMLS_CC ); @@ -976,31 +941,31 @@ RETURN_FALSE; } - //Extlang + /* Extlang */ result = append_multiple_key_values(loc_name, hash_arr , LOC_EXTLANG_TAG TSRMLS_CC); if( !handleAppendResult( result, loc_name TSRMLS_CC)){ RETURN_FALSE; } - //Script - result = append_key_value(loc_name, hash_arr , LOC_SCRIPT_TAG TSRMLS_CC); + /* Script */ + result = append_key_value(loc_name, hash_arr , LOC_SCRIPT_TAG); if( !handleAppendResult( result, loc_name TSRMLS_CC)){ RETURN_FALSE; } - //Region - result = append_key_value( loc_name, hash_arr , LOC_REGION_TAG TSRMLS_CC); + /* Region */ + result = append_key_value( loc_name, hash_arr , LOC_REGION_TAG); if( !handleAppendResult( result, loc_name TSRMLS_CC)){ RETURN_FALSE; } - //Variant + /* Variant */ result = append_multiple_key_values( loc_name, hash_arr , LOC_VARIANT_TAG TSRMLS_CC); if( !handleAppendResult( result, loc_name TSRMLS_CC)){ RETURN_FALSE; } - //Private + /* Private */ result = append_multiple_key_values( loc_name, hash_arr , LOC_PRIVATE_TAG TSRMLS_CC); if( !handleAppendResult( result, loc_name TSRMLS_CC)){ RETURN_FALSE; @@ -1019,47 +984,47 @@ */ static char* get_private_subtags(char* loc_name) { - char* result =NULL; - int singletonPos = 0; - int len =0; - char* mod_loc_name =NULL; - - if( loc_name && (len = strlen(loc_name)>0 ) ){ - mod_loc_name = loc_name ; - len = strlen(mod_loc_name); - while( (singletonPos = getSingletonPos(mod_loc_name))!= -1){ - - if( singletonPos!=-1){ - if( (*(mod_loc_name+singletonPos)=='x') || (*(mod_loc_name+singletonPos)=='X') ){ - //private subtag start found - if( singletonPos + 2 == len){ - //loc_name ends with '-x-' ; return NULL - } - else{ - result = estrndup(mod_loc_name + singletonPos+2 , (len -( singletonPos +2) ) ); - } - break; - } - else{ - if( singletonPos + 1 >= len){ - //String end - break; - } else { - //singleton found but not a private subtag , hence check further in the string for the private subtag - mod_loc_name = mod_loc_name + singletonPos +1; - len = strlen(mod_loc_name); - } - } - } - - }//end of while - } + char* result =NULL; + int singletonPos = 0; + int len =0; + char* mod_loc_name =NULL; + + if( loc_name && (len = strlen(loc_name)>0 ) ){ + mod_loc_name = loc_name ; + len = strlen(mod_loc_name); + while( (singletonPos = getSingletonPos(mod_loc_name))!= -1){ + + if( singletonPos!=-1){ + if( (*(mod_loc_name+singletonPos)=='x') || (*(mod_loc_name+singletonPos)=='X') ){ + /* private subtag start found */ + if( singletonPos + 2 == len){ + /* loc_name ends with '-x-' ; return NULL */ + } + else{ + /* result = mod_loc_name + singletonPos +2; */ + result = estrndup(mod_loc_name + singletonPos+2 , (len -( singletonPos +2) ) ); + } + break; + } + else{ + if( singletonPos + 1 >= len){ + /* String end */ + break; + } else { + /* singleton found but not a private subtag , hence check further in the string for the private subtag */ + mod_loc_name = mod_loc_name + singletonPos +1; + len = strlen(mod_loc_name); + } + } + } - return result; + } /* end of while */ + } + + return result; } /* }}} */ - /* {{{ code used by locale_parse */ static int add_array_entry(char* loc_name, zval* hash_arr, char* key_name TSRMLS_DC) @@ -1080,10 +1045,10 @@ } else { key_value = get_icu_value_internal( loc_name , key_name , &result,1 ); } - if( strcmp(key_name , LOC_PRIVATE_TAG)==0 || - strcmp(key_name , LOC_VARIANT_TAG)==0 ){ + if( (strcmp(key_name , LOC_PRIVATE_TAG)==0) || + ( strcmp(key_name , LOC_VARIANT_TAG)==0) ){ if( result > 0 && key_value){ - //Tokenize on the "_" or "-" + /* Tokenize on the "_" or "-" */ token = php_strtok_r( key_value , DELIMITER ,&last_ptr); if( cur_key_name ){ efree( cur_key_name); @@ -1091,11 +1056,14 @@ cur_key_name = (char*)ecalloc( 25, 25); sprintf( cur_key_name , "%s%d", key_name , cnt++); add_assoc_string( hash_arr, cur_key_name , token ,TRUE ); - //tokenize on the "_" or "-" and stop at singleton if any + /* tokenize on the "_" or "-" and stop at singleton if any */ while( (token = php_strtok_r(NULL , DELIMITER , &last_ptr)) && (strlen(token)>1) ){ sprintf( cur_key_name , "%s%d", key_name , cnt++); add_assoc_string( hash_arr, cur_key_name , token , TRUE ); } + + if( key_name == LOC_PRIVATE_TAG ){ + } } } else { if( result == 1 ){ @@ -1107,16 +1075,18 @@ if( cur_key_name ){ efree( cur_key_name); } + /*if( key_name != LOC_PRIVATE_TAG && key_value){*/ if( key_value){ efree(key_value); } return cur_result; } +/* }}} */ /* {{{ proto static array Locale::parseLocale($locale) * parses a locale-id into an array the different parts of it }}} */ -/* {{{ proto static array parse_locale($locale) +/* {{{ proto static array parse_locale($locale) * parses a locale-id into an array the different parts of it */ PHP_FUNCTION(locale_parse) @@ -1127,7 +1097,6 @@ intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &loc_name, &loc_name_len ) == FAILURE) { @@ -1138,23 +1107,23 @@ } if(loc_name_len == 0) { - loc_name = UG(default_locale); + loc_name = INTL_G(default_locale); } array_init( return_value ); grOffset = findOffset( LOC_GRANDFATHERED , loc_name ); if( grOffset >= 0 ){ - add_assoc_string( return_value , LOC_GRANDFATHERED_LANG_TAG , loc_name , 1 ); - } else { - //Not grandfathered + add_assoc_string( return_value , LOC_GRANDFATHERED_LANG_TAG , estrdup(loc_name) ,FALSE ); + } + else{ + /* Not grandfathered */ add_array_entry( loc_name , return_value , LOC_LANG_TAG TSRMLS_CC); add_array_entry( loc_name , return_value , LOC_SCRIPT_TAG TSRMLS_CC); add_array_entry( loc_name , return_value , LOC_REGION_TAG TSRMLS_CC); add_array_entry( loc_name , return_value , LOC_VARIANT_TAG TSRMLS_CC); add_array_entry( loc_name , return_value , LOC_PRIVATE_TAG TSRMLS_CC); } - } /* }}} */ @@ -1176,7 +1145,6 @@ intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &loc_name, &loc_name_len ) == FAILURE) { @@ -1187,24 +1155,24 @@ } if(loc_name_len == 0) { - loc_name = UG(default_locale); + loc_name = INTL_G(default_locale); } array_init( return_value ); - //If the locale is grandfathered , stop , no variants + /* If the locale is grandfathered, stop, no variants */ if( findOffset( LOC_GRANDFATHERED , loc_name ) >= 0 ){ - //("Grandfathered Tag. No variants."); + /* ("Grandfathered Tag. No variants."); */ } else { - //Call ICU variant + /* Call ICU variant */ variant = get_icu_value_internal( loc_name , LOC_VARIANT_TAG , &result ,0); if( result > 0 && variant){ - //Tokenize on the "_" or "-" + /* Tokenize on the "_" or "-" */ token = php_strtok_r( variant , DELIMITER , &saved_ptr); add_next_index_stringl( return_value, token , strlen(token) ,TRUE ); - //tokenize on the "_" or "-" and stop at singleton if any + /* tokenize on the "_" or "-" and stop at singleton if any */ while( (token = php_strtok_r(NULL , DELIMITER, &saved_ptr)) && (strlen(token)>1) ){ add_next_index_stringl( return_value, token , strlen(token) ,TRUE ); } @@ -1219,7 +1187,7 @@ /* }}} */ /*{{{ -* Converts to lower case and also replaces all hyphens with the underscore +* Converts to lower case and also replaces all hyphuns with the underscore */ static int strToMatch(char* str ,char *retstr) { @@ -1282,7 +1250,6 @@ intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "ssb", &lang_tag, &lang_tag_len , &loc_range , &loc_range_len , &boolCanonical) == FAILURE) @@ -1294,7 +1261,7 @@ } if(loc_range_len == 0) { - loc_range = UG(default_locale); + loc_range = INTL_G(default_locale); } if( strcmp(loc_range,"*")==0){ @@ -1302,7 +1269,7 @@ } if( boolCanonical ){ - //canonicalize loc_range + /* canonicalize loc_range */ can_loc_range=get_icu_value_internal( loc_range , LOC_CANONICALIZE_TAG , &result , 0); if( result ==0) { intl_error_set( NULL, status, @@ -1310,7 +1277,7 @@ RETURN_FALSE; } - //canonicalize lang_tag + /* canonicalize lang_tag */ can_lang_tag = get_icu_value_internal( lang_tag , LOC_CANONICALIZE_TAG , &result , 0); if( result ==0) { intl_error_set( NULL, status, @@ -1318,10 +1285,10 @@ RETURN_FALSE; } - //Convert to lower case for case-insensitive comparison + /* Convert to lower case for case-insensitive comparison */ cur_lang_tag = ecalloc( 1, strlen(can_lang_tag) + 1); - //Convert to lower case for case-insensitive comparison + /* Convert to lower case for case-insensitive comparison */ result = strToMatch( can_lang_tag , cur_lang_tag); if( result == 0) { efree( cur_lang_tag ); @@ -1339,11 +1306,11 @@ RETURN_FALSE; } - //check if prefix + /* check if prefix */ token = strstr( cur_lang_tag , cur_loc_range ); - if( token && ( strcmp(token,cur_lang_tag)==0) ){ - //check if the char. after match is SEPARATOR + if( token && (token==cur_lang_tag) ){ + /* check if the char. after match is SEPARATOR */ chrcheck = token + (strlen(cur_loc_range)); if( isIDSeparator(*chrcheck) || isEndOfTag(*chrcheck) ){ if( cur_lang_tag){ @@ -1362,7 +1329,7 @@ } } - //No prefix as loc_range + /* No prefix as loc_range */ if( cur_lang_tag){ efree( cur_lang_tag ); } @@ -1377,9 +1344,9 @@ } RETURN_FALSE; - }//end of if isCanonical + } /* end of if isCanonical */ else{ - //Convert to lower case for case-insensitive comparison + /* Convert to lower case for case-insensitive comparison */ cur_lang_tag = ecalloc( 1, strlen(lang_tag ) + 1); result = strToMatch( lang_tag , cur_lang_tag); @@ -1395,11 +1362,11 @@ RETURN_FALSE; } - //check if prefix + /* check if prefix */ token = strstr( cur_lang_tag , cur_loc_range ); - if( token && (strcmp(token,cur_lang_tag)==0) ){ - //check if the char. after match is SEPARATOR + if( token && (token==cur_lang_tag) ){ + /* check if the char. after match is SEPARATOR */ chrcheck = token + (strlen(cur_loc_range)); if( isIDSeparator(*chrcheck) || isEndOfTag(*chrcheck) ){ if( cur_lang_tag){ @@ -1412,7 +1379,7 @@ } } - //No prefix as loc_range + /* No prefix as loc_range */ if( cur_lang_tag){ efree( cur_lang_tag ); } @@ -1460,52 +1427,50 @@ UErrorCode status = U_ZERO_ERROR; char* empty_result = ""; - //convert the array to lowercase , also replace hyphens with the underscore and store it in cur_arr + /* convert the array to lowercase , also replace hyphuns with the underscore and store it in cur_arr */ for(zend_hash_internal_pointer_reset(hash_arr); zend_hash_has_more_elements(hash_arr) == SUCCESS; zend_hash_move_forward(hash_arr)) { if (zend_hash_get_current_data(hash_arr, (void**)&ele_value) == FAILURE) { - // Should never actually fail - // since the key is known to exist. - continue; + /* Should never actually fail since the key is known to exist.*/ + continue; } - - if( lang_tag ){ - efree( lang_tag ); - } - if( Z_TYPE_PP(ele_value)== IS_UNICODE ) { - lang_tag = zend_unicode_to_ascii(Z_USTRVAL_PP(ele_value), Z_USTRLEN_PP(ele_value) TSRMLS_CC); - } else if( Z_TYPE_PP(ele_value)== IS_STRING ) { - lang_tag = estrdup(Z_STRVAL_PP(ele_value)); - } else { - //element value is not a string - intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "lookup_internal_src_php: array element is not a string ", 0 TSRMLS_CC ); + if( Z_TYPE_PP(ele_value)!= IS_STRING ){ + /* element value is not a string */ + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, + "lookup_loc_range: array element is not a string ", + 0 TSRMLS_CC ); return NULL; - } - - if( isCanonical ==0 ){ - //+1 for the terminating '\0' - cur_arr[cur_arr_ind] = ecalloc(1, strlen(lang_tag)+1 ); - result = strToMatch(lang_tag, cur_arr[cur_arr_ind]) ; } else { - cur_arr[cur_arr_ind] = estrdup(lang_tag); - } + if( lang_tag ){ + efree( lang_tag ); + } + lang_tag = estrdup(Z_STRVAL_PP(ele_value) ); - if( cur_arr_ind < MAX_NO_LOOKUP_LANG_TAG ){ - cur_arr_ind++ ; - } - else{ - break; + if( isCanonical ==0 ){ + /* +1 for the terminating '\0' */ + cur_arr[cur_arr_ind] = ecalloc(1, strlen(lang_tag)+1 ); + result = strToMatch(lang_tag, cur_arr[cur_arr_ind]) ; + } else { + cur_arr[cur_arr_ind] = estrdup(lang_tag); + } + + if( cur_arr_ind < MAX_NO_LOOKUP_LANG_TAG ){ + cur_arr_ind++ ; + } else { + break; + } } - }//end of for + } /* end of for */ + if( lang_tag ){ efree( lang_tag ); } cur_arr_len = cur_arr_ind; - //Canonicalize array elements + /* Canonicalize array elements */ if( isCanonical ==1 ){ for( i=0; i< cur_arr_ind; i++ ){ lang_tag =get_icu_value_internal( cur_arr[i] , LOC_CANONICALIZE_TAG , &result , 0); @@ -1527,10 +1492,10 @@ } if( isCanonical ==1 ){ - //Canonicalize the loc_range + /* Canonicalize the loc_range */ can_loc_range =get_icu_value_internal( loc_range, LOC_CANONICALIZE_TAG , &result , 0); if( result != 1 ){ - //Error + /* Error */ intl_error_set( NULL, status, "locale_lookup : unable to canonicalize loc_range" , 0 TSRMLS_CC ); if( lang_tag ){ @@ -1542,18 +1507,18 @@ array_cleanup( cur_arr , cur_arr_len ); return NULL; } else { - //convert to lower and replace hyphuns + /* convert to lower and replace hyphuns */ cur_loc_range = ecalloc( 1, strlen(can_loc_range) +1); result = strToMatch(can_loc_range , cur_loc_range); } } else { cur_loc_range = ecalloc( 1, strlen(loc_range) +1); - //convert to lower and replace hyphuns + /* convert to lower and replace hyphuns */ result = strToMatch(loc_range , cur_loc_range); } - //Lookup for the lang_tag match + /* Lookup for the lang_tag match */ saved_pos = strlen(cur_loc_range); while(saved_pos!=(-1) ){ if( loc_range_to_cmp){ @@ -1562,7 +1527,7 @@ loc_range_to_cmp = estrndup(cur_loc_range,saved_pos+1); for( i=0; i< cur_arr_ind; i++ ){ if( cur_arr[i] && (strcmp(loc_range_to_cmp,cur_arr[i])==0) ){ - //Match found + /* Match found */ return_value = estrdup( cur_arr[i] ); if ( cur_loc_range ){ efree( cur_loc_range ); @@ -1590,19 +1555,19 @@ efree( can_loc_range ); } array_cleanup( cur_arr , cur_arr_len ); - //Match not found + + /* Match not found */ return empty_result; } /* }}} */ -/* {{{ -* public static function lookup(array $langtag, $locale, $default = null) {} +/* {{{ proto string Locale::lookup(array $langtag, $locale[, $default = null]) * Searchs the items in $langtag for the best match to the language * range */ -/* {{{ -* public static function lookup(array $langtag, $locale, $default = null) {} +/* }}} */ +/* {{{ proto string locale_lookup(array $langtag, $locale[, $default = null]) * Searchs the items in $langtag for the best match to the language * range */ @@ -1619,10 +1584,8 @@ char* result =NULL; - intl_error_reset( NULL TSRMLS_CC ); - // Parse parameters. if(zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "asb|s", &arr,&loc_range,&loc_range_len,&boolCanonical, &fallback_loc,&fallback_loc_len) == FAILURE) @@ -1633,11 +1596,11 @@ RETURN_NULL(); } - if(loc_range_len == 0) { - loc_range = UG(default_locale); + loc_range = INTL_G(default_locale); } + /* MAKE_STD_ZVAL(hash_arr); */ hash_arr = HASH_OF( arr ); if( !hash_arr || zend_hash_num_elements( hash_arr ) == 0 ){ @@ -1646,7 +1609,7 @@ else{ result = lookup_loc_range( loc_range ,hash_arr ,(boolCanonical?1:0) TSRMLS_CC); - if( result == NULL || result[0] == '\0' ){ + if(result == NULL || result[0] == '\0') { if( fallback_loc ) { result = estrndup( fallback_loc , fallback_loc_len); } else { @@ -1655,10 +1618,7 @@ } } - RETVAL_STRINGL( result, strlen(result), TRUE ); - if( result){ - efree( result); - } + RETVAL_STRINGL( result, strlen(result), 0); } /* }}} */ @@ -1692,7 +1652,7 @@ &outResult, http_accept, available, &status); uenum_close(available); INTL_CHECK_STATUS(status, "locale_accept_from_http: failed to find acceptable locale"); - if(len < 0 || outResult == ULOC_ACCEPT_FAILED) { + if (len < 0 || outResult == ULOC_ACCEPT_FAILED) { RETURN_FALSE; } RETURN_STRINGL(resultLocale, len, 1); http://cvs.php.net/viewvc.cgi/php-src/ext/intl/locale/locale_methods.h?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/intl/locale/locale_methods.h diff -u php-src/ext/intl/locale/locale_methods.h:1.3 php-src/ext/intl/locale/locale_methods.h:1.4 --- php-src/ext/intl/locale/locale_methods.h:1.3 Wed Jul 23 18:45:10 2008 +++ php-src/ext/intl/locale/locale_methods.h Sun Aug 3 11:32:45 2008 @@ -12,14 +12,15 @@ +----------------------------------------------------------------------+ | Author: Kirti Velankar <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - */ +*/ + +/* $Id: locale_methods.h,v 1.4 2008/08/03 11:32:45 jani Exp $ */ #ifndef LOCALE_METHODS_H #define LOCALE_METHODS_H #include <php.h> - PHP_FUNCTION( locale_get_primary_language ); PHP_FUNCTION( locale_get_script ); PHP_FUNCTION( locale_get_region );
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php