diff options
author | jani@rhols221.adsl.netsonic.fi <> | 2002-05-14 21:41:55 +0300 |
---|---|---|
committer | jani@rhols221.adsl.netsonic.fi <> | 2002-05-14 21:41:55 +0300 |
commit | 9eda54d1538f2c3caf80deaa1e1a43411893263c (patch) | |
tree | 4ab693251c296105301806199ac0d1ee72bdf62f | |
parent | 438e3debcb1266172f7f30daf9d2dd7d91037646 (diff) | |
download | mariadb-git-9eda54d1538f2c3caf80deaa1e1a43411893263c.tar.gz |
- Added new type GET_STRALC to my_getopt.
- Fixed some bugs, wrongly freed pointers, in some clients.
- Removed unneccessary code.
- Fixed some other minor bugs and added some options into
variables category, which had accidently been left out earlier.
-rw-r--r-- | client/mysql.cc | 55 | ||||
-rw-r--r-- | client/mysqladmin.c | 25 | ||||
-rw-r--r-- | client/mysqlcheck.c | 25 | ||||
-rw-r--r-- | client/mysqldump.c | 65 | ||||
-rw-r--r-- | client/mysqlimport.c | 48 | ||||
-rw-r--r-- | client/mysqlshow.c | 19 | ||||
-rw-r--r-- | include/my_getopt.h | 2 | ||||
-rw-r--r-- | mysys/my_getopt.c | 11 |
8 files changed, 44 insertions, 206 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index 46fcd399ede..84aff39242f 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -41,7 +41,7 @@ #include <signal.h> #include <violite.h> -const char *VER= "12.4"; +const char *VER= "12.5"; /* Don't try to make a nice table if the data is too big */ #define MAX_COLUMN_LENGTH 1024 @@ -458,8 +458,8 @@ static struct my_option my_long_options[] = {"debug", '#', "Output debug log.", (gptr*) &default_dbug_option, (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"database", 'D', "Database to use.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, - 0, 0, 0, 0}, + {"database", 'D', "Database to use.", (gptr*) ¤t_db, + (gptr*) ¤t_db, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"execute", 'e', "Execute command and quit. (Output like with --batch).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"vertical", 'E', "Print the output of a query (rows) vertically.", @@ -478,10 +478,10 @@ static struct my_option my_long_options[] = GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, - {"no-beep", 'b', "Turn off beep on error.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, - 0, 0, 0, 0, 0}, + {"no-beep", 'b', "Turn off beep on error.", (gptr*) &opt_nobeep, + (gptr*) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host", 'h', "Connect to host.", (gptr*) ¤t_host, - (gptr*) ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) ¤t_host, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"html", 'H', "Produce HTML output.", (gptr*) &opt_html, (gptr*) &opt_html, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"xml", 'X', "Produce XML output", (gptr*) &opt_xml, (gptr*) &opt_xml, 0, @@ -527,8 +527,9 @@ static struct my_option my_long_options[] = {"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port, (gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, 0}, - {"prompt", OPT_PROMPT, "Set the mysql prompt to this value.", 0, 0, 0, - GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"prompt", OPT_PROMPT, "Set the mysql prompt to this value.", + (gptr*) ¤t_prompt, (gptr*) ¤t_prompt, 0, GET_STRALC, + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"quick", 'q', "Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file. ", (gptr*) &quick, (gptr*) &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -538,7 +539,8 @@ static struct my_option my_long_options[] = {"silent", 's', "Be more silent.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "Socket file to use for connection.", - 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STRALC, + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include "sslopt-longopts.h" {"table", 't', "Output in table format.", (gptr*) &output_tables, (gptr*) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -549,7 +551,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE {"user", 'u', "User for login if not current user.", (gptr*) ¤t_user, - (gptr*) ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) ¤t_user, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"safe-updates", 'U', "Only allow UPDATE and DELETE that uses keys.", (gptr*) &safe_updates, (gptr*) &safe_updates, 0, GET_BOOL, OPT_ARG, 0, 0, @@ -602,16 +604,13 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), char *argument) { switch(optid) { - case OPT_DEFAULT_CHARSET: - default_charset= argument; - break; case OPT_CHARSETS_DIR: strmov(mysql_charsets_dir, argument); charsets_dir = mysql_charsets_dir; break; case OPT_LOCAL_INFILE: using_opt_local_infile=1; - opt_local_infile= test(!optarg || atoi(optarg)>0); + opt_local_infile= test(!argument || atoi(argument)>0); break; case OPT_TEE: if (argument == disabled_my_option) @@ -646,20 +645,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), printf("WARNING: option depricated; use --disable-pager instead.\n"); opt_nopager= 1; break; - case OPT_PROMPT: - my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR)); - current_prompt=my_strdup(optarg,MYF(MY_FAE)); - break; case 'A': rehash= 0; break; - case 'b': - opt_nobeep = 1; - break; - case 'D': - my_free(current_db, MYF(MY_ALLOW_ZERO_PTR)); - current_db= my_strdup(argument, MYF(MY_WME)); - break; case 'e': status.batch= 1; status.add_to_history= 0; @@ -668,16 +656,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), return 1; ignore_errors= 0; break; - case 'h': - my_free(current_host, MYF(MY_ALLOW_ZERO_PTR)); - current_host= my_strdup(argument, MYF(MY_WME)); - break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - my_free(current_user, MYF(MY_ALLOW_ZERO_PTR)); - current_user= my_strdup(argument, MYF(MY_WME)); - break; -#endif case 'o': if (argument == disabled_my_option) one_database= 0; @@ -726,13 +704,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), opt_silent++; // more silent } break; - case 'P': - opt_mysql_port= (unsigned int) atoi(argument); - break; - case 'S': - my_free(opt_mysql_unix_port, MYF(MY_ALLOW_ZERO_PTR)); - opt_mysql_unix_port= my_strdup(argument, MYF(0)); - break; case 'W': #ifdef __WIN__ opt_mysql_unix_port= my_strdup(MYSQL_NAMEDPIPE, MYF(0)); diff --git a/client/mysqladmin.c b/client/mysqladmin.c index 08ff9546111..6bab465b488 100644 --- a/client/mysqladmin.c +++ b/client/mysqladmin.c @@ -24,7 +24,7 @@ #include <my_pthread.h> /* because of signal() */ #endif -#define ADMIN_VERSION "8.31" +#define ADMIN_VERSION "8.32" #define MAX_MYSQL_VAR 64 #define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */ #define MAX_TRUNC_LENGTH 3 @@ -136,14 +136,15 @@ static struct my_option my_long_options[] = {"silent", 's', "Silently exit if one can't connect to server", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "Socket file to use for connection.", - 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) &unix_port, (gptr*) &unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + 0, 0, 0}, {"sleep", 'i', "Execute commands again and again with a sleep between.", (gptr*) &interval, (gptr*) &interval, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include "sslopt-longopts.h" #ifndef DONT_ALLOW_USER_CHANGE {"user", 'u', "User for login if not current user.", (gptr*) &user, - (gptr*) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) &user, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"verbose", 'v', "Write more information.", (gptr*) &opt_verbose, (gptr*) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -174,10 +175,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), int error = 0; switch(optid) { - case 'h': - host = argument; - break; - case 'q': /* Allow old 'q' option */ case 'p': if (argument) { @@ -191,23 +188,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else tty_password=1; break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - user= my_strdup(argument,MYF(0)); - break; -#endif - case 'i': - interval=atoi(argument); - break; - case 'P': - tcp_port= (unsigned int) atoi(argument); - break; case 's': option_silent++; break; - case 'S': - unix_port= argument; - break; case 'W': #ifdef __WIN__ unix_port=MYSQL_NAMEDPIPE; diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 8717b40fddd..dec002bff17 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -16,7 +16,7 @@ /* By Jani Tolonen, 2001-04-20, MySQL Development Team */ -#define CHECK_VERSION "2.1" +#define CHECK_VERSION "2.2" #include "client_priv.h" #include <my_getopt.h> @@ -94,7 +94,7 @@ static struct my_option my_long_options[] = {"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host",'h', "Connect to host.", (gptr*) ¤t_host, - (gptr*) ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) ¤t_host, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"medium-check", 'm', "Faster than extended-check, but only finds 99.99 percent of all errors. Should be good enough for most cases.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -199,12 +199,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case 'a': what_to_do = DO_ANALYZE; break; - case OPT_DEFAULT_CHARSET: - default_charset = argument; - break; - case OPT_CHARSETS_DIR: - charsets_dir = argument; - break; case 'c': what_to_do = DO_CHECK; break; @@ -216,10 +210,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case '?': usage(); exit(0); - case 'h': - my_free(current_host, MYF(MY_ALLOW_ZERO_PTR)); - current_host = my_strdup(argument, MYF(MY_WME)); - break; case 'm': what_to_do = DO_CHECK; opt_medium_check = 1; @@ -227,11 +217,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case 'o': what_to_do = DO_OPTIMIZE; break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - current_user = argument; - break; -#endif case 'p': if (argument) { @@ -245,15 +230,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else tty_password = 1; break; - case 'P': - opt_mysql_port = (unsigned int) atoi(argument); - break; case 'r': what_to_do = DO_REPAIR; break; - case 'S': - opt_mysql_unix_port = argument; - break; case 'W': #ifdef __WIN__ opt_mysql_unix_port = MYSQL_NAMEDPIPE; diff --git a/client/mysqldump.c b/client/mysqldump.c index a9422fbba78..ca4821e883f 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -35,7 +35,7 @@ ** and adapted to mysqldump 05/11/01 by Jani Tolonen */ -#define DUMP_VERSION "9.03" +#define DUMP_VERSION "9.04" #include <my_global.h> #include <my_sys.h> @@ -97,8 +97,9 @@ static struct my_option my_long_options[] = "Dump all the databases. This will be same as --databases with all databases selected.", (gptr*) &opt_alldbs, (gptr*) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"all", 'a', "Include all MySQL specific create options.", 0, 0, 0, - GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"all", 'a', "Include all MySQL specific create options.", + (gptr*) &create_options, (gptr*) &create_options, 0, GET_BOOL, NO_ARG, 0, + 0, 0, 0, 0, 0}, {"add-drop-table", OPT_DROP, "Add a 'drop table' before each create.", (gptr*) &opt_drop, (gptr*) &opt_drop, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -111,8 +112,8 @@ static struct my_option my_long_options[] = {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are", (gptr*) &charsets_dir, (gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"complete-insert", 'c', "Use complete insert statements.", 0, 0, 0, - GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"complete-insert", 'c', "Use complete insert statements.", (gptr*) &cFlag, + (gptr*) &cFlag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", (gptr*) &opt_compress, (gptr*) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -158,7 +159,7 @@ static struct my_option my_long_options[] = {"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host", 'h', "Connect to host.", (gptr*) ¤t_host, - (gptr*) ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (gptr*) ¤t_host, 0, GET_STRALC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lines-terminated-by", OPT_LTB, "Lines in the i.file are terminated by ...", (gptr*) &lines_terminated, (gptr*) &lines_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -176,9 +177,9 @@ static struct my_option my_long_options[] = (gptr*) &opt_create_db, (gptr*) &opt_create_db, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-create-info", 't', "Don't write table creation info.", - 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"no-data", 'd', "No row information.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, - 0, 0, 0, 0}, + (gptr*) &tFlag, (gptr*) &tFlag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"no-data", 'd', "No row information.", (gptr*) &dFlag, (gptr*) &dFlag, 0, + GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is depricated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -301,24 +302,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), opt_master_data=1; opt_first_slave=1; break; - case 'a': - create_options=1; - break; - case OPT_DEFAULT_CHARSET: - default_charset= argument; - break; - case OPT_CHARSETS_DIR: - charsets_dir= argument; - break; - case 'h': - my_free(current_host,MYF(MY_ALLOW_ZERO_PTR)); - current_host=my_strdup(argument,MYF(MY_WME)); - break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - current_user=argument; - break; -#endif case 'p': if (argument) { @@ -332,36 +315,23 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else tty_password=1; break; - case 'P': - opt_mysql_port= (unsigned int) atoi(argument); - break; case 'r': if (!(md_result_file = my_fopen(argument, O_WRONLY | O_BINARY, MYF(MY_WME)))) exit(1); break; - case 'S': - opt_mysql_unix_port= argument; - break; case 'W': #ifdef __WIN__ opt_mysql_unix_port=MYSQL_NAMEDPIPE; #endif break; case 'T': - path= argument; opt_disable_keys=0; break; case '#': DBUG_PUSH(argument ? argument : "d:t:o"); break; - case 'c': cFlag=1; break; - case 'd': dFlag=1; break; - case 't': tFlag=1; break; case 'V': print_version(); exit(0); - case 'w': - where=argument; - break; case 'X': opt_xml = 1; opt_disable_keys=0; @@ -370,21 +340,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case '?': usage(); exit(0); - case (int) OPT_FTB: - fields_terminated= argument; - break; - case (int) OPT_LTB: - lines_terminated= argument; - break; - case (int) OPT_ENC: - enclosed= argument; - break; - case (int) OPT_O_ENC: - opt_enclosed= argument; - break; - case (int) OPT_ESC: - escaped= argument; - break; case (int) OPT_OPTIMIZE: extended_insert=opt_drop=opt_lock=lock_tables=quick=create_options= opt_disable_keys=1; diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 89b6a1b7e63..af12b8dafc5 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -25,7 +25,7 @@ ** * * ** ************************* */ -#define IMPORT_VERSION "3.1" +#define IMPORT_VERSION "3.2" #include "client_priv.h" #include "mysql_version.h" @@ -90,8 +90,9 @@ static struct my_option my_long_options[] = (gptr*) ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ignore", 'i', "If duplicate unique key was found, keep old row.", (gptr*) &ignore, (gptr*) &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.", 0, 0, - 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.", + (gptr*) &opt_ignore_lines, (gptr*) &opt_ignore_lines, 0, GET_STR, + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lines-terminated-by", OPT_LTB, "Lines in the i.file are terminated by ...", (gptr*) &lines_terminated, (gptr*) &lines_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -166,23 +167,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), char *argument) { switch(optid) { - case 'c': - opt_columns= argument; - break; - case OPT_DEFAULT_CHARSET: - default_charset= argument; - break; - case OPT_CHARSETS_DIR: - charsets_dir= argument; - break; - case 'h': - current_host= argument; - break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - current_user= argument; - break; -#endif case 'p': if (argument) { @@ -196,12 +180,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else tty_password= 1; break; - case 'P': - opt_mysql_port= (unsigned int) atoi(argument); - break; - case 'S': - opt_mysql_unix_port= argument; - break; #ifdef __WIN__ case 'W': opt_mysql_unix_port=MYSQL_NAMEDPIPE; @@ -216,24 +194,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case '?': usage(); exit(0); - case (int) OPT_FTB: - fields_terminated= argument; - break; - case (int) OPT_LTB: - lines_terminated= argument; - break; - case (int) OPT_ENC: - enclosed= argument; - break; - case (int) OPT_O_ENC: - opt_enclosed= argument; - break; - case (int) OPT_ESC: - escaped= argument; - break; - case (int) OPT_IGN_LINES: - opt_ignore_lines= argument; - break; #include "sslopt-case.h" } return 0; diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 95d94e5feda..c89995ddb8d 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -16,7 +16,7 @@ /* Show databases, tables or columns */ -#define SHOW_VERSION "9.1" +#define SHOW_VERSION "9.2" #include <my_global.h> #include "client_priv.h" @@ -198,15 +198,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), char *argument) { switch(optid) { - case 'c': - charsets_dir= argument; - break; case 'v': opt_verbose++; break; - case 'h': - host = argument; - break; case 'p': if (argument) { @@ -220,17 +214,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), else tty_password=1; break; -#ifndef DONT_ALLOW_USER_CHANGE - case 'u': - user=argument; - break; -#endif - case 'P': - opt_mysql_port= (unsigned int) atoi(argument); - break; - case 'S': - opt_mysql_unix_port= argument; - break; case 'W': #ifdef __WIN__ opt_mysql_unix_port=MYSQL_NAMEDPIPE; diff --git a/include/my_getopt.h b/include/my_getopt.h index 085dfaaac73..d3644daff36 100644 --- a/include/my_getopt.h +++ b/include/my_getopt.h @@ -17,7 +17,7 @@ C_MODE_START enum get_opt_var_type { GET_NO_ARG, GET_BOOL, GET_INT, GET_UINT, GET_LONG, - GET_ULONG, GET_LL, GET_ULL, GET_STR }; + GET_ULONG, GET_LL, GET_ULL, GET_STR, GET_STRALC }; enum get_opt_arg_type { NO_ARG, OPT_ARG, REQUIRED_ARG }; struct my_option diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index 9b516559936..d6aebbe4f75 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -19,6 +19,7 @@ #include <stdlib.h> #include <my_getopt.h> #include <assert.h> +#include <my_sys.h> static int findopt (char *optpat, uint length, const struct my_option **opt_res, @@ -423,6 +424,12 @@ static int setval (const struct my_option *opts, char *argument, *((ulonglong*) result_pos)= getopt_ull(argument, opts, &err); else if (opts->var_type == GET_STR) *((char**) result_pos)= argument; + else if (opts->var_type == GET_STRALC) + { + if ((*((char**) result_pos))) + my_free((*(char**) result_pos), MYF(MY_ALLOW_ZERO_PTR)); + *((char**) result_pos)= my_strdup(argument, MYF(MY_WME)); + } if (err) return ERR_UNKNOWN_SUFFIX; } @@ -627,7 +634,7 @@ void my_print_help(const struct my_option *options) } printf("--%s", optp->name); col+= 2 + strlen(optp->name); - if (optp->var_type == GET_STR) + if (optp->var_type == GET_STR || optp->var_type == GET_STRALC) { printf("%s=name%s ", optp->arg_type == OPT_ARG ? "[" : "", optp->arg_type == OPT_ARG ? "]" : ""); @@ -694,7 +701,7 @@ void my_print_variables(const struct my_option *options) length= strlen(optp->name); for (; length < name_space; length++) putchar(' '); - if (optp->var_type == GET_STR) + if (optp->var_type == GET_STR || optp->var_type == GET_STRALC) { if (*((char**) optp->value)) printf("%s\n", *((char**) optp->value)); |