static zend_off_t getSingletonPos(const char* str)
{
zend_off_t result =-1;
- zend_off_t i=0;
size_t len = 0;
if( str && ((len=strlen(str))>0) ){
+ zend_off_t i = 0;
for( i=0; (size_t)i < len ; i++){
if( isIDSeparator(*(str+i)) ){
if( i==1){
zend_string* tag_value = NULL;
int32_t tag_value_len = 512;
- zend_off_t singletonPos = 0;
char* mod_loc_name = NULL;
- zend_off_t grOffset = 0;
int32_t buflen = 512;
UErrorCode status = U_ZERO_ERROR;
if( strcmp(tag_name, LOC_CANONICALIZE_TAG) != 0 ){
/* Handle grandfathered languages */
- grOffset = findOffset( LOC_GRANDFATHERED , loc_name );
+ zend_off_t grOffset = findOffset( LOC_GRANDFATHERED , loc_name );
if( grOffset >= 0 ){
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
return zend_string_init(loc_name, strlen(loc_name), 0);
}
if( fromParseLocale==1 ){
+ zend_off_t singletonPos = 0;
+
/* Handle singletons */
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
if( strlen(loc_name)>1 && (isIDPrefix(loc_name) == 1) ){
zend_string* u8str;
char* msg = NULL;
- int grOffset = 0;
intl_error_reset( NULL );
if( strcmp(tag_name, DISP_NAME) != 0 ){
/* Handle grandfathered languages */
- grOffset = findOffset( LOC_GRANDFATHERED , loc_name );
+ int grOffset = findOffset( LOC_GRANDFATHERED , loc_name );
if( grOffset >= 0 ){
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
mod_loc_name = getPreferredTag( loc_name );
const char* loc_name = NULL;
size_t loc_name_len = 0;
-/*
- ICU expects the buffer to be allocated before calling the function
- and so the buffer size has been explicitly specified
- ICU uloc.h #define ULOC_KEYWORD_AND_VALUES_CAPACITY 100
- hence the kw_value buffer size is 100
-*/
- zend_string *kw_value_str;
- int32_t kw_value_len = 100;
-
intl_error_reset( NULL );
if(zend_parse_parameters( ZEND_NUM_ARGS(), "s",
e = uloc_openKeywords( loc_name, &status );
if( e != NULL )
{
+ /*
+ ICU expects the buffer to be allocated before calling the function
+ and so the buffer size has been explicitly specified
+ ICU uloc.h #define ULOC_KEYWORD_AND_VALUES_CAPACITY 100
+ hence the kw_value buffer size is 100
+ */
+
/* Traverse it, filling the return array. */
array_init( return_value );
while( ( kw_key = uenum_next( e, &kw_key_len, &status ) ) != NULL ){
- kw_value_len = 100;
- kw_value_str = zend_string_alloc(kw_value_len, 0);
+ int32_t kw_value_len = 100;
+ zend_string *kw_value_str = zend_string_alloc(kw_value_len, 0);
/* Get the keyword value for each keyword */
kw_value_len=uloc_getKeywordValue( loc_name, kw_key, ZSTR_VAL(kw_value_str), kw_value_len, &status );
static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr, char* key_name)
{
zval *ele_value;
- int i = 0;
int isFirstSubtag = 0;
- int max_value = 0;
/* Variant/ Extlang/Private etc. */
if ((ele_value = zend_hash_str_find( hash_arr , key_name , strlen(key_name))) != NULL) {
}
} else {
char cur_key_name[31];
+ int max_value = 0, i;
/* Decide the max_value: the max. no. of elements allowed */
if( strcmp(key_name , LOC_VARIANT_TAG) ==0 ){
max_value = MAX_NO_VARIANT;
static zend_string* get_private_subtags(const char* loc_name)
{
zend_string* result = NULL;
- zend_off_t singletonPos = 0;
size_t len = 0;
const char* mod_loc_name =NULL;
if( loc_name && (len = strlen(loc_name)>0 ) ){
+ zend_off_t singletonPos = 0;
mod_loc_name = loc_name ;
len = strlen(mod_loc_name);
while( (singletonPos = getSingletonPos(mod_loc_name)) > -1){
int result = 0;
int cur_result = 0;
- int cnt = 0;
if( strcmp(key_name , LOC_PRIVATE_TAG)==0 ){
if( (strcmp(key_name , LOC_PRIVATE_TAG)==0) ||
( strcmp(key_name , LOC_VARIANT_TAG)==0) ){
if( result > 0 && key_value){
+ int cnt = 0;
/* Tokenize on the "_" or "-" */
token = php_strtok_r( key_value->val , DELIMITER ,&last_ptr);
if( cur_key_name ){