1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#![allow(dead_code)]
use crate::extra::read_lines;
use std::path::PathBuf;
pub fn pkgdb_dir() -> Option<PathBuf> {
if cfg!(target_os = "netbsd") {
if let Ok(lines) = read_lines("/etc/mk.conf") {
for line in lines.flatten() {
if line.starts_with("PKG_DBDIR") {
let pkg_db = PathBuf::from(line.split('=').nth(1).unwrap().trim().to_string());
if pkg_db.is_dir() {
return Some(pkg_db);
}
}
continue;
}
}
return Some(PathBuf::from("/usr/pkg/pkgdb"));
}
None
}
pub fn localbase_dir() -> Option<PathBuf> {
if cfg!(target_os = "netbsd") {
if let Ok(lines) = read_lines("/etc/mk.conf") {
for line in lines.flatten() {
if line.starts_with("LOCALBASE") {
let localbase =
PathBuf::from(line.split('=').nth(1).unwrap().trim().to_string());
if localbase.is_dir() {
return Some(localbase);
}
}
continue;
}
}
return Some(PathBuf::from("/usr/pkg"));
}
None
}
pub fn usr_share_dir() -> Option<PathBuf> {
if cfg!(target_os = "linux") {
return Some(PathBuf::from("/usr/share"));
}
None
}
pub fn macos_config_dir() -> Option<PathBuf> {
if cfg!(target_os = "macos") {
if let Ok(home) = std::env::var("HOME") {
return Some(PathBuf::from(home).join(".config"));
}
return None;
}
None
}