mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-08-06 07:57:48 +00:00
touch: turn macros into functions
This commit is contained in:
parent
dfc7a95054
commit
86422a70d2
1 changed files with 11 additions and 19 deletions
|
@ -36,23 +36,15 @@ pub mod options {
|
|||
|
||||
static ARG_FILES: &str = "files";
|
||||
|
||||
// Since touch's date/timestamp parsing doesn't account for timezone, the
|
||||
// returned value from time::strptime() is UTC. We get system's timezone to
|
||||
// localize the time.
|
||||
macro_rules! to_local(
|
||||
($exp:expr) => ({
|
||||
let mut tm = $exp;
|
||||
tm.tm_utcoff = time::now().tm_utcoff;
|
||||
tm
|
||||
})
|
||||
);
|
||||
fn to_local(mut tm: time::Tm) -> time::Tm {
|
||||
tm.tm_utcoff = time::now().tm_utcoff;
|
||||
tm
|
||||
}
|
||||
|
||||
macro_rules! local_tm_to_filetime(
|
||||
($exp:expr) => ({
|
||||
let ts = $exp.to_timespec();
|
||||
FileTime::from_unix_time(ts.sec as i64, ts.nsec as u32)
|
||||
})
|
||||
);
|
||||
fn local_tm_to_filetime(tm: time::Tm) -> FileTime {
|
||||
let ts = tm.to_timespec();
|
||||
FileTime::from_unix_time(ts.sec as i64, ts.nsec as u32)
|
||||
}
|
||||
|
||||
fn get_usage() -> String {
|
||||
format!("{0} [OPTION]... [USER]", executable!())
|
||||
|
@ -161,7 +153,7 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
|||
};
|
||||
(timestamp, timestamp)
|
||||
} else {
|
||||
let now = local_tm_to_filetime!(time::now());
|
||||
let now = local_tm_to_filetime(time::now());
|
||||
(now, now)
|
||||
};
|
||||
|
||||
|
@ -249,7 +241,7 @@ fn parse_date(str: &str) -> FileTime {
|
|||
// not about to implement GNU parse_datetime.
|
||||
// http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=lib/parse-datetime.y
|
||||
match time::strptime(str, "%c") {
|
||||
Ok(tm) => local_tm_to_filetime!(to_local!(tm)),
|
||||
Ok(tm) => local_tm_to_filetime(to_local(tm)),
|
||||
Err(e) => panic!("Unable to parse date\n{}", e),
|
||||
}
|
||||
}
|
||||
|
@ -267,7 +259,7 @@ fn parse_timestamp(s: &str) -> FileTime {
|
|||
};
|
||||
|
||||
match time::strptime(&ts, format) {
|
||||
Ok(tm) => local_tm_to_filetime!(to_local!(tm)),
|
||||
Ok(tm) => local_tm_to_filetime(to_local(tm)),
|
||||
Err(e) => panic!("Unable to parse timestamp\n{}", e),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue