summaryrefslogtreecommitdiff
path: root/client/mysql.cc
diff options
context:
space:
mode:
authorunknown <pem@mysql.com>2003-04-04 13:45:35 +0200
committerunknown <pem@mysql.com>2003-04-04 13:45:35 +0200
commitb60e6bcf2d876b8f0591a40f93946dcf2fafe99f (patch)
treef4f9ee455be6e05171fe74e04042708e983446b8 /client/mysql.cc
parent094d141b106bf0b2bdedc0494376528e6b8f0015 (diff)
parentfc448ccb7fba68f874edd8f33ec401873a1b4e1d (diff)
downloadmariadb-git-b60e6bcf2d876b8f0591a40f93946dcf2fafe99f.tar.gz
Merging 4.1 to 5.0.
BitKeeper/etc/gone: auto-union BitKeeper/etc/logging_ok: auto-union client/mysql.cc: Auto merged mysql-test/r/show_check.result: Auto merged mysql-test/r/subselect.result: Auto merged mysql-test/r/variables.result: Auto merged sql/item.cc: Auto merged sql/lex.h: Auto merged sql/log.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_load.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged sql/share/swedish/errmsg.txt: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'client/mysql.cc')
-rw-r--r--client/mysql.cc46
1 files changed, 40 insertions, 6 deletions
diff --git a/client/mysql.cc b/client/mysql.cc
index 05dfefbfec9..9881f7cf7cd 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -104,6 +104,7 @@ extern "C" {
#include "completion_hash.h"
#define PROMPT_CHAR '\\'
+#define DEFAULT_DELIMITER ';'
typedef struct st_status
{
@@ -156,6 +157,7 @@ static char pager[FN_REFLEN], outfile[FN_REFLEN];
static FILE *PAGER, *OUTFILE;
static MEM_ROOT hash_mem_root;
static uint prompt_counter;
+static char delimiter= DEFAULT_DELIMITER;
#ifdef HAVE_SMEM
static char *shared_memory_base_name=0;
@@ -183,7 +185,7 @@ static int com_quit(String *str,char*),
com_use(String *str,char*), com_source(String *str, char*),
com_rehash(String *str, char*), com_tee(String *str, char*),
com_notee(String *str, char*),
- com_prompt(String *str, char*);
+ com_prompt(String *str, char*), com_delimiter(String *str, char*);
#ifdef USE_POPEN
static int com_nopager(String *str, char*), com_pager(String *str, char*),
@@ -251,7 +253,8 @@ static COMMANDS commands[] = {
"Set outfile [to_outfile]. Append everything into given outfile." },
{ "use", 'u', com_use, 1,
"Use another database. Takes database name as argument." },
-
+ { "delimiter", 'd', com_delimiter, 1,
+ "Set query delimiter. " },
/* Get bash-like expansion for some commands */
{ "create table", 0, 0, 0, ""},
{ "create database", 0, 0, 0, ""},
@@ -921,7 +924,7 @@ static COMMANDS *find_command (char *name,char cmd_char)
{
while (my_isspace(charset_info,*name))
name++;
- if (strchr(name,';') || strstr(name,"\\g"))
+ if (strchr(name, delimiter) || strstr(name,"\\g"))
return ((COMMANDS *) 0);
if ((end=strcont(name," \t")))
{
@@ -1000,7 +1003,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
return 1; // Quit
if (com->takes_params)
{
- for (pos++ ; *pos && *pos != ';' ; pos++) ; // Remove parameters
+ for (pos++ ; *pos && *pos != delimiter; pos++) ; // Remove parameters
if (!*pos)
pos--;
}
@@ -1016,7 +1019,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
continue;
}
}
- else if (!*ml_comment && inchar == ';' && !*in_string)
+ else if (!*ml_comment && inchar == delimiter && !*in_string)
{ // ';' is end of command
if (out != line)
buffer.append(line,(uint) (out-line)); // Add this line
@@ -1533,7 +1536,7 @@ com_help(String *buffer __attribute__((unused)),
for (i = 0; commands[i].name; i++)
{
if (commands[i].func)
- tee_fprintf(stdout, "%s\t(\\%c)\t%s\n", commands[i].name,
+ tee_fprintf(stdout, "%-10s(\\%c)\t%s\n", commands[i].name,
commands[i].cmd_char, commands[i].doc);
}
}
@@ -2345,6 +2348,37 @@ static int com_source(String *buffer, char *line)
return error;
}
+ /* ARGSUSED */
+static int
+com_delimiter(String *buffer __attribute__((unused)), char *line)
+{
+ char *tmp;
+ char buff[256];
+
+ if (strlen(line)> 255)
+ {
+ put_info("'DELIMITER' command was too long.", INFO_ERROR);
+ return 0;
+ }
+ bzero(buff, sizeof(buff));
+ strmov(buff, line);
+ tmp= get_arg(buff, 0);
+
+ if (!tmp || !*tmp)
+ {
+ put_info("DELIMITER must be followed by a 'delimiter' char", INFO_ERROR);
+ return 0;
+ }
+
+ if (strlen(tmp)> 1)
+ {
+ put_info("Argument must be one char", INFO_ERROR);
+ return 0;
+ }
+
+ delimiter= *tmp;
+ return 0;
+}
/* ARGSUSED */
static int