OXYGENHUB
◆ only-help-103 oxygen / vendor / iana-time-zone / src / tz_illumos.rs
799 B · Rust · last changed Strata: the cloud stores send through ureq, so every release target links 1 month ago source blame history raw
1
use std::fs::OpenOptions;
2
use std::io::{BufRead, BufReader};
3
4
pub(crate) fn get_timezone_inner() -> Result<String, crate::GetTimezoneError> {
5
    // https://illumos.org/man/5/TIMEZONE
6
    // https://docs.oracle.com/cd/E23824_01/html/821-1473/uc-timezone-4.html
7
8
    let file = OpenOptions::new().read(true).open("/etc/default/init")?;
9
    let mut reader = BufReader::with_capacity(1536, file);
10
    let mut line = String::with_capacity(80);
11
    loop {
12
        line.clear();
13
        let count = reader.read_line(&mut line)?;
14
        if count == 0 {
15
            return Err(crate::GetTimezoneError::FailedParsingString);
16
        } else if line.starts_with("TZ=") {
17
            line.truncate(line.trim_end().len());
18
            line.replace_range(..3, "");
19
            return Ok(line);
20
        }
21
    }
22
}