summaryrefslogtreecommitdiff
path: root/mysys/my_symlink.c
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
commitaf6ddeca48227198e420e3e3704a856d013c7ec7 (patch)
treeb620a0de6d93498520da98a4e463693e72de646f /mysys/my_symlink.c
parentbb3723835e3b141cc835ea9f2eb3cbf069855104 (diff)
parent51e1713a5d5d968d922612141eec3208c086d878 (diff)
downloadmariadb-git-af6ddeca48227198e420e3e3704a856d013c7ec7.tar.gz
Merge from mysql-5.0.94-release
Diffstat (limited to 'mysys/my_symlink.c')
-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
}