]> granicus.if.org Git - php/commitdiff
- Fix readline loop-condition
authorJohannes Schlüter <johannes@php.net>
Tue, 17 May 2005 14:33:15 +0000 (14:33 +0000)
committerJohannes Schlüter <johannes@php.net>
Tue, 17 May 2005 14:33:15 +0000 (14:33 +0000)
- Fix cli_is_valid_code detection

sapi/cli/php_cli.c
sapi/cli/php_cli_readline.c

index e7a620980d7bfa908775a6e1015f1619dc75446f..165b7e1c69f4898a06d299da6fcf426864dc6819 100644 (file)
@@ -978,12 +978,11 @@ int main(int argc, char *argv[])
 
                                history_file = tilde_expand("~/.php_history");
                                rl_attempted_completion_function = cli_code_completion;
-                               /*rl_completion_append_character = '(';*/
                                rl_special_prefixes = "$";
                                read_history(history_file);
 
                                EG(exit_status) = 0;
-                               while ((line = readline(pos ? prompt : "php > ")) != NULL) {
+                               while ((line = readline(prompt)) != NULL) {
                                        if (strcmp(line, "exit") == 0 || strcmp(line, "quit") == 0) {
                                                free(line);
                                                break;
index d10d664a81c62982f82fc57e99d84c9198faea70..23bfea2401922b05ce274c0f34fc064daba054be 100644 (file)
@@ -73,7 +73,7 @@ typedef enum {
 
 int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC)
 {
-       int valid_end = 1;
+       int valid_end = 1, last_valid_end;
        int brackets_count = 0;
        int brace_count = 0;
        int i;
@@ -109,6 +109,7 @@ int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC)
                                                valid_end = brace_count == 0 && brackets_count == 0;
                                                break;
                                        case ' ':
+                                       case '\r':
                                        case '\n':
                                        case '\t':
                                                break;
@@ -118,6 +119,9 @@ int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC)
                                        case '"':
                                                code_type = dstring;
                                                break;
+                                       case '#':
+                                               code_type = comment_line;
+                                               break;
                                        case '/':
                                                if (code[i+1] == '/') {
                                                        i++;
@@ -125,6 +129,8 @@ int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC)
                                                        break;
                                                }
                                                if (code[i+1] == '*') {
+                                                       last_valid_end = valid_end;
+                                                       valid_end = 0;
                                                        code_type = comment_block;
                                                        i++;
                                                        break;
@@ -190,6 +196,7 @@ int cli_is_valid_code(char *code, int len, char **prompt TSRMLS_DC)
                        case comment_block:
                                if (code[i-1] == '*' && code[i] == '/') {
                                        code_type = body;
+                                       valid_end = last_valid_end;
                                }
                                break;
                        case heredoc_start: