diff options
author | unknown <serg@serg.mylan> | 2005-09-21 13:53:22 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2005-09-21 13:53:22 +0200 |
commit | aa7bc459f7b4854d032b5605f73f7faa1fad5b2b (patch) | |
tree | 29a5373cf28e87e844da3557b032013adcdbcbe8 /client/mysql.cc | |
parent | 56264f9a5c795d741ce29a85327434b0c9b5f3a3 (diff) | |
parent | 30681cf509f455506b8ff809369561734fdc82c2 (diff) | |
download | mariadb-git-aa7bc459f7b4854d032b5605f73f7faa1fad5b2b.tar.gz |
merged
VC++Files/mysys/mysys.dsp:
Auto merged
VC++Files/mysys/mysys_ia64.dsp:
Auto merged
client/mysql.cc:
Auto merged
include/my_sys.h:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/myisamchk.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/rpl_multi_delete2.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/rpl_multi_delete2-slave.opt:
Auto merged
mysql-test/t/rpl_multi_delete2.test:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
Diffstat (limited to 'client/mysql.cc')
-rw-r--r-- | client/mysql.cc | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index f4361f77f4c..05dfcbeccba 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -959,10 +959,15 @@ static int get_options(int argc, char **argv) static int read_and_execute(bool interactive) { -#if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) +#if defined(OS2) || defined(__NETWARE__) char linebuffer[254]; String buffer; #endif +#if defined(__WIN__) + String tmpbuf; + String buffer; +#endif + char *line; char in_string=0; ulong line_number=0; @@ -993,7 +998,7 @@ static int read_and_execute(bool interactive) #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) tee_fputs(prompt, stdout); -#ifdef __NETWARE__ +#if defined(__NETWARE__) line=fgets(linebuffer, sizeof(linebuffer)-1, stdin); /* Remove the '\n' */ if (line) @@ -1002,7 +1007,22 @@ static int read_and_execute(bool interactive) if (p != NULL) *p = '\0'; } -#else +#elif defined(__WIN__) + if (!tmpbuf.is_alloced()) + tmpbuf.alloc(65535); + buffer.length(0); + unsigned long clen; + do + { + line= my_cgets(tmpbuf.c_ptr(), tmpbuf.alloced_length(), &clen); + buffer.append(line, clen); + /* + if we got buffer fully filled than there is a chance that + something else is still in console input buffer + */ + } while (tmpbuf.alloced_length() <= clen + 1); + line= buffer.c_ptr(); +#else /* OS2 */ buffer.length(0); /* _cgets() expects the buffer size - 3 as the first byte */ linebuffer[0]= (char) sizeof(linebuffer) - 3; @@ -1078,9 +1098,14 @@ static int read_and_execute(bool interactive) status.exit_status=0; } } + #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) buffer.free(); #endif +#if defined( __WIN__) + tmpbuf.free(); +#endif + return status.exit_status; } |