Skip to content

Commit 9d77dd8

Browse files
authored
Merge pull request #4444 from devnexen/filemetadata_upd
shims::fs adding more fields to FileMetadata
2 parents 25edbce + 49c1bcb commit 9d77dd8

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/shims/unix/fs.rs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,12 @@ trait EvalContextExtPrivate<'tcx>: crate::MiriInterpCxExt<'tcx> {
132132
let buf = this.deref_pointer_as(buf_op, this.libc_ty_layout("stat"))?;
133133
this.write_int_fields_named(
134134
&[
135-
("st_dev", 0),
135+
("st_dev", metadata.dev.into()),
136136
("st_mode", mode.try_into().unwrap()),
137137
("st_nlink", 0),
138138
("st_ino", 0),
139-
("st_uid", 0),
140-
("st_gid", 0),
139+
("st_uid", metadata.uid.into()),
140+
("st_gid", metadata.gid.into()),
141141
("st_rdev", 0),
142142
("st_atime", access_sec.into()),
143143
("st_mtime", modified_sec.into()),
@@ -1544,6 +1544,9 @@ struct FileMetadata {
15441544
created: Option<(u64, u32)>,
15451545
accessed: Option<(u64, u32)>,
15461546
modified: Option<(u64, u32)>,
1547+
dev: u64,
1548+
uid: u32,
1549+
gid: u32,
15471550
}
15481551

15491552
impl FileMetadata {
@@ -1601,6 +1604,21 @@ impl FileMetadata {
16011604
let modified = extract_sec_and_nsec(metadata.modified())?;
16021605

16031606
// FIXME: Provide more fields using platform specific methods.
1604-
interp_ok(Ok(FileMetadata { mode, size, created, accessed, modified }))
1607+
1608+
cfg_select! {
1609+
unix => {
1610+
use std::os::unix::fs::MetadataExt;
1611+
let dev = metadata.dev();
1612+
let uid = metadata.uid();
1613+
let gid = metadata.gid();
1614+
}
1615+
_ => {
1616+
let dev = 0;
1617+
let uid = 0;
1618+
let gid = 0;
1619+
}
1620+
}
1621+
1622+
interp_ok(Ok(FileMetadata { mode, size, created, accessed, modified, dev, uid, gid }))
16051623
}
16061624
}

0 commit comments

Comments
 (0)