| Crates.io | file-mode |
| lib.rs | file-mode |
| version | 0.1.2 |
| created_at | 2021-02-24 11:58:22.111666+00 |
| updated_at | 2021-02-24 12:03:09.983672+00 |
| 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.