mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-26 12:12:10 +01:00
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.
This commit is contained in:
parent
929844fdf7
commit
075bb0f751
@ -961,7 +961,8 @@ set_info_from_stat (GFileInfo *info,
|
|||||||
else if (S_ISLNK (statbuf->st_mode))
|
else if (S_ISLNK (statbuf->st_mode))
|
||||||
file_type = G_FILE_TYPE_SYMBOLIC_LINK;
|
file_type = G_FILE_TYPE_SYMBOLIC_LINK;
|
||||||
#elif defined (G_OS_WIN32)
|
#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;
|
file_type = G_FILE_TYPE_SYMBOLIC_LINK;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1808,7 +1809,9 @@ _g_local_file_info_get (const char *basename,
|
|||||||
is_symlink = stat_ok && S_ISLNK (statbuf.st_mode);
|
is_symlink = stat_ok && S_ISLNK (statbuf.st_mode);
|
||||||
#elif defined (G_OS_WIN32)
|
#elif defined (G_OS_WIN32)
|
||||||
/* glib already checked the FILE_ATTRIBUTE_REPARSE_POINT for us */
|
/* 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
|
#else
|
||||||
is_symlink = FALSE;
|
is_symlink = FALSE;
|
||||||
#endif
|
#endif
|
||||||
@ -2191,7 +2194,9 @@ set_unix_mode (char *filename,
|
|||||||
GWin32PrivateStat statbuf;
|
GWin32PrivateStat statbuf;
|
||||||
|
|
||||||
res = GLIB_PRIVATE_CALL (g_win32_lstat_utf8) (filename, &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
|
#endif
|
||||||
if (is_symlink)
|
if (is_symlink)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user