fn find_program_in_paths()

in reverie-process/src/builder.rs [736:758]


fn find_program_in_paths<I, S>(program: &Path, iter: I) -> Option<PathBuf>
where
    I: IntoIterator<Item = S>,
    S: AsRef<Path>,
{
    for path in iter.into_iter() {
        let path = path.as_ref().join(program);
        if let Ok(metadata) = path.metadata() {
            if metadata.is_file() {
                if metadata.permissions().mode() & 0o111 != 0 {
                    return Some(path);
                } else {
                    continue;
                }

                #[cfg(not(unix))]
                return Some(path);
            }
        }
    }

    None
}