SummaryRefsLogTreeCommitDiffStats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mcron/base.scm44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/mcron/base.scm b/src/mcron/base.scm
index 572d45b..edcf1bc 100644
--- a/src/mcron/base.scm
+++ b/src/mcron/base.scm
@@ -27,6 +27,7 @@
(define-module (mcron base)
#:use-module (ice-9 match)
+ #:use-module (ice-9 control)
#:use-module (mcron environment)
#:use-module (mcron utils)
#:use-module (srfi srfi-1)
@@ -224,25 +225,24 @@ next value."
'(() () ())
(apply throw args)))))))
- (call-with-current-continuation
- (lambda (break)
- (let loop ()
- (match (find-next-jobs #:schedule schedule)
- ((next-time . next-jobs-lst)
- (let ((sleep-time (if next-time
- (- next-time (current-time))
- 2000000000)))
- (when (> sleep-time 0)
- (match (select* fd-list '() '() sleep-time)
- ((() () ())
- ;; 'select' returned an empty set, perhaps because it got
- ;; EINTR or EAGAIN. It's a good time to wait for child
- ;; processes.
- (child-cleanup))
- (((lst ...) () ())
- ;; There's some activity so leave the loop.
- (break))))
-
- (for-each run-job next-jobs-lst)
- (child-cleanup)
- (loop))))))))
+ (let/ec break
+ (let loop ()
+ (match (find-next-jobs #:schedule schedule)
+ ((next-time . next-jobs-lst)
+ (let ((sleep-time (if next-time
+ (- next-time (current-time))
+ 2000000000)))
+ (when (> sleep-time 0)
+ (match (select* fd-list '() '() sleep-time)
+ ((() () ())
+ ;; 'select' returned an empty set, perhaps because it got
+ ;; EINTR or EAGAIN. It's a good time to wait for child
+ ;; processes.
+ (child-cleanup))
+ (((lst ...) () ())
+ ;; There's some activity so leave the loop.
+ (break))))
+
+ (for-each run-job next-jobs-lst)
+ (child-cleanup)
+ (loop)))))))