Handle up to 63 partitions per drive

Revamp device parsing code.  Introducing support for more partitions
into the shilka-generated parser has the unfortunate side-effect of
raising the size of the DLL by almost 2 Megs.  Therefore we split out
the handling for /dev/sdXY devices into a tiny bit of hand-written
code.

While at it, remove some unused cruft from devices.* and generally
clean up the device class to provide access methods instead of direct
access to members.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen
2016-06-23 16:56:41 +02:00
parent bceb8ebebb
commit b2867a68b9
21 changed files with 5268 additions and 40170 deletions

View File

@ -513,7 +513,7 @@ fhandler_base::fstat_helper (struct stat *buf)
else
{
buf->st_dev = buf->st_rdev = dev ();
buf->st_mode = dev ().mode;
buf->st_mode = dev ().mode ();
buf->st_size = 0;
}
}
@ -532,7 +532,7 @@ fhandler_base::fstat_helper (struct stat *buf)
else if (is_fs_special ())
{
buf->st_dev = buf->st_rdev = dev ();
buf->st_mode = dev ().mode;
buf->st_mode = dev ().mode ();
buf->st_size = 0;
}
else
@ -2091,7 +2091,7 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err,
else if (fpath.is_fs_special ())
{
fname->Length -= 4 * sizeof (WCHAR);
de->d_type = S_ISCHR (fpath.dev.mode) ? DT_CHR : DT_BLK;
de->d_type = S_ISCHR (fpath.dev.mode ()) ? DT_CHR : DT_BLK;
}
}
}