-
- my $check_minute = sub {
- return $last if $mspec eq '*';
- foreach my $m (@$mspec) {
- return $last if $m == $min;
- if ($m > $min) {
- return $startofday +$hour*3600 + $m*60;
- }
+ # Test next week:
+ $t->[0] = $t->[1] = $t->[2] = 0; # sec = min = hour = 0
+ $t = time_add_days($t, 7 - $wday);
+ next outer;
+ this_wday:
+
+ goto this_hour if $hspec eq '*';
+ my $hour = $t->[2];
+ foreach my $h (@$hspec) {
+ goto this_hour if $h == $hour;
+ if ($h > $hour) {
+ $t->[0] = $t->[1] = 0; # sec = min = 0
+ $t->[2] = $h; # hour = $h
+ next outer;
+ }
+ }
+ # Test next day:
+ $t->[0] = $t->[1] = $t->[2] = 0; # sec = min = hour = 0
+ $t = time_add_days($t, 1);
+ next outer;
+ this_hour:
+
+ goto this_min if $mspec eq '*';
+ my $min = $t->[1];
+ foreach my $m (@$mspec) {
+ goto this_min if $m == $min;
+ if ($m > $min) {
+ $t->[0] = 0; # sec = 0
+ $t->[1] = $m; # min = $m
+ next outer;