Commit da21afb2 authored by unknown's avatar unknown

Don't output escape char from 'do_eval' on windows. "It" won't

know it's an escape char.
Replace /dev/null with NUL
Replace "closed stdout" with "not open fd"

parent c6e1de4c
...@@ -103,7 +103,7 @@ static my_bool disable_query_log= 0, disable_result_log= 0; ...@@ -103,7 +103,7 @@ static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_warnings= 0, disable_ps_warnings= 0; static my_bool disable_warnings= 0, disable_ps_warnings= 0;
static my_bool disable_info= 1; static my_bool disable_info= 1;
static my_bool abort_on_error= 1; static my_bool abort_on_error= 1;
static my_bool is_windows= 0;
static char **default_argv; static char **default_argv;
static const char *load_default_groups[]= { "mysqltest", "client", 0 }; static const char *load_default_groups[]= { "mysqltest", "client", 0 };
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer; static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
...@@ -1658,7 +1658,7 @@ void do_exec(struct st_command *command) ...@@ -1658,7 +1658,7 @@ void do_exec(struct st_command *command)
init_dynamic_string(&ds_cmd, 0, command->query_len+256, 256); init_dynamic_string(&ds_cmd, 0, command->query_len+256, 256);
/* Eval the command, thus replacing all environment variables */ /* Eval the command, thus replacing all environment variables */
do_eval(&ds_cmd, cmd, command->end, TRUE); do_eval(&ds_cmd, cmd, command->end, !is_windows);
/* Check if echo should be replaced with "builtin" echo */ /* Check if echo should be replaced with "builtin" echo */
if (builtin_echo[0] && strncmp(cmd, "echo", 4) == 0) if (builtin_echo[0] && strncmp(cmd, "echo", 4) == 0)
...@@ -1667,6 +1667,15 @@ void do_exec(struct st_command *command) ...@@ -1667,6 +1667,15 @@ void do_exec(struct st_command *command)
replace(&ds_cmd, "echo", 4, builtin_echo, strlen(builtin_echo)); replace(&ds_cmd, "echo", 4, builtin_echo, strlen(builtin_echo));
} }
#ifdef __WIN__
/* Replace /dev/null with NUL */
while(replace(&ds_cmd, "/dev/null", 9, "NUL", 3) == 0)
;
/* Replace "closed stdout" with non existing output fd */
while(replace(&ds_cmd, ">&-", 3, ">&4", 3) == 0)
;
#endif
DBUG_PRINT("info", ("Executing '%s' as '%s'", DBUG_PRINT("info", ("Executing '%s' as '%s'",
command->first_argument, ds_cmd.str)); command->first_argument, ds_cmd.str));
...@@ -1826,7 +1835,14 @@ void do_system(struct st_command *command) ...@@ -1826,7 +1835,14 @@ void do_system(struct st_command *command)
init_dynamic_string(&ds_cmd, 0, command->query_len + 64, 256); init_dynamic_string(&ds_cmd, 0, command->query_len + 64, 256);
/* Eval the system command, thus replacing all environment variables */ /* Eval the system command, thus replacing all environment variables */
do_eval(&ds_cmd, command->first_argument, command->end, TRUE); do_eval(&ds_cmd, command->first_argument, command->end, !is_windows);
#ifdef __WIN__
/* Replace /dev/null with NUL */
while(replace(&ds_cmd, "/dev/null", 9, "NUL", 3) == 0)
;
#endif
DBUG_PRINT("info", ("running system command '%s' as '%s'", DBUG_PRINT("info", ("running system command '%s' as '%s'",
command->first_argument, ds_cmd.str)); command->first_argument, ds_cmd.str));
...@@ -5717,6 +5733,7 @@ int main(int argc, char **argv) ...@@ -5717,6 +5733,7 @@ int main(int argc, char **argv)
init_builtin_echo(); init_builtin_echo();
#ifdef __WIN__ #ifdef __WIN__
is_windows= 0;
init_tmp_sh_file(); init_tmp_sh_file();
init_win_path_patterns(); init_win_path_patterns();
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment