1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-05 16:59:35 +03:00

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
This commit is contained in:
unknown 2005-03-14 16:47:35 -06:00
parent 90697f2467
commit 2722a28691
2 changed files with 23 additions and 0 deletions

View File

@ -190,6 +190,7 @@ ramil@mysql.com
ranger@regul.home.lan ranger@regul.home.lan
rburnett@build.mysql.com rburnett@build.mysql.com
reggie@bob.(none) reggie@bob.(none)
reggie@mdk10.(none)
root@home.(none) root@home.(none)
root@mc04.(none) root@mc04.(none)
root@x3.internalnet root@x3.internalnet

View File

@ -1080,6 +1080,27 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
check_io(xml_file); 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 getStructure -- retrievs database structure, prints out corresponding
CREATE statement and fills out insert_pat. CREATE statement and fills out insert_pat.
@ -1159,6 +1180,7 @@ static uint getTableStructure(char *table, char* db)
tableRes=mysql_store_result(sock); tableRes=mysql_store_result(sock);
row=mysql_fetch_row(tableRes); 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]); fprintf(sql_file, "%s;\n", row[1]);
check_io(sql_file); check_io(sql_file);
mysql_free_result(tableRes); mysql_free_result(tableRes);