diff options
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 07f890f12..b2e1a7975 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -471,8 +471,6 @@ path_conv::check (const char *src, unsigned opt, if (error) return; - update_fs_info (full_path); - /* devn should not be a device. If it is, then stop parsing now. */ if (devn != FH_BAD) { @@ -480,6 +478,8 @@ path_conv::check (const char *src, unsigned opt, goto out; /* Found a device. Stop parsing. */ } + update_fs_info (full_path); + /* Eat trailing slashes */ char *dostail = strchr (full_path, '\0'); @@ -668,24 +668,27 @@ out: return; } - update_fs_info (path); - if (!fs_name[0]) - { - set_has_acls (FALSE); - set_has_buggy_open (FALSE); - } - else + if (devn == FH_BAD) { - set_isdisk (); - debug_printf ("root_dir(%s), this->path(%s), set_has_acls(%d)", - root_dir, this->path, fs_flags & FS_PERSISTENT_ACLS); - if (!allow_smbntsec && is_remote_drive) - set_has_acls (FALSE); + update_fs_info (path); + if (!fs_name[0]) + { + set_has_acls (FALSE); + set_has_buggy_open (FALSE); + } else - set_has_acls (fs_flags & FS_PERSISTENT_ACLS); - /* Known file systems with buggy open calls. Further explanation - in fhandler.cc (fhandler_disk_file::open). */ - set_has_buggy_open (strcmp (fs_name, "SUNWNFS") == 0); + { + set_isdisk (); + debug_printf ("root_dir(%s), this->path(%s), set_has_acls(%d)", + root_dir, this->path, fs_flags & FS_PERSISTENT_ACLS); + if (!allow_smbntsec && is_remote_drive) + set_has_acls (FALSE); + else + set_has_acls (fs_flags & FS_PERSISTENT_ACLS); + /* Known file systems with buggy open calls. Further explanation + in fhandler.cc (fhandler_disk_file::open). */ + set_has_buggy_open (strcmp (fs_name, "SUNWNFS") == 0); + } } if (!(opt & PC_FULL)) |