mirror of
https://github.com/systemd/systemd.git
synced 2025-03-28 02:50:16 +03:00
run: check if the specified calendar event is not in the past
Check if calendar event specification passed by --on-calendar runs in some time in the future. If not, execute the given command immediately
This commit is contained in:
parent
b6411f716c
commit
10434dbdfd
@ -380,13 +380,31 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_with_timer = true;
|
||||
break;
|
||||
|
||||
case ARG_ON_CALENDAR:
|
||||
case ARG_ON_CALENDAR: {
|
||||
_cleanup_(calendar_spec_freep) CalendarSpec *cs = NULL;
|
||||
usec_t next, curr;
|
||||
|
||||
/* Let's make sure the given calendar event is not in the past */
|
||||
curr = now(CLOCK_REALTIME);
|
||||
r = calendar_spec_from_string(optarg, &cs);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse calendar event specification");
|
||||
r = calendar_spec_next_usec(cs, curr, &next);
|
||||
if (r < 0) {
|
||||
/* The calendar event is in the past - in such case
|
||||
* don't add an OnCalendar property and execute
|
||||
* the command immediately instead */
|
||||
log_warning("Specified calendar event is in the past, executing immediately");
|
||||
break;
|
||||
}
|
||||
|
||||
r = add_timer_property("OnCalendar", optarg);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
arg_with_timer = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case ARG_ON_TIMEZONE_CHANGE:
|
||||
r = add_timer_property("OnTimezoneChange", "yes");
|
||||
|
Loading…
x
Reference in New Issue
Block a user