W32: consider NTFS mounpoints to be symlinks
While mountpoints are *not* symlinks, strictly speaking,
they works in a similar enough way, so consider them to be
symlinks for the purpose of querying local file info.
diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c
index 651992f..9cf7ff8 100644
--- a/gio/glocalfileinfo.c
+++ b/gio/glocalfileinfo.c
@@ -961,7 +961,8 @@
else if (S_ISLNK (statbuf->st_mode))
file_type = G_FILE_TYPE_SYMBOLIC_LINK;
#elif defined (G_OS_WIN32)
- if (statbuf->reparse_tag == IO_REPARSE_TAG_SYMLINK)
+ if (statbuf->reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+ statbuf->reparse_tag == IO_REPARSE_TAG_MOUNT_POINT)
file_type = G_FILE_TYPE_SYMBOLIC_LINK;
#endif
@@ -1808,7 +1809,9 @@
is_symlink = stat_ok && S_ISLNK (statbuf.st_mode);
#elif defined (G_OS_WIN32)
/* glib already checked the FILE_ATTRIBUTE_REPARSE_POINT for us */
- is_symlink = stat_ok && statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK;
+ is_symlink = stat_ok &&
+ (statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+ statbuf.reparse_tag == IO_REPARSE_TAG_MOUNT_POINT);
#else
is_symlink = FALSE;
#endif
@@ -2191,7 +2194,9 @@
GWin32PrivateStat statbuf;
res = GLIB_PRIVATE_CALL (g_win32_lstat_utf8) (filename, &statbuf);
- is_symlink = (res == 0 && statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK);
+ is_symlink = (res == 0 &&
+ (statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+ statbuf.reparse_tag == IO_REPARSE_TAG_MOUNT_POINT));
#endif
if (is_symlink)
{