1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use crate::errors::*;
use nix::sys::stat::Mode;
use std::path::{Path, PathBuf};

pub fn path_to_string(path: PathBuf) -> Result<String> {
    path.into_os_string()
        .into_string()
        .map_err(|e| anyhow!("Path contains invalid utf8: {:?}", e))
}

pub fn mkprivdir(path: &Path) -> Result<()> {
    match nix::unistd::mkdir(path, Mode::from_bits(0o700).unwrap()) {
        Ok(()) => Ok(()),
        Err(nix::Error::Sys(nix::errno::Errno::EEXIST)) => Ok(()),
        Err(err) => Err(Error::from(err)),
    }
}