diff options
author | Chad MILLER <chad@mysql.com> | 2008-12-17 15:01:34 -0500 |
---|---|---|
committer | Chad MILLER <chad@mysql.com> | 2008-12-17 15:01:34 -0500 |
commit | 926e5f6694d1bb1dd5b8074efd526fd8983b620f (patch) | |
tree | 14bfefa872195990d45ab8f3ee850730cd31ed1b /mysys/my_symlink.c | |
parent | 27d35e3517a063c9259a0f8b9638bf3073cf020b (diff) | |
parent | 4d1a042df0c52fd7c721313ec84d39e2b2c0a2f6 (diff) | |
download | mariadb-git-926e5f6694d1bb1dd5b8074efd526fd8983b620f.tar.gz |
Merged from 5.0 (enterprise).
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 } - |