1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use std::os::unix::fs::PermissionsExt;
use std::path::Path;

use ex::fs;
use ex::io;

/// Set the file at `path` executable
pub fn set_exec<P: AsRef<Path>>(path: P) -> io::Result<()> {
    let path = path.as_ref();
    let mode = fs::metadata(path)?.permissions().mode();
    let mode = mode | umask::EXEC;
    let perm = fs::Permissions::from_mode(mode);
    fs::set_permissions(path, perm)?;
    Ok(())
}