summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorSunanda Menon <sunanda.menon@oracle.com>2011-07-06 11:36:39 +0200
committerSunanda Menon <sunanda.menon@oracle.com>2011-07-06 11:36:39 +0200
commitf094b48da4041dff886cbcaa19180e48b18813e1 (patch)
treeb620a0de6d93498520da98a4e463693e72de646f /mysys
parent7087c2e689fb49578ae3cac487050a05ffbf894c (diff)
parent207eb4086263afc15e2807e344f6ce6a3bd96d27 (diff)
downloadmariadb-git-f094b48da4041dff886cbcaa19180e48b18813e1.tar.gz
Merge from mysql-5.0.94-release
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_symlink.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/mysys/my_symlink.c b/mysys/my_symlink.c
index cdb9ef9e051..fbf015512a3 100644
--- a/mysys/my_symlink.c
+++ b/mysys/my_symlink.c
@@ -150,8 +150,23 @@ int my_realpath(char *to, const char *filename,
result= -1;
}
DBUG_RETURN(result);
+#elif defined(_WIN32)
+ int ret= GetFullPathName(filename,FN_REFLEN, to, NULL);
+ if (ret == 0 || ret > FN_REFLEN)
+ {
+ my_errno= (ret > FN_REFLEN) ? ENAMETOOLONG : GetLastError();
+ if (MyFlags & MY_WME)
+ my_error(EE_REALPATH, MYF(0), filename, my_errno);
+ /*
+ GetFullPathName didn't work : use my_load_path() which is a poor
+ substitute original name but will at least be able to resolve
+ paths that starts with '.'.
+ */
+ my_load_path(to, filename, NullS);
+ return -1;
+ }
#else
my_load_path(to, filename, NullS);
+#endif
return 0;
-#endif
}