diff options
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | src/mcron/job-specifier.scm | 24 | ||||
-rw-r--r-- | tests/job-specifier.scm | 4 |
3 files changed, 19 insertions, 15 deletions
@@ -10,6 +10,12 @@ GNU Mcron NEWS -*- outline -*- The programs now sets the GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH environment variables with the location of the installed Guile modules. + 'next-year-from', 'next-year', 'next-month-from', 'next-month', + 'next-day-from', 'next-day', 'next-hour-from', 'next-hour', + 'next-minute-from', 'next-minute', 'next-second-from', and 'next-second' no + longer crashes when passing an optional arguments. + [bug introduced in mcron-1.1] + ** Improvements Some basic tests for the installed programs can be run after 'make install' diff --git a/src/mcron/job-specifier.scm b/src/mcron/job-specifier.scm index e3b3391..d3d3a2a 100644 --- a/src/mcron/job-specifier.scm +++ b/src/mcron/job-specifier.scm @@ -85,21 +85,15 @@ go into the list. For example, (range 1 6 2) returns '(1 3 5)." ;; ;; ... except that the function is actually generalized to deal with ;; seconds, minutes, etc., in an obvious way :-) - ;; - ;; Note that value-list always comes from an optional argument to a - ;; procedure, so is wrapped up as the first element of a list (i.e. it is a - ;; list inside a list). - (match value-list - (() - (set-component! time (1+ (component time)))) - ((val . rest) - (match (%find-best-next (component time) val) - ((smallest . closest+) - (cond ((inf? closest+) - (set-higher-component! time (1+ (higher-component time))) - (set-component! time smallest)) - (else - (set-component! time closest+))))))) + (if (null? value-list) + (set-component! time (1+ (component time))) + (match (%find-best-next (component time) value-list) + ((smallest . closest+) + (cond ((inf? closest+) + (set-higher-component! time (1+ (higher-component time))) + (set-component! time smallest)) + (else + (set-component! time closest+)))))) (first (mktime time))) ;; Set of configuration methods which use the above general function to bump diff --git a/tests/job-specifier.scm b/tests/job-specifier.scm index 48a46de..dbf98f0 100644 --- a/tests/job-specifier.scm +++ b/tests/job-specifier.scm @@ -49,4 +49,8 @@ (match (pk 'match (%find-best-next 1 '(0 2))) ((a . b) (and (exact? a) (exact? b))))) +(test-equal "next-hour-from" + 7200 + (next-hour-from 10 '(0 3 7))) + (test-end) |