Crates.io | file-mode |
lib.rs | file-mode |
version | 0.1.2 |
source | src |
created_at | 2021-02-24 11:58:22.111666 |
updated_at | 2021-02-24 12:03:09.983672 |
description | Decode Unix file mode bits, change them and apply them to files |
homepage | https://sr.ht/~jpastuszek/file-mode/ |
repository | https://git.sr.ht/~jpastuszek/file-mode |
max_upload_size | |
id | 359943 |
size | 72,937 |
Decode Unix file mode bits, change them and apply them to files.
All file type, special and protection bits described in sys/stat.h
are represented.
The Mode
object can represent a file mode partially by the use of a bitmask. Only modified bits will be changed in the target file.
Modifications specific only to directories (search) are handled correctly.
use std::path::Path;
use file_mode::{ModePath, User};
let mode = Path::new("LICENSE").mode().unwrap();
// query bits
assert!(mode.file_type().unwrap().is_regular_file());
assert!(mode.user_protection(User::Owner).is_read_set());
assert!(mode.user_protection(User::Group).is_write_set());
assert!(!mode.user_protection(User::Other).is_execute_set());
// print as string
println!("{}", mode); // -rw-rw-r--
assert_eq!(&mode.to_string(), "-rw-rw-r--");
// apply chmod string
Path::new("LICENSE").set_mode("u+r,g+u").unwrap();
See module level documentation on docs.rs for more examples.