Commit 19538177 authored by unknown's avatar unknown

Bug #6660 mysqldump creates bad pathnames on Windows

This really should not happen on Windows and part of the problem not fixed here is why show create table includes data directory when being run on Windows.  However, this patch fixes the bug in mysqldump.c

mysqldump.c:
  Added fixPaths function to convert \ to / in data directory and index directory entries only on Windows


client/mysqldump.c:
  Added fixPaths function to convert \ to / in data directory and index directory entries only on Windows
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent eb6c1f12
......@@ -190,6 +190,7 @@ ramil@mysql.com
ranger@regul.home.lan
rburnett@build.mysql.com
reggie@bob.(none)
reggie@mdk10.(none)
root@home.(none)
root@mc04.(none)
root@x3.internalnet
......
......@@ -1080,6 +1080,27 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
check_io(xml_file);
}
/* fixPaths -- on Windows only, this function will iterate through the output
of show create table and change any \ characters that appear in the data directory
or index directory elements to be /
RETURN
void
*/
static void fixPaths(char *buf, int buflen)
{
#ifdef __WIN__
int i = 0;
for (i=0; i < buflen; i++)
{
if (buf[i] != '\\') continue;
if (i != 0 && buf[i-1] == '\\') continue;
if (i != (buflen-1) && buf[i+1] == '\\') continue;
buf[i] = '/';}
#endif
}
/*
getStructure -- retrievs database structure, prints out corresponding
CREATE statement and fills out insert_pat.
......@@ -1159,6 +1180,7 @@ static uint getTableStructure(char *table, char* db)
tableRes=mysql_store_result(sock);
row=mysql_fetch_row(tableRes);
fixPaths(row[1], strlen(row[1])); // this really only does something on Windows
fprintf(sql_file, "%s;\n", row[1]);
check_io(sql_file);
mysql_free_result(tableRes);
......
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