diff options
Diffstat (limited to 'mysys/my_symlink.c')
-rw-r--r-- | mysys/my_symlink.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/mysys/my_symlink.c b/mysys/my_symlink.c index 49c63fc3948..7f2be5644e8 100644 --- a/mysys/my_symlink.c +++ b/mysys/my_symlink.c @@ -106,12 +106,17 @@ int my_symlink(const char *content, const char *linkname, myf MyFlags) #define BUFF_LEN FN_LEN #endif + int my_is_symlink(const char *filename __attribute__((unused))) { -#if defined(HAVE_LSTAT) && defined(S_ISLNK) +#if defined (HAVE_LSTAT) && defined (S_ISLNK) struct stat stat_buff; return !lstat(filename, &stat_buff) && S_ISLNK(stat_buff.st_mode); -#else +#elif defined (_WIN32) + DWORD dwAttr = GetFileAttributes(filename); + return (dwAttr != INVALID_FILE_ATTRIBUTES) && + (dwAttr & FILE_ATTRIBUTE_REPARSE_POINT); +#else /* No symlinks */ return 0; #endif } @@ -128,7 +133,7 @@ int my_realpath(char *to, const char *filename, DBUG_PRINT("info",("executing realpath")); if ((ptr=realpath(filename,buff))) - strmake(to,ptr,FN_REFLEN-1); + strmake(to,ptr,FN_REFLEN-1); else { /* @@ -149,4 +154,3 @@ int my_realpath(char *to, const char *filename, return 0; #endif } - |