diff options
author | unknown <msvensson@pilot.mysql.com> | 2008-02-28 12:21:44 +0100 |
---|---|---|
committer | unknown <msvensson@pilot.mysql.com> | 2008-02-28 12:21:44 +0100 |
commit | 3320c165cf0c58938a5dd4ac6235b7d48030fc6c (patch) | |
tree | 1a7e1ed12d61ecd778a2370fd8db32bb46c5015d /client | |
parent | 7c7801f955029de5f1a36cb67df7d72049dd83cc (diff) | |
parent | d8d3ed3bc59aae111fc047ddba4806d609d606f8 (diff) | |
download | mariadb-git-3320c165cf0c58938a5dd4ac6235b7d48030fc6c.tar.gz |
Merge pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-rpl
into pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-mtr
BitKeeper/etc/ignore:
auto-union
BitKeeper/deleted/.del-rpl_row_charset.test:
Auto merged
BitKeeper/deleted/.del-rpl_row_charset_innodb.test:
Auto merged
CMakeLists.txt:
Auto merged
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/r/ctype_big5.result:
Auto merged
mysql-test/r/gis.result:
Auto merged
mysql-test/r/mysqlbinlog.result:
Auto merged
mysql-test/r/query_cache.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/system_mysql_db.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/r/type_blob.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/r/warnings.result:
Auto merged
mysql-test/suite/federated/federated.result:
Auto merged
mysql-test/suite/federated/federated.test:
Auto merged
mysql-test/suite/ndb_team/r/ndb_dd_backuprestore.result:
Auto merged
mysql-test/suite/ndb_team/r/rpl_ndb_dd_advance.result:
Auto merged
mysql-test/suite/ndb_team/t/rpl_ndb_dd_advance.test:
Auto merged
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Auto merged
mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
Auto merged
mysql-test/suite/rpl/r/rpl_timezone.result:
Auto merged
mysql-test/suite/rpl/t/rpl_load_from_master.test:
Auto merged
mysql-test/suite/rpl/t/rpl_rotate_logs.test:
Auto merged
mysql-test/suite/rpl/t/rpl_trigger.test:
Auto merged
mysql-test/t/csv.test:
Auto merged
mysql-test/t/ctype_big5.test:
Auto merged
mysql-test/t/gis.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/partition.test:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/show_check.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/system_mysql_db_fix50117.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
mysql-test/t/trigger_notembedded.test:
Auto merged
mysql-test/t/type_blob.test:
Auto merged
mysql-test/t/view.test:
Auto merged
mysql-test/t/warnings.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
mysql-test/Makefile.am:
SCCS merged
mysql-test/mysql-test-run.pl:
Use local version of mtr.pl
mysql-test/lib/mtr_cases.pm:
Use local mtr_cases.pm
mysql-test/suite/rpl/t/disabled.def:
Use remote disabled file
mysql-test/t/disabled.def:
Use remote disabled file
sql/ha_ndbcluster_binlog.cc:
Use remote
mysql-test/extra/rpl_tests/rpl_charset.test:
Manual merge
mysql-test/lib/mtr_report.pm:
Manual merge
mysql-test/suite/binlog/r/binlog_killed_simulate.result:
Manual merge
mysql-test/suite/binlog/r/binlog_multi_engine.result:
Manual merge
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Manual merge
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
Manual merge
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Manual merge
mysql-test/suite/binlog/t/binlog_killed.test:
Manual merge
mysql-test/suite/binlog/t/binlog_killed_simulate.test:
Manual merge
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
Manual merge
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
Manual merge
mysql-test/suite/ndb/r/ndb_binlog_format.result:
Manual merge
mysql-test/suite/ndb/r/ndb_restore.result:
Manual merge
mysql-test/suite/ndb/t/ndb_restore.test:
Manual merge
mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
Manual merge
mysql-test/suite/rpl/r/rpl_stm_log.result:
Manual merge
mysql-test/suite/rpl/t/rpl_row_sp005.test:
Manual merge
mysql-test/t/log_state.test:
Manual merge
mysql-test/t/mysqlbinlog.test:
Manual merge
mysql-test/t/mysqlbinlog2.test:
Manual merge
mysql-test/t/upgrade.test:
Manual merge
Diffstat (limited to 'client')
-rw-r--r-- | client/mysqltest.c | 83 |
1 files changed, 59 insertions, 24 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c index f79427ced10..ca3bbf1d35f 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -1320,42 +1320,64 @@ void show_diff(DYNAMIC_STRING* ds, const char* filename1, const char* filename2) { + const char* diff_failed= 0; DYNAMIC_STRING ds_tmp; if (init_dynamic_string(&ds_tmp, "", 256, 256)) die("Out of memory"); - /* First try with unified diff */ + /* First try with diff --help to see if the command exists at all */ if (run_tool("diff", &ds_tmp, /* Get output from diff in ds_tmp */ - "-u", - filename1, - filename2, + "--help", "2>&1", - NULL) > 1) /* Most "diff" tools return >1 if error */ + NULL) != 0) /* Most "diff --help" tools return 0 */ + { + diff_failed= "You don't appear to have diff installed"; + } + else { dynstr_set(&ds_tmp, ""); + /* First try with unified diff */ - /* Fallback to context diff with "diff -c" */ if (run_tool("diff", &ds_tmp, /* Get output from diff in ds_tmp */ - "-c", + "-u", filename1, filename2, "2>&1", NULL) > 1) /* Most "diff" tools return >1 if error */ { - /* - Fallback to dump both files to result file and inform - about installing "diff" - */ dynstr_set(&ds_tmp, ""); - dynstr_append(&ds_tmp, + /* Fallback to context diff with "diff -c" */ + if (run_tool("diff", + &ds_tmp, /* Get output from diff in ds_tmp */ + "-c", + filename1, + filename2, + "2>&1", + NULL) > 1) /* Most "diff" tools return >1 if error */ + { + dynstr_set(&ds_tmp, ""); + diff_failed= "Could not execute 'diff -u' or 'diff -c'"; + } + } + } + + if (diff_failed) + { + /* + Fallback to dump both files to result file and inform + about installing "diff" + */ + dynstr_append(&ds_tmp, "\n"); + dynstr_append(&ds_tmp, diff_failed); + dynstr_append(&ds_tmp, "\n" "The two files differ but it was not possible to execute 'diff' in\n" -"order to show only the difference, tried both 'diff -u' or 'diff -c'.\n" -"Instead the whole content of the two files was shown for you to diff manually. ;)\n\n" +"order to show only the difference. Instead the whole content of the\n" +"two files was shown for you to diff manually.\n\n" "To get a better report you should install 'diff' on your system, which you\n" "for example can get from http://www.gnu.org/software/diffutils/diffutils.html\n" #ifdef __WIN__ @@ -1363,16 +1385,15 @@ void show_diff(DYNAMIC_STRING* ds, #endif "\n"); - dynstr_append(&ds_tmp, " --- "); - dynstr_append(&ds_tmp, filename1); - dynstr_append(&ds_tmp, " >>>\n"); - cat_file(&ds_tmp, filename1); - dynstr_append(&ds_tmp, "<<<\n --- "); - dynstr_append(&ds_tmp, filename1); - dynstr_append(&ds_tmp, " >>>\n"); - cat_file(&ds_tmp, filename2); - dynstr_append(&ds_tmp, "<<<<\n"); - } + dynstr_append(&ds_tmp, " --- "); + dynstr_append(&ds_tmp, filename1); + dynstr_append(&ds_tmp, " >>>\n"); + cat_file(&ds_tmp, filename1); + dynstr_append(&ds_tmp, "<<<\n --- "); + dynstr_append(&ds_tmp, filename1); + dynstr_append(&ds_tmp, " >>>\n"); + cat_file(&ds_tmp, filename2); + dynstr_append(&ds_tmp, "<<<<\n"); } if (ds) @@ -2181,8 +2202,19 @@ void eval_expr(VAR *v, const char *p, const char **p_end) int open_file(const char *name) { char buff[FN_REFLEN]; + size_t length; DBUG_ENTER("open_file"); DBUG_PRINT("enter", ("name: %s", name)); + + /* Extract path from current file and try it as base first */ + if (dirname_part(buff, cur_file->file_name, &length)) + { + strxmov(buff, buff, name, NullS); + if (access(buff, F_OK) == 0){ + DBUG_PRINT("info", ("The file exists")); + name= buff; + } + } if (!test_if_hard_path(name)) { strxmov(buff, opt_basedir, name, NullS); @@ -7444,6 +7476,9 @@ void do_get_replace(struct st_command *command) if (!*from) die("Wrong number of arguments to replace_result in '%s'", command->query); +#ifdef __WIN__ + fix_win_paths(to, from - to); +#endif insert_pointer_name(&from_array,to); to= get_string(&buff, &from, command); insert_pointer_name(&to_array,to); |