aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2003-10-23 08:54:00 +0000
committerCorinna Vinschen <corinna@vinschen.de>2003-10-23 08:54:00 +0000
commitf49c14a197251128fa882d7daaef0d5d95891fdc (patch)
treed002861f48bfe55b4686fccc30e080940e121d5e
parenta3f95116e3ef9677e8e8db7112f6b28827a15b1f (diff)
downloadnewlib-f49c14a197251128fa882d7daaef0d5d95891fdc.zip
newlib-f49c14a197251128fa882d7daaef0d5d95891fdc.tar.gz
newlib-f49c14a197251128fa882d7daaef0d5d95891fdc.tar.bz2
* fhandler_proc.cc (format_proc_partitions): Use new device code
to get major and minor device numbers. Fix size evaluation.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_proc.cc30
2 files changed, 24 insertions, 11 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 4dd246e..a0db4f4 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_proc.cc (format_proc_partitions): Use new device code
+ to get major and minor device numbers. Fix size evaluation.
+
2003-10-22 Corinna Vinschen <corinna@vinschen.de>
* external.cc (cygwin_internal): Add CW_GET_ERRNO_FROM_WINERROR
diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc
index 42bd8e1..d1fc273 100644
--- a/winsup/cygwin/fhandler_proc.cc
+++ b/winsup/cygwin/fhandler_proc.cc
@@ -898,12 +898,16 @@ format_proc_partitions (char *destbuf, size_t maxsize)
debug_printf ("DeviceIoControl %E");
else
{
- bufptr += __small_sprintf (bufptr, "%5d %5d %9U sd%c\n",
- FH_FLOPPY,
- drive_number * 16 + 32,
+ char devname[16];
+ __small_sprintf (devname, "/dev/sd%c", drive_number + 'a');
+ device dev;
+ dev.parse (devname);
+ bufptr += __small_sprintf (bufptr, "%5d %5d %9U %s\n",
+ dev.major,
+ dev.minor,
(long long)((dg.Cylinders.QuadPart * dg.TracksPerCylinder *
- dg.SectorsPerTrack * dg.BytesPerSector) >> 6),
- drive_number + 'a');
+ dg.SectorsPerTrack * dg.BytesPerSector) >> 10),
+ devname + 5);
}
while (dwRetCode = DeviceIoControl (hDevice,
IOCTL_DISK_GET_DRIVE_LAYOUT,
@@ -924,12 +928,16 @@ format_proc_partitions (char *destbuf, size_t maxsize)
{
if (dli->PartitionEntry[partition].PartitionLength.QuadPart == 0)
continue;
- bufptr += __small_sprintf (bufptr, "%5d %5d %9U sd%c%d\n",
- FH_FLOPPY,
- drive_number * 16 + partition + 33,
- (long long)(dli->PartitionEntry[partition].PartitionLength.QuadPart >> 6),
- drive_number + 'a',
- partition + 1);
+ char devname[16];
+ __small_sprintf (devname, "/dev/sd%c%d",
+ drive_number + 'a',
+ partition + 1);
+ device dev;
+ dev.parse (devname);
+ bufptr += __small_sprintf (bufptr, "%5d %5d %9U %s\n",
+ dev.major, dev.minor,
+ (long long)(dli->PartitionEntry[partition].PartitionLength.QuadPart >> 10),
+ devname + 5);
}
}