Commit da21afb2 authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -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_info= 1;
static my_bool abort_on_error= 1;

static my_bool is_windows= 0;
static char **default_argv;
static const char *load_default_groups[]= { "mysqltest", "client", 0 };
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
@@ -1658,7 +1658,7 @@ void do_exec(struct st_command *command)

  init_dynamic_string(&ds_cmd, 0, command->query_len+256, 256);
  /* 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 */
  if (builtin_echo[0] && strncmp(cmd, "echo", 4) == 0)
@@ -1667,6 +1667,15 @@ void do_exec(struct st_command *command)
    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'",
                      command->first_argument, ds_cmd.str));

@@ -1826,7 +1835,14 @@ void do_system(struct st_command *command)
  init_dynamic_string(&ds_cmd, 0, command->query_len + 64, 256);

  /* 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'",
                      command->first_argument, ds_cmd.str));
@@ -5717,6 +5733,7 @@ int main(int argc, char **argv)

  init_builtin_echo();
#ifdef __WIN__
  is_windows= 0;
  init_tmp_sh_file();
  init_win_path_patterns();
#endif