summaryrefslogtreecommitdiffhomepage
path: root/src/platform
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/linux.rs12
-rw-r--r--src/platform/windows.rs19
2 files changed, 31 insertions, 0 deletions
diff --git a/src/platform/linux.rs b/src/platform/linux.rs
index 331e81c..00d4729 100644
--- a/src/platform/linux.rs
+++ b/src/platform/linux.rs
@@ -364,3 +364,15 @@ fn daemonize() {
}
}
}
+
+pub fn local_time() -> (i32, u8, u8, u8, u8, u8) {
+ unsafe {
+ let t = libc::time(std::ptr::null_mut());
+ let mut tm: libc::tm = std::mem::zeroed();
+ if t == -1 || libc::localtime_r(&t, &mut tm).is_null() {
+ return (0, 0, 0, 0, 0, 0);
+ };
+ (tm.tm_year + 1900, (tm.tm_mon + 1) as u8, tm.tm_mday as u8,
+ tm.tm_hour as u8, tm.tm_min as u8, tm.tm_sec as u8)
+ }
+}
diff --git a/src/platform/windows.rs b/src/platform/windows.rs
index 94fc185..c947b6a 100644
--- a/src/platform/windows.rs
+++ b/src/platform/windows.rs
@@ -25,6 +25,13 @@ use std::sync::{LazyLock, Mutex};
use std::thread;
use crate::{opt, pkt};
+fn pause() {
+ println!("Press any key to exit...");
+
+ unsafe extern "C" { fn _getch() -> i32; }
+ unsafe { _getch(); }
+}
+
fn open_handle(filter: &str, flags: prelude::WinDivertFlags) -> WinDivert<NetworkLayer> {
use windivert::*;
@@ -148,3 +155,15 @@ fn service_main() {
}
};
}
+
+pub fn local_time() -> (i32, u8, u8, u8, u8, u8) {
+ use std::mem::zeroed;
+ #[repr(C)]
+ struct SYSTEMTIME { y: u16, m: u16, _dow: u16, d: u16, h: u16, min: u16, s: u16, _ms: u16 }
+ unsafe extern "system" { fn GetLocalTime(st: *mut SYSTEMTIME); }
+ unsafe {
+ let mut st: SYSTEMTIME = zeroed();
+ GetLocalTime(&mut st);
+ (st.y as i32, st.m as u8, st.d as u8, st.h as u8, st.min as u8, st.s as u8)
+ }
+}