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
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2002-06-21 19:01:19 +0400
committerCorinna Vinschen <corinna@vinschen.de>2002-06-21 19:01:19 +0400
commit1a7cb557b0cee5b06be408cd3921f79d4a6e64e5 (patch)
treef5887596a71b2601726644b036ed731cd971fd48 /winsup
parent49056987f1c719121fe15fffb72ad5085bac76e8 (diff)
* syscalls.cc (stat64_to_stat32): Correctly evaluate st_rdev.
(fstat64): Set st_rdev to same value as st_dev. (stat_worker): Ditto.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/syscalls.cc6
2 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index afcfcece7..811801915 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2002-06-21 Corinna Vinschen <corinna@vinschen.de>
+ * syscalls.cc (stat64_to_stat32): Correctly evaluate st_rdev.
+ (fstat64): Set st_rdev to same value as st_dev.
+ (stat_worker): Ditto.
+
+2002-06-21 Corinna Vinschen <corinna@vinschen.de>
+
* security.cc (alloc_sd): Carefully check owner_sid again after trying
SIDs from cygheap.
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index da42ee42b..a788c604b 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -998,7 +998,7 @@ stat64_to_stat32 (struct __stat64 *src, struct __stat32 *dst)
dst->st_nlink = src->st_nlink;
dst->st_uid = src->st_uid;
dst->st_gid = src->st_gid;
- dst->st_rdev = src->st_rdev;
+ dst->st_rdev = ((src->st_rdev >> 8) & 0xff00) | (src->st_rdev & 0xff);
dst->st_size = src->st_size;
dst->st_atim = src->st_atim;
dst->st_mtim = src->st_mtim;
@@ -1027,6 +1027,8 @@ fstat64 (int fd, struct __stat64 *buf)
buf->st_ino = hash_path_name (0, cfd->get_win32_name ());
if (!buf->st_dev)
buf->st_dev = (cfd->get_device () << 16) | cfd->get_unit ();
+ if (!buf->st_rdev)
+ buf->st_rdev = buf->st_dev;
}
}
@@ -1115,6 +1117,8 @@ stat_worker (const char *name, struct __stat64 *buf, int nofollow,
buf->st_ino = hash_path_name (0, fh->get_win32_name ());
if (!buf->st_dev)
buf->st_dev = (fh->get_device () << 16) | fh->get_unit ();
+ if (!buf->st_rdev)
+ buf->st_rdev = buf->st_dev;
}
}