summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Sago <ogham@bsago.me>2021-04-11 23:34:29 +0100
committerBenjamin Sago <ogham@bsago.me>2021-04-11 23:34:29 +0100
commit311c9baf659b4ca084f407a6335e7439e45859db (patch)
tree1b2fef400534fca95b6cbb7c4a387ea61b466919
parentd19d66d57a78e353e4022d51d20fd1b3cda6a407 (diff)
Explain device IDs with a comment
-rw-r--r--src/fs/file.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/fs/file.rs b/src/fs/file.rs
index 0df998c..b57777d 100644
--- a/src/fs/file.rs
+++ b/src/fs/file.rs
@@ -319,10 +319,15 @@ impl<'dir> File<'dir> {
f::Size::None
}
else if self.is_char_device() || self.is_block_device() {
- let dev = self.metadata.rdev();
+ let device_ids = self.metadata.rdev().to_be_bytes();
+
+ // In C-land, getting the major and minor device IDs is done with
+ // preprocessor macros called `major` and `minor` that depend on
+ // the size of `dev_t`, but we just take the second-to-last and
+ // last bytes.
f::Size::DeviceIDs(f::DeviceIDs {
- major: (dev / 256) as u8,
- minor: (dev % 256) as u8,
+ major: device_ids[6],
+ minor: device_ids[7],
})
}
else {