1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
use std::env;
use std::io;
use std::fs;
use std::os::unix::fs::PermissionsExt;
use std::os::linux::fs::MetadataExt;
mod fswalk;
use fswalk::DirTree;
// Command line args are names of dirs, recursively list all files and
// dirs them
fn main() -> io::Result<()> {
for dirname in env::args().skip(1) {
let tree = DirTree::new(&dirname);
for entry in tree {
write_info(&entry.path(), &entry.metadata());
}
}
Ok(())
}
fn write_info(path: &str, meta: &fs::Metadata) {
println!("Name: {}", path);
println!("Mtime: {}", format_mtime(meta));
println!("Mode: {}", format_mode(meta));
println!("Ino: {}", format_inode(meta));
println!("Dev: {}", format_dev(meta));
println!("Nlink: {}", format_nlink(meta));
println!("Size: {}", format_size(meta));
println!("Uid: {}", format_uid(meta));
println!("Username: {}", format_username(meta));
println!("Gid: {}", format_gid(meta));
println!("Group: {}", format_group(meta));
println!("SHA256: xxx");
println!("");
}
fn format_mtime(meta: &fs::Metadata) -> String {
let mtime = meta.modified().unwrap();
format!("{:?}", mtime)
}
fn format_mode(meta: &fs::Metadata) -> String {
let mode = meta.permissions().mode();
format!("{:06o}", mode)
}
fn format_inode(meta: &fs::Metadata) -> String {
format!("{}", meta.st_ino())
}
fn format_dev(meta: &fs::Metadata) -> String {
format!("{}", meta.st_dev())
}
fn format_nlink(meta: &fs::Metadata) -> String {
format!("{}", meta.st_nlink())
}
fn format_size(meta: &fs::Metadata) -> String {
format!("{}", meta.len())
}
fn format_uid(meta: &fs::Metadata) -> String {
format!("{}", meta.st_uid())
}
fn format_gid(meta: &fs::Metadata) -> String {
format!("{}", meta.st_gid())
}
fn format_username(meta: &fs::Metadata) -> String {
format!("xxx")
}
fn format_group(meta: &fs::Metadata) -> String {
format!("xxx")
}
|