[![Latest Version]][crates.io] [![Documentation]][docs.rs] ![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. ```rust 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. [crates.io]: https://crates.io/crates/file-mode [Latest Version]: https://img.shields.io/crates/v/file-mode.svg [Documentation]: https://docs.rs/file-mode/badge.svg [docs.rs]: https://docs.rs/file-mode [License]: https://img.shields.io/crates/l/file-mode.svg