base: Add 'display-schedule' procedure
This procedure is a more generic and less coupled version of 'get-schedule' which has been kept for backward compatibility and deprecated. * src/mcron/base.scm (display-schedule): New procedure. (get-schedule): Move to ... * src/mcron/core.scm: ... here. * src/mcron/scripts/cron.scm (main): Use 'display-schedule'. * src/mcron/scripts/mcron.scm (main): Likewise. * doc/mcron.texi (The base module): Document it.
This commit is contained in:
parent
b80020ef78
commit
5f83aef90f
5 changed files with 32 additions and 32 deletions
|
|
@ -1233,9 +1233,12 @@ entry. All jobs on the current job list that are scheduled to be run
|
||||||
under this personality are removed from the job list.
|
under this personality are removed from the job list.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn{Scheme procedure} get-schedule count
|
@deffn{Scheme procedure} display-schedule @var{count} [@var{port}]
|
||||||
@cindex schedule of jobs
|
@cindex schedule of jobs
|
||||||
The argument @var{count} should be an integer value giving the number
|
This procedure is used to display a textual list of the next COUNT jobs
|
||||||
|
to run.
|
||||||
|
|
||||||
|
The argument @var{count} must be an integer value giving the number
|
||||||
of time-points in the future to report that jobs will run as. Note
|
of time-points in the future to report that jobs will run as. Note
|
||||||
that this procedure is disruptive; if @code{run-job-loop} is called
|
that this procedure is disruptive; if @code{run-job-loop} is called
|
||||||
after this procedure, the first job to run will be the one after the
|
after this procedure, the first job to run will be the one after the
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
#:export (add-job
|
#:export (add-job
|
||||||
remove-user-jobs
|
remove-user-jobs
|
||||||
get-schedule
|
display-schedule
|
||||||
run-job-loop
|
run-job-loop
|
||||||
;; Deprecated and undocumented procedures.
|
;; Deprecated and undocumented procedures.
|
||||||
use-system-job-list
|
use-system-job-list
|
||||||
|
|
@ -136,35 +136,27 @@ recurse the list."
|
||||||
(else
|
(else
|
||||||
(loop rest next-time next-jobs))))))))
|
(loop rest next-time next-jobs))))))))
|
||||||
|
|
||||||
;; Create a string containing a textual list of the next count jobs to run.
|
(define* (display-schedule count #:optional (port (current-output-port)))
|
||||||
;;
|
"Display on PORT a textual list of the next COUNT jobs to run. This
|
||||||
;; Enter a loop of displaying the next set of jobs to run, artificially
|
simulates the run of the job loop to display the resquested information.
|
||||||
;; forwarding the time to the next time point (instead of waiting for it to
|
Since calling this procedure has the effect of mutating the job timings, the
|
||||||
;; occur as we would do in a normal run of mcron), and recurse around the loop
|
program must exit after. Otherwise the internal data state will be left
|
||||||
;; count times.
|
unusable."
|
||||||
;;
|
(unless (<= count 0)
|
||||||
;; Note that this has the effect of mutating the job timings. Thus the program
|
(match (find-next-jobs)
|
||||||
;; must exit after calling this function; the internal data state will be left
|
((#f . jobs)
|
||||||
;; unusable.
|
#f)
|
||||||
|
((time . jobs)
|
||||||
(define (get-schedule count)
|
(let ((date-string (strftime "%c %z\n" (localtime time))))
|
||||||
(with-output-to-string
|
|
||||||
(lambda ()
|
|
||||||
(do ((count count (- count 1)))
|
|
||||||
((eqv? count 0))
|
|
||||||
(and-let*
|
|
||||||
((next-jobs (find-next-jobs))
|
|
||||||
(time (car next-jobs))
|
|
||||||
(date-string (strftime "%c %z\n" (localtime time))))
|
|
||||||
(for-each (lambda (job)
|
(for-each (lambda (job)
|
||||||
(display date-string)
|
(display date-string port)
|
||||||
(display (job:displayable job))
|
(display (job:displayable job) port)
|
||||||
(newline)(newline)
|
(newline port)
|
||||||
|
(newline port)
|
||||||
(job:next-time-set! job ((job:next-time-function job)
|
(job:next-time-set! job ((job:next-time-function job)
|
||||||
(job:next-time job))))
|
(job:next-time job))))
|
||||||
(cdr next-jobs)))))))
|
jobs))))
|
||||||
|
(display-schedule (- count 1) port)))
|
||||||
|
|
||||||
|
|
||||||
;; For proper housekeeping, it is necessary to keep a record of the number of
|
;; For proper housekeeping, it is necessary to keep a record of the number of
|
||||||
;; child processes we fork off to run the jobs.
|
;; child processes we fork off to run the jobs.
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,10 @@
|
||||||
|
|
||||||
(define-module (mcron core)
|
(define-module (mcron core)
|
||||||
#:use-module (mcron base)
|
#:use-module (mcron base)
|
||||||
|
#:export (;; Deprecated
|
||||||
|
get-schedule)
|
||||||
#:re-export (add-job
|
#:re-export (add-job
|
||||||
remove-user-jobs
|
remove-user-jobs
|
||||||
get-schedule
|
|
||||||
run-job-loop
|
run-job-loop
|
||||||
clear-environment-mods
|
clear-environment-mods
|
||||||
append-environment-mods
|
append-environment-mods
|
||||||
|
|
@ -30,3 +31,7 @@
|
||||||
use-system-job-list
|
use-system-job-list
|
||||||
use-user-job-list
|
use-user-job-list
|
||||||
clear-system-jobs))
|
clear-system-jobs))
|
||||||
|
|
||||||
|
(define (get-schedule count)
|
||||||
|
(with-output-to-string
|
||||||
|
(lambda () (display-schedule count))))
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ option.\n")
|
||||||
(option-ref opts 'noetc #f))
|
(option-ref opts 'noetc #f))
|
||||||
(cond ((option-ref opts 'schedule #f) ;display jobs schedule
|
(cond ((option-ref opts 'schedule #f) ;display jobs schedule
|
||||||
=> (λ (count)
|
=> (λ (count)
|
||||||
(display (get-schedule (max 1 (string->number count))))
|
(display-schedule (max 1 (string->number count)))
|
||||||
(exit 0)))
|
(exit 0)))
|
||||||
(else (case (primitive-fork) ;run the daemon
|
(else (case (primitive-fork) ;run the daemon
|
||||||
((0)
|
((0)
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ $XDG_CONFIG_HOME is not defined uses ~/.config/cron instead)."
|
||||||
|
|
||||||
(cond ((assq-ref opts 'schedule) ;display jobs schedule
|
(cond ((assq-ref opts 'schedule) ;display jobs schedule
|
||||||
=> (λ (count)
|
=> (λ (count)
|
||||||
(display (get-schedule (max 1 count)))
|
(display-schedule (max 1 count))
|
||||||
(exit 0)))
|
(exit 0)))
|
||||||
((assq-ref opts 'daemon) ;run mcron as a daemon
|
((assq-ref opts 'daemon) ;run mcron as a daemon
|
||||||
(case (primitive-fork)
|
(case (primitive-fork)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue