diff options
Diffstat (limited to 'vendor/iana-time-zone/src/tz_illumos.rs')
-rw-r--r-- | vendor/iana-time-zone/src/tz_illumos.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/vendor/iana-time-zone/src/tz_illumos.rs b/vendor/iana-time-zone/src/tz_illumos.rs new file mode 100644 index 000000000..17b099b10 --- /dev/null +++ b/vendor/iana-time-zone/src/tz_illumos.rs @@ -0,0 +1,22 @@ +use std::fs::OpenOptions; +use std::io::{BufRead, BufReader}; + +pub(crate) fn get_timezone_inner() -> Result<String, crate::GetTimezoneError> { + // https://illumos.org/man/5/TIMEZONE + // https://docs.oracle.com/cd/E23824_01/html/821-1473/uc-timezone-4.html + + let file = OpenOptions::new().read(true).open("/etc/default/init")?; + let mut reader = BufReader::with_capacity(1536, file); + let mut line = String::with_capacity(80); + loop { + line.clear(); + let count = reader.read_line(&mut line)?; + if count == 0 { + return Err(crate::GetTimezoneError::FailedParsingString); + } else if line.starts_with("TZ=") { + line.truncate(line.trim_end().len()); + line.replace_range(..3, ""); + return Ok(line); + } + } +} |