diff options
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/path.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/path.h | 17 |
3 files changed, 14 insertions, 14 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 812012183..b2dd5c283 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2007-08-19 Corinna Vinschen <corinna@vinschen.de> + + * path.cc (fillout_mntent): Append backslash to drive-only paths before + calling fs_info::update. + * path.h (fs_info::clear): Simplify. + (fs_info::fs_info): Add constructor. + 2007-08-17 Corinna Vinschen <corinna@vinschen.de> * spawn.cc (spawn_guts): Fix typo in comment. diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 953efce42..e3377a069 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2596,6 +2596,7 @@ static mntent * fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) { struct mntent& ret=_my_tls.locals.mntbuf; + bool append_bs = false; /* Remove drivenum from list if we see a x: style path */ if (strlen (native_path) == 2 && native_path[1] == ':') @@ -2603,6 +2604,7 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) int drivenum = cyg_tolower (native_path[0]) - 'a'; if (drivenum >= 0 && drivenum <= 31) _my_tls.locals.available_drives &= ~(1 << drivenum); + append_bs = true; } /* Pass back pointers to mount_table strings reserved for use by @@ -2625,6 +2627,8 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) size_t size = (strlen (native_path) + 10) * sizeof (WCHAR); RtlInitEmptyUnicodeString (&unat, (PWSTR) alloca (size), size); get_nt_native_path (native_path, unat); + if (append_bs) + RtlAppendUnicodeToString (&unat, L"\\"); mntinfo.update (&unat, true); /* this pulls from a cache, usually. */ if (mntinfo.is_samba()) diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index eb3fb5d74..fb654d0f9 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -110,20 +110,9 @@ struct fs_info unsigned is_cdrom : 1; } status; public: - void clear () - { - flags () = 0; - is_remote_drive (false); - has_buggy_open (false); - has_acls (false); - hasgood_inode (false); - is_fat (false); - is_ntfs (false); - is_samba (false); - is_nfs (false); - is_netapp (false); - is_cdrom (false); - } + void clear () { memset (this, 0 , sizeof *this); } + fs_info () { clear (); } + inline DWORD& flags () {return status.flags;}; IMPLEMENT_STATUS_FLAG (bool, is_remote_drive) |