+++ /dev/null
-From: Daniel FischerDate: December 8 2006 10:23am
-Subject: bk commit into 5.0 tree (df:1.2327)
-
-Below is the list of changes that have just been committed into a local
-5.0 repository of df. When df does a push these changes will
-be propagated to the main repository and, within 24 hours after the
-push, to the public repository.
-For information on how to access the public repository
-see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
-
-ChangeSet@stripped, 2006-12-08 10:23:03+01:00, df@stripped +1 -0
- mysql_upgrade -p fix
-
- client/mysql_upgrade.c@stripped, 2006-12-08 10:23:01+01:00, df@stripped +11 -1
- BUG#24896 mysql_upgrade core dumps on RHEL3 using 5.0.30 commerical binaries
-
-# This is a BitKeeper patch. What follows are the unified diffs for the
-# set of deltas contained in the patch. The rest of the patch, the part
-# that BitKeeper cares about, is below these diffs.
-# User: df
-# Host: kahlann.erinye.com
-# Root: /home/df/mysql/build/mysql-5.0-build-24896
-
---- 1.11/client/mysql_upgrade.c 2006-11-23 11:38:42 +01:00
-+++ 1.12/client/mysql_upgrade.c 2006-12-08 10:23:01 +01:00
-@@ -142,6 +142,7 @@ void set_extra_default(int id, const str
- case 'f': /* --force is ours */
- case 'u': /* --user passed on cmdline */
- case 'T': /* --debug-info is not accepted by mysqlcheck */
-+ case 'p': /* --password may change yet */
- /* so, do nothing */
- break;
- default:
-@@ -173,7 +174,7 @@ void set_extra_default(int id, const str
- d->id= id;
- d->name= opt->name;
- d->n_len= strlen(opt->name);
-- if (opt->arg_type != NO_ARG)
-+ if (opt->arg_type != NO_ARG && opt->value)
- switch (opt->var_type & GET_TYPE_MASK) {
- case GET_BOOL:
- if (*((int *)opt->value))
-@@ -319,6 +320,15 @@ static int create_defaults_file(const ch
- }
-
- dynstr_set(&buf, "\n[client]");
-+ if (opt_password)
-+ {
-+ if (dynstr_append_mem(&buf, "\npassword=", 10)
-+ || dynstr_append_mem(&buf, opt_password, strlen(opt_password)))
-+ {
-+ ret = 1;
-+ goto error;
-+ }
-+ }
- while (extra_defaults)
- {
- int len;
+++ /dev/null
-From: Ignacio GalarzaDate: December 14 2006 5:34pm
-Subject: bk commit into 5.0 tree (iggy:1.2355) BUG#22807
-
-Below is the list of changes that have just been committed into a local
-5.0 repository of iggy. When iggy does a push these changes will
-be propagated to the main repository and, within 24 hours after the
-push, to the public repository.
-For information on how to access the public repository
-see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
-
-ChangeSet@stripped, 2006-12-14 11:33:46-05:00, iggy@alf. +3 -0
- Bug#22807 mysql_upgrade fails when called with a basedir-path containing spaces
- - Create space safe strings for system() calls in mysql_upgrade.exe
-
- client/mysql_upgrade.c@stripped, 2006-12-14 11:32:53-05:00, iggy@alf. +61 -23
- Bug#22807 mysql_upgrade fails when called with a basedir-path containing spaces
- - Make use of new dynstr_append_os_quoted function to produce a string safe for
- passing to the system() function.
- - Refactor possible source of assertion.
-
- include/my_sys.h@stripped, 2006-12-14 11:32:53-05:00, iggy@alf. +2 -0
- Bug#22807 mysql_upgrade fails when called with a basedir-path containing spaces
- - Declare dynstr_append_os_quoted function.
-
- mysys/string.c@stripped, 2006-12-14 11:32:54-05:00, iggy@alf. +39 -0
- Bug#22807 mysql_upgrade fails when called with a basedir-path containing spaces
- - Define dynstr_append_os_quoted function. This function will concatenate any
- number of strings, escapes any OS quote in the result then surround the whole
- affair in another set of quotes which is finally appended to specified
- DYNAMIC_STRING.
-
-# This is a BitKeeper patch. What follows are the unified diffs for the
-# set of deltas contained in the patch. The rest of the patch, the part
-# that BitKeeper cares about, is below these diffs.
-# User: iggy
-# Host: alf.
-# Root: D:/src/mysql-5.0-maint_22807
-
---- 1.190/include/my_sys.h 2006-12-14 11:33:58 -05:00
-+++ 1.191/include/my_sys.h 2006-12-14 11:33:58 -05:00
-@@ -781,6 +781,8 @@
- extern my_bool dynstr_append(DYNAMIC_STRING *str, const char *append);
- my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append,
- uint length);
-+extern my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,
-+ ...);
- extern my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str);
- extern my_bool dynstr_realloc(DYNAMIC_STRING *str, ulong additional_size);
- extern void dynstr_free(DYNAMIC_STRING *str);
-
---- 1.8/mysys/string.c 2006-12-14 11:33:58 -05:00
-+++ 1.9/mysys/string.c 2006-12-14 11:33:58 -05:00
-@@ -116,6 +116,45 @@
- }
-
-
-+my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append, ...)
-+{
-+#ifdef __WIN__
-+ char quote_str[]= "\"";
-+#else
-+ char quote_str[]= "\'";
-+#endif /* __WIN__ */
-+ my_bool ret= TRUE;
-+ va_list dirty_text;
-+
-+ ret&= dynstr_append(str, quote_str); /* Leading quote */
-+ va_start(dirty_text,append);
-+ while (append != NullS)
-+ {
-+ char *cur_pos= append;
-+ char *next_pos= cur_pos;
-+
-+ /* Search for quote in each string and replace with escaped quote */
-+ while(*(next_pos= strcend(cur_pos, quote_str[0])) != '\0')
-+ {
-+ char *tmp_buff= my_malloc((next_pos - cur_pos) + 1, MYF(MY_ZEROFILL));
-+ strnmov(tmp_buff, cur_pos, (next_pos - cur_pos));
-+ ret&= dynstr_append(str, tmp_buff);
-+ my_free((gptr)tmp_buff, MYF(0));
-+
-+ ret&= dynstr_append(str ,"\\");
-+ ret&= dynstr_append(str, quote_str);
-+ cur_pos= next_pos + 1;
-+ }
-+ ret&= dynstr_append(str, cur_pos);
-+ append= va_arg(dirty_text, char *);
-+ }
-+ va_end(dirty_text);
-+ ret&= dynstr_append(str, quote_str); /* Trailing quote */
-+
-+ return ret;
-+}
-+
-+
- void dynstr_free(DYNAMIC_STRING *str)
- {
- if (str->str)
-
---- 1.14/client/mysql_upgrade.c 2006-12-14 11:33:58 -05:00
-+++ 1.15/client/mysql_upgrade.c 2006-12-14 11:33:58 -05:00
-@@ -461,19 +461,20 @@
-
- load_defaults("my", load_default_groups, &argc, &argv);
-
-- if (handle_options(&argc, &argv, my_long_options, get_one_option))
-+ /*
-+ Must init_dynamic_string before handle_options because string is freed
-+ at error label.
-+ */
-+ if (init_dynamic_string(&cmdline, NULL, 2 * FN_REFLEN + 128, FN_REFLEN) ||
-+ handle_options(&argc, &argv, my_long_options, get_one_option))
- {
- ret= 1;
- goto error;
- }
-+
- if (tty_password)
- opt_password= get_tty_password(NullS);
-
-- if (init_dynamic_string(&cmdline, NULL, 2 * FN_REFLEN + 128, FN_REFLEN))
-- {
-- ret= 1;
-- goto error;
-- }
- if (!basedir)
- {
- my_getwd(path, sizeof(path), MYF(0));
-@@ -510,7 +511,7 @@
- /*
- Create the modified defaults file to be used by mysqlcheck
- and mysql tools
-- */
-+ */
- fn_format(path, UPGRADE_DEFAULTS_NAME, datadir, "", MYF(0));
- upgrade_defaults_path= my_strdup(path, MYF(0));
-
-@@ -556,17 +557,34 @@
- goto error;
- }
- else
-- dynstr_set(&cmdline, path);
-+ {
-+#ifdef __WIN__
-+ /* Windows requires an extra pair of quotes around the entire string. */
-+ dynstr_set(&cmdline, "\"");
-+#else
-+ dynstr_set(&cmdline, "");
-+#endif /* __WIN__ */
-+ dynstr_append_os_quoted(&cmdline, path, NullS);
-+ }
-
- if (defaults_to_use)
- {
-- dynstr_append(&cmdline, " --defaults-extra-file=");
-- dynstr_append(&cmdline, defaults_to_use);
-- }
--
-- dynstr_append(&cmdline, " --check-upgrade --all-databases"
-- " --auto-repair --user=");
-- dynstr_append(&cmdline, user);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--defaults-extra-file=",
-+ defaults_to_use, NullS);
-+ }
-+
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--check-upgrade", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--all-databases", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--auto-repair", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--user=", user, NullS);
-+#ifdef __WIN__
-+ dynstr_append(&cmdline, "\"");
-+#endif /* __WIN__ */
-
- if (opt_verbose)
- printf("Running %s\n", cmdline.str);
-@@ -595,7 +613,15 @@
- goto error;
- }
- else
-- dynstr_set(&cmdline, path);
-+ {
-+#ifdef __WIN__
-+ /* Windows requires an extra pair of quotes around the entire string. */
-+ dynstr_set(&cmdline, "\"");
-+#else
-+ dynstr_set(&cmdline, "");
-+#endif /* __WIN__ */
-+ dynstr_append_os_quoted(&cmdline, path, NullS);
-+ }
-
- if (find_file(MYSQL_FIX_PRIV_TABLES_NAME, basedir, MYF(0),
- path, sizeof(path),
-@@ -617,13 +643,25 @@
-
- if (defaults_to_use)
- {
-- dynstr_append(&cmdline, " --defaults-extra-file=");
-- dynstr_append(&cmdline, defaults_to_use);
-- }
-- dynstr_append(&cmdline, " --force --no-auto-rehash --batch --user=");
-- dynstr_append(&cmdline, user);
-- dynstr_append(&cmdline, " mysql < ");
-- dynstr_append(&cmdline, script_line);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--defaults-extra-file=",
-+ defaults_to_use, NullS);
-+ }
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--force", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--no-auto-rehash", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--batch", NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--user=", user, NullS);
-+ dynstr_append(&cmdline, " ");
-+ dynstr_append_os_quoted(&cmdline, "--database=mysql", NullS);
-+ dynstr_append(&cmdline, " < ");
-+ dynstr_append_os_quoted(&cmdline, script_line, NullS);
-+#ifdef __WIN__
-+ dynstr_append(&cmdline, "\"");
-+#endif /* __WIN__ */
-
- if (opt_verbose)
- printf("Running %s\n", cmdline.str);