#unix-file #mode #file #unix #chmod #target-file #object-file

bin+lib file-mode

Decode Unix file mode bits, change them and apply them to files

3 releases

0.1.2 Feb 24, 2021
0.1.1 Feb 24, 2021
0.1.0 Feb 24, 2021

#10 in #target-file

Download history 1030/week @ 2024-07-22 644/week @ 2024-07-29 829/week @ 2024-08-05 672/week @ 2024-08-12 512/week @ 2024-08-19 535/week @ 2024-08-26 625/week @ 2024-09-02 617/week @ 2024-09-09 519/week @ 2024-09-16 799/week @ 2024-09-23 649/week @ 2024-09-30 768/week @ 2024-10-07 1360/week @ 2024-10-14 1855/week @ 2024-10-21 1456/week @ 2024-10-28 907/week @ 2024-11-04

5,615 downloads per month
Used in 12 crates (9 directly)

MIT license

68KB
1.5K SLoC

Latest Version Documentation License

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.

Dependencies

~175KB