cvs: php-src /sapi/cli php_cli_readline.c

From: Date: Sun, 14 Aug 2005 13:09:37 +0000
Subject: cvs: php-src /sapi/cli php_cli_readline.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-33375@lists.php.net to get a copy of this message
johannes Sun Aug 14 09:09:37 2005 EDT Modified files: /php-src/sapi/cli php_cli_readline.c Log: - Fix tab-completion in unicode mode and for constants. http://cvs.php.net/diff.php/php-src/sapi/cli/php_cli_readline.c?r1=1.3&r2=1.4&ty=u Index: php-src/sapi/cli/php_cli_readline.c diff -u php-src/sapi/cli/php_cli_readline.c:1.3 php-src/sapi/cli/php_cli_readline.c:1.4 --- php-src/sapi/cli/php_cli_readline.c:1.3 Mon Jul 25 14:04:13 2005 +++ php-src/sapi/cli/php_cli_readline.c Sun Aug 14 09:09:34 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_cli_readline.c,v 1.3 2005/07/25 18:04:13 helly Exp $ */ +/* $Id: php_cli_readline.c,v 1.4 2005/08/14 13:09:34 johannes Exp $ */ #include "php.h" #include "php_globals.h" @@ -280,7 +280,7 @@ } while(zend_hash_has_more_elements(ht) == SUCCESS) { zend_hash_get_current_key(ht, &name, &number, 0); - if (!textlen || !strncmp(name, text, textlen)) { + if (!textlen || (UG(unicode) ? !zend_cmp_unicode_and_string((UChar *)name, (char *)text, textlen) : !strncmp(name, text, textlen))) { if (pData) { zend_hash_get_current_data(ht, pData); } @@ -301,10 +301,25 @@ tmp = retval = cli_completion_generator_ht(text + 1, textlen - 1, state, EG(active_symbol_table), NULL TSRMLS_CC); if (retval) { - retval = malloc(strlen(tmp) + 2); - retval[0] = '$'; - strcpy(&retval[1], tmp); - rl_completion_append_character = '\0'; + if (UG(unicode)) { + int32_t tmp_len, len; + UErrorCode status = U_ZERO_ERROR; + + len = u_strlen((UChar *)retval); + zend_convert_from_unicode(ZEND_U_CONVERTER(UG(output_encoding_conv)), &tmp, &tmp_len, + (UChar *)retval, len, &status); + + retval = malloc(tmp_len + 2); + retval[0] = '$'; + strcpy(&retval[1], tmp); + rl_completion_append_character = '\0'; + efree(tmp); + } else { + retval = malloc(strlen(tmp) + 2); + retval[0] = '$'; + strcpy(&retval[1], tmp); + rl_completion_append_character = '\0'; + } } return retval; } /* }}} */ @@ -312,10 +327,26 @@ static char *cli_completion_generator_func(const char *text, int textlen, int *state, HashTable *ht TSRMLS_DC) /* {{{ */ { zend_function *func; - char *retval = cli_completion_generator_ht(text, textlen, state, ht, (void**)&func TSRMLS_CC); + char *retval; + + retval = cli_completion_generator_ht(text, textlen, state, ht, (void**)&func TSRMLS_CC); if (retval) { rl_completion_append_character = '('; - retval = strdup(func->common.function_name); + + if (UG(unicode)) { + char *tmp; + int32_t tmp_len, len; + UErrorCode status = U_ZERO_ERROR; + + len = u_strlen((UChar *)func->common.function_name); + zend_convert_from_unicode(ZEND_U_CONVERTER(UG(output_encoding_conv)), &tmp, &tmp_len, + (UChar *)func->common.function_name, len, &status); + + retval = strdup(tmp); + efree(tmp); + } else { + retval = strdup(func->common.function_name); + } } return retval; @@ -327,7 +358,21 @@ char *retval = cli_completion_generator_ht(text, textlen, state, EG(class_table), (void**)&pce TSRMLS_CC); if (retval) { rl_completion_append_character = '\0'; - retval = strdup((*pce)->name); + + if (UG(unicode)) { + char *tmp; + int32_t tmp_len, len; + UErrorCode status = U_ZERO_ERROR; + + len = u_strlen((UChar *)(*pce)->name); + zend_convert_from_unicode(ZEND_U_CONVERTER(UG(output_encoding_conv)), &tmp, &tmp_len, + (UChar *)(*pce)->name, len, &status); + + retval = strdup(tmp); + efree(tmp); + } else { + retval = strdup((*pce)->name); + } } return retval; @@ -339,7 +384,21 @@ char *retval = cli_completion_generator_ht(text, textlen, state, ht, (void**)&pce TSRMLS_CC); if (retval) { rl_completion_append_character = '\0'; - retval = strdup(retval); + + if (UG(unicode)) { + char *tmp; + int32_t tmp_len, len; + UErrorCode status = U_ZERO_ERROR; + + len = u_strlen((UChar *)retval); + zend_convert_from_unicode(ZEND_U_CONVERTER(UG(output_encoding_conv)), &tmp, &tmp_len, + (UChar *)retval, len, &status); + + retval = strdup(tmp); + efree(tmp); + } else { + retval = strdup(retval); + } } return retval; @@ -396,7 +455,7 @@ } case 2: case 3: - retval = cli_completion_generator_define(lc_text, textlen, &cli_completion_state, pce ? &(*pce)->constants_table : EG(zend_constants) TSRMLS_CC); + retval = cli_completion_generator_define(text, textlen, &cli_completion_state, pce ? &(*pce)->constants_table : EG(zend_constants) TSRMLS_CC); if (retval || pce) { break; }

« previous php.cvs (#33375) next »