=== modified file 'client/mysql.cc' --- client/mysql.cc 2009-03-24 13:58:52 +0000 +++ client/mysql.cc 2009-05-26 15:40:47 +0000 @@ -179,6 +179,7 @@ static FILE *PAGER, *OUTFILE; static MEM_ROOT hash_mem_root; static uint prompt_counter; +static my_bool prompt_as_comment= 0; static char delimiter[16]= DEFAULT_DELIMITER; static uint delimiter_length= 1; @@ -1838,13 +1839,51 @@ } else { - char *prompt= (char*) (ml_comment ? " /*> " : - glob_buffer.is_empty() ? construct_prompt() : - !in_string ? " -> " : - in_string == '\'' ? - " '> " : (in_string == '`' ? - " `> " : - " \"> ")); + char *prompt; + if (ml_comment) + { + /* a start of multi-line comment inside a ml comment is OK */ + prompt= (char*) " /*> "; + } + else if (glob_buffer.is_empty()) + prompt= (char*) construct_prompt(); + else if (!in_string) + { + if (prompt_as_comment) + prompt= (char*) "/* -> */ "; + else + prompt= (char*) " -> "; + } + else + { + switch (in_string) { + case '\'': + if (prompt_as_comment) + prompt= (char*) "/* '> */ "; + else + prompt= (char*) " '> "; + break; + case '`': + if (prompt_as_comment) + prompt= (char*) "/* `> */ "; + else + prompt= (char*) " `> "; + break; + case '"': + if (prompt_as_comment) + prompt= (char*) "/* \"> */ "; + else + prompt= (char*) " \"> "; + break; + default: + DBUG_ASSERT(0); + if (prompt_as_comment) + prompt= (char*) "/* ?> */ "; + else + prompt= (char*) " ?> "; + break; + } + } if (opt_outfile && glob_buffer.is_empty()) fflush(OUTFILE); @@ -4619,6 +4658,8 @@ time_t lclock = time(NULL); // Get the date struct struct tm *t = localtime(&lclock); + prompt_as_comment= 0; + /* parse thru the settings for the prompt */ for (char *c = current_prompt; *c ; *c++) { @@ -4633,6 +4674,13 @@ case 'c': add_int_to_prompt(++prompt_counter); break; + case 'C': + if (processed_prompt.length() == 0) + { + processed_prompt.append("/*"); + prompt_as_comment= 1; + } + break; case 'v': if (connected) processed_prompt.append(mysql_get_server_info(&mysql)); @@ -4773,6 +4821,10 @@ } } } + + if (prompt_as_comment) + processed_prompt.append("*/ "); + processed_prompt.append('\0'); return processed_prompt.ptr(); }