Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-08-19 19:55:06 +0400
committerCorinna Vinschen <corinna@vinschen.de>2007-08-19 19:55:06 +0400
commitdecbb5d3873df73f9a7e93f2be1edd248d329d3f (patch)
tree654dcd4a3ae74443be019f21a0cb6c556e35277f
parentfcc5fef0b048ebfa14126a3949190fa174423507 (diff)
* 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.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/path.cc4
-rw-r--r--winsup/cygwin/path.h17
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)