summaryrefslogtreecommitdiff
path: root/mysys/my_symlink.c
diff options
context:
space:
mode:
authorChad MILLER <chad@mysql.com>2008-12-17 15:01:34 -0500
committerChad MILLER <chad@mysql.com>2008-12-17 15:01:34 -0500
commit926e5f6694d1bb1dd5b8074efd526fd8983b620f (patch)
tree14bfefa872195990d45ab8f3ee850730cd31ed1b /mysys/my_symlink.c
parent27d35e3517a063c9259a0f8b9638bf3073cf020b (diff)
parent4d1a042df0c52fd7c721313ec84d39e2b2c0a2f6 (diff)
downloadmariadb-git-926e5f6694d1bb1dd5b8074efd526fd8983b620f.tar.gz
Merged from 5.0 (enterprise).
Diffstat (limited to 'mysys/my_symlink.c')
-rw-r--r--mysys/my_symlink.c12
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
}
-