aboutsummaryrefslogtreecommitdiff
path: root/dep/mysqllite/mysys/my_symlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'dep/mysqllite/mysys/my_symlink.c')
-rw-r--r--dep/mysqllite/mysys/my_symlink.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/dep/mysqllite/mysys/my_symlink.c b/dep/mysqllite/mysys/my_symlink.c
index 258e227bb7b..053fc887fe8 100644
--- a/dep/mysqllite/mysys/my_symlink.c
+++ b/dep/mysqllite/mysys/my_symlink.c
@@ -113,14 +113,12 @@ int my_is_symlink(const char *filename __attribute__((unused)))
#endif
}
-
/*
Resolve all symbolic links in path
'to' may be equal to 'filename'
*/
-int my_realpath(char *to, const char *filename,
- myf MyFlags __attribute__((unused)))
+int my_realpath(char *to, const char *filename, myf MyFlags)
{
#if defined(HAVE_REALPATH) && !defined(HAVE_BROKEN_REALPATH)
int result=0;
@@ -147,7 +145,23 @@ int my_realpath(char *to, const char *filename,
}
DBUG_RETURN(result);
#else
+#ifdef _WIN32
+ int ret= GetFullPathName(filename,FN_REFLEN,
+ to,
+ NULL);
+ if (ret == 0 || ret > FN_REFLEN)
+ {
+ if (ret > FN_REFLEN)
+ my_errno= ENAMETOOLONG;
+ else
+ my_errno= EACCES;
+ if (MyFlags & MY_WME)
+ my_error(EE_REALPATH, MYF(0), filename, my_errno);
+ return -1;
+ }
+#else
my_load_path(to, filename, NullS);
+#endif
return 0;
#endif
}