| 1 |
use std::fs::OpenOptions; |
| 2 |
use std::io::{BufRead, BufReader}; |
| 3 |
|
| 4 |
pub(crate) fn get_timezone_inner() -> Result<String, crate::GetTimezoneError> { |
| 5 |
|
| 6 |
|
| 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 |
} |