From b7e6b5132a0ec0e760ccad278a1378a27c90fd60 Mon Sep 17 00:00:00 2001 From: rascul Date: Mon, 26 Aug 2019 18:40:18 -0500 Subject: [PATCH] perms module for permissions --- src/main.rs | 1 + src/perms.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/perms.rs diff --git a/src/main.rs b/src/main.rs index fb9d6eb..dc32560 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,7 @@ mod config; mod dirs; mod error; mod files; +mod perms; mod skel; use std::path::PathBuf; diff --git a/src/perms.rs b/src/perms.rs new file mode 100644 index 0000000..3cd864f --- /dev/null +++ b/src/perms.rs @@ -0,0 +1,27 @@ +use std::fs::{set_permissions, metadata, Permissions}; +use std::path::PathBuf; + +use crate::error::*; + +pub fn get_perms(path: &PathBuf) -> MkrootResult { + match metadata(path) { + Ok(meta) => Ok(meta.permissions()), + Err(e) => Err(MkrootError::from(format!( + "Error retrieving metadata {}: {}", + path.display(), + e + ))), + } +} + +pub fn set_perms(path: &PathBuf, perms: Permissions) -> MkrootResult<()> { + if let Err(e) = set_permissions(path, perms) { + return Err(MkrootError::from(format!( + "Error setting permissions {}: {}", + path.display(), + e + ))); + } + + Ok(()) +}