summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <reggie@mdk10.(none)>2005-05-23 11:53:16 -0500
committerunknown <reggie@mdk10.(none)>2005-05-23 11:53:16 -0500
commit6b964f0f102efb51c761091a4ee8f715604fb78a (patch)
tree3153a514a15fc0a00b4cda2dcc8a351985d39566
parent1da5382a9fa37ffd9ebdf30b74b0a515af879a64 (diff)
downloadmariadb-git-6b964f0f102efb51c761091a4ee8f715604fb78a.tar.gz
BUG# 10687: MERGE Engine fails on Windows
This is a replacement for the original patch given by Ingo. This one comes from Monty. The problem is that merge files now use unix style pathnames on all platforms. The merge file open code was not properly converting those pathnames back to non-unix when necessary. myisammrg/myrg_open.c: use fn_format to convert pathnames if the files in the merge file have a pathname mysys/my_getwd.c: add a test for '/' in the code that determines if a string inlucdes a pathname
-rw-r--r--myisammrg/myrg_open.c4
-rw-r--r--mysys/my_getwd.c2
2 files changed, 4 insertions, 2 deletions
diff --git a/myisammrg/myrg_open.c b/myisammrg/myrg_open.c
index 0dc2f4f9768..f9cdc2bb205 100644
--- a/myisammrg/myrg_open.c
+++ b/myisammrg/myrg_open.c
@@ -67,7 +67,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
while ((length=my_b_gets(&file,buff,FN_REFLEN-1)))
{
if ((end=buff+length)[-1] == '\n')
- end[-1]='\0';
+ *--end='\0';
if (!buff[0])
continue; /* Skip empty lines */
if (buff[0] == '#')
@@ -86,6 +86,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
sizeof(name_buff)-1-dir_length));
VOID(cleanup_dirname(buff,name_buff));
}
+ else
+ fn_format(buff, buff, "", "", 0);
if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0))))
goto err;
if (!m_info) /* First file */
diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c
index 89f949eca27..14d68168acd 100644
--- a/mysys/my_getwd.c
+++ b/mysys/my_getwd.c
@@ -208,7 +208,7 @@ int test_if_hard_path(register const char *dir_name)
my_bool has_path(const char *name)
{
- return test(strchr(name, FN_LIBCHAR))
+ return test(strchr(name, FN_LIBCHAR)) || test(strchr(name,'/'))
#ifdef FN_DEVCHAR
|| test(strchr(name, FN_DEVCHAR))
#endif