ID: 48089
User updated by: wcandillon at gmail dot com
Reported By: wcandillon at gmail dot com
-Status: Feedback
+Status: Open
Bug Type: Readline related
Operating System: All
PHP Version: 5.2.9
New Comment:
--- /Users/wcandillon/readline.c 2009-03-24 11:37:07.000000000 +0100
+++ Desktop/php-5.2.8/ext/readline/readline.c 2009-04-27
15:25:29.000000000 +0200
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5
|
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2009 The PHP Group
|
+ | Copyright (c) 1997-2008 The PHP Group
|
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license,
|
| that is bundled with this package in the file LICENSE, and is
|
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: readline.c,v 1.42.2.3.2.9 2008/12/31 11:17:42 sebastian Exp $
*/
+/* $Id: readline.c,v 1.42.2.3.2.8 2008/11/21 22:48:27 felipe Exp $ */
/* {{{ includes & prototypes */
@@ -48,7 +48,6 @@
PHP_FUNCTION(readline_read_history);
PHP_FUNCTION(readline_write_history);
PHP_FUNCTION(readline_completion_function);
-
#if HAVE_RL_CALLBACK_READ_CHAR
PHP_FUNCTION(readline_callback_handler_install);
PHP_FUNCTION(readline_callback_read_char);
@@ -132,6 +131,8 @@
/* }}} */
+char* no_filename_completion_function(){ return 0; }
+
/* {{{ proto string readline([string prompt])
Reads a line */
PHP_FUNCTION(readline)
@@ -246,8 +247,20 @@
rl_readline_name = strdup(Z_STRVAL_PP(value));;
}
RETVAL_STRING(SAFE_STRING(oldstr),1);
- }
- }
+ } else if (! strcasecmp(Z_STRVAL_PP(what),
"autocomplete_files")) {
+ if (ac == 2 )
+ {
+ //convert_to_bool_ex(value);
+ if(Z_BVAL_PP(value))
+ {
+ rl_completion_entry_function = NULL;
+ } else {
+ rl_completion_entry_function =
no_filename_completion_function;
+ }
+
RETVAL_BOOL(rl_completion_entry_function!=no_filename_completion_function);
+ }
+ }
+ }
}
/* }}} */
@@ -383,7 +396,7 @@
}
}
- return NULL;
+ return ((char *)NULL);
}
static zval *_readline_string_zval(const char *str)
@@ -420,15 +433,19 @@
char **matches = NULL;
TSRMLS_FETCH();
+ //reinit the appended char
+ rl_completion_append_character = ' ';
params[0]=_readline_string_zval(text);
params[1]=_readline_long_zval(start);
params[2]=_readline_long_zval(end);
if (call_user_function(CG(function_table), NULL,
_readline_completion, &_readline_array, 3, params TSRMLS_CC) == SUCCESS)
{
- if (Z_TYPE(_readline_array) == IS_ARRAY) {
+ if (Z_TYPE(_readline_array) == IS_ARRAY ) {
if (zend_hash_num_elements(Z_ARRVAL(_readline_array))) {
matches =
rl_completion_matches(text,_readline_command_generator);
} else {
+ //set the char to null
+ rl_completion_append_character = '\0';
matches = malloc(sizeof(char *) * 2);
matches[0] = strdup("");
matches[1] = '\0';
Previous Comments:
------------------------------------------------------------------------
[2009-04-27 14:01:08] [email protected]
Can you provide patches as a unified diff.
------------------------------------------------------------------------
[2009-04-27 13:42:01] wcandillon at gmail dot com
Here's the patch:
5c5
< | Copyright (c) 1997-2008 The PHP Group
|
---
> | Copyright (c) 1997-2009 The PHP Group
|
19c19
< /* $Id: readline.c,v 1.42.2.3.2.8 2008/11/21 22:48:27 felipe Exp $
*/
---
> /* $Id: readline.c,v 1.42.2.3.2.9 2008/12/31 11:17:42 sebastian Exp $
*/
50a51
>
134,135d134
< char* no_filename_completion_function(){ return 0; }
<
250,263c249,250
< } else if (! strcasecmp(Z_STRVAL_PP(what),
"autocomplete_files"))
{
< if (ac == 2 )
< {
< //convert_to_bool_ex(value);
< if(Z_BVAL_PP(value))
< {
< rl_completion_entry_function = NULL;
< } else {
< rl_completion_entry_function =
no_filename_completion_function;
< }
<
RETVAL_BOOL(rl_completion_entry_function!=no_filename_completion_function);
< }
< }
< }
---
> }
> }
399c386
< return ((char *)NULL);
---
> return NULL;
436,437d422
< //reinit the appended char
< rl_completion_append_character = ' ';
443c428
< if (Z_TYPE(_readline_array) == IS_ARRAY ) {
---
> if (Z_TYPE(_readline_array) == IS_ARRAY) {
447,448d431
< //set the char to null
< rl_completion_append_character = '\0';
------------------------------------------------------------------------
[2009-04-27 13:41:02] wcandillon at gmail dot com
Description:
------------
This patch provides a new mean to mask filesystem autocompletion:
readline_info('autocomplete_files', false);
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48089&edit=1