summaryrefslogtreecommitdiffstats
path: root/vendor/iana-time-zone/src/tz_illumos.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/iana-time-zone/src/tz_illumos.rs')
-rw-r--r--vendor/iana-time-zone/src/tz_illumos.rs22
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);
+ }
+ }
+}