utils: Use 'scandir' instead of custom 'for-each-file'
* src/mcron/utils.scm (for-each-file): Delete. * src/mcron/scripts/cron.scm (process-files-in-system-directory): Use 'scandir' which has the benefit of being deterministic. * src/mcron/scripts/mcron.scm (process-files-in-user-directory): Likewise. * tests/schedule.sh: Update expected output which is now more reliable. * NEWS: Update. Suggested-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
09e452b62a
commit
f908c5395c
5 changed files with 26 additions and 36 deletions
2
NEWS
2
NEWS
|
|
@ -15,6 +15,8 @@ GNU Mcron NEWS -*- outline -*-
|
|||
Some basic tests for the installed programs can be run after 'make install'
|
||||
with 'make installcheck'.
|
||||
|
||||
The configuration files are now processed using a deterministic order.
|
||||
|
||||
* Noteworthy changes in release 1.1 (2018-03-19) [stable]
|
||||
|
||||
** New features
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;;; cron -- daemon for running jobs at scheduled times
|
||||
;;; Copyright © 2003, 2012 Dale Mellor <dale_mellor@users.sourceforge.net>
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Mcron.
|
||||
;;;
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
;;; along with GNU Mcron. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (mcron scripts cron)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (mcron base)
|
||||
#:use-module (mcron config)
|
||||
#:use-module (mcron job-specifier)
|
||||
|
|
@ -84,13 +85,13 @@ operation. The permissions on the /var/cron/tabs directory enforce this."
|
|||
|
||||
(catch #t
|
||||
(λ ()
|
||||
(for-each-file
|
||||
(for-each
|
||||
(λ (user)
|
||||
(and-let* ((entry (user-entry user))) ;crontab without user?
|
||||
(set-configuration-user entry)
|
||||
(catch-mcron-error
|
||||
(read-vixie-file (string-append config-spool-dir "/" user)))))
|
||||
config-spool-dir))
|
||||
(scandir config-spool-dir)))
|
||||
(λ (key . args)
|
||||
(mcron-error 4
|
||||
"You do not have permission to access the system crontabs."))))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;;; mcron -- run jobs at scheduled times
|
||||
;;; Copyright © 2003, 2012 Dale Mellor <dale_mellor@users.sourceforge.net>
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Mcron.
|
||||
;;;
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
;;; along with GNU Mcron. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (mcron scripts mcron)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (mcron base)
|
||||
#:use-module (mcron config)
|
||||
#:use-module (mcron job-specifier) ;for user/system files
|
||||
|
|
@ -49,11 +50,10 @@ $XDG_CONFIG_HOME is not defined uses ~/.config/cron instead)."
|
|||
(map (λ (dir)
|
||||
(catch #t
|
||||
(λ ()
|
||||
(for-each-file
|
||||
(λ (file)
|
||||
(for-each (λ (file)
|
||||
(process-user-file (string-append dir "/" file)
|
||||
#:input input-type))
|
||||
dir))
|
||||
(scandir dir)))
|
||||
(λ (key . args)
|
||||
(set! errors (1+ errors)))))
|
||||
(list (string-append home-directory "/.cron")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;;; utils.scm -- helper procedures
|
||||
;;; Copyright © 2003, 2012 Dale Mellor <dale_mellor@users.sourceforge.net>
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Mcron.
|
||||
;;;
|
||||
|
|
@ -29,7 +29,6 @@
|
|||
parse-args
|
||||
show-version
|
||||
show-package-information
|
||||
for-each-file
|
||||
process-update-request)
|
||||
#:re-export (option-ref
|
||||
read-string))
|
||||
|
|
@ -81,18 +80,6 @@ General help using GNU software: <http://www.gnu.org/gethelp/>\n"
|
|||
config-package-name
|
||||
config-package-url))
|
||||
|
||||
(define (for-each-file proc directory)
|
||||
"Apply PROC to each file in DIRECTORY. DIRECTORY must be a valid directory name.
|
||||
PROC must be a procedure that take one file name argument. The return value
|
||||
is not specified"
|
||||
(let ((dir (opendir directory)))
|
||||
(let loop ((file-name (readdir dir)))
|
||||
(if (eof-object? file-name)
|
||||
(closedir dir)
|
||||
(begin
|
||||
(proc file-name)
|
||||
(loop (readdir dir)))))))
|
||||
|
||||
(define (process-update-request fdes-list)
|
||||
"Read a user name from the socket, dealing with the /etc/crontab special
|
||||
case, remove all the user's jobs from the job list, and then re-read the
|
||||
|
|
|
|||
|
|
@ -41,14 +41,10 @@ EOF
|
|||
|
||||
cat > expected <<EOF
|
||||
Thu Jan 1 00:00:01 1970 +0000
|
||||
(display foo
|
||||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:01 1970 +0000
|
||||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:02 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -56,7 +52,7 @@ Thu Jan 1 00:00:02 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:03 1970 +0000
|
||||
Thu Jan 1 00:00:02 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -64,7 +60,7 @@ Thu Jan 1 00:00:03 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:04 1970 +0000
|
||||
Thu Jan 1 00:00:03 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -72,7 +68,7 @@ Thu Jan 1 00:00:04 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:05 1970 +0000
|
||||
Thu Jan 1 00:00:04 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -80,7 +76,7 @@ Thu Jan 1 00:00:05 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:06 1970 +0000
|
||||
Thu Jan 1 00:00:05 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -88,7 +84,7 @@ Thu Jan 1 00:00:06 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:07 1970 +0000
|
||||
Thu Jan 1 00:00:06 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -96,7 +92,7 @@ Thu Jan 1 00:00:07 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:08 1970 +0000
|
||||
Thu Jan 1 00:00:07 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -104,7 +100,7 @@ Thu Jan 1 00:00:08 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:09 1970 +0000
|
||||
Thu Jan 1 00:00:08 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -112,7 +108,7 @@ Thu Jan 1 00:00:09 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:10 1970 +0000
|
||||
Thu Jan 1 00:00:09 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
|
|
@ -120,6 +116,10 @@ Thu Jan 1 00:00:10 1970 +0000
|
|||
(display bar
|
||||
)
|
||||
|
||||
Thu Jan 1 00:00:10 1970 +0000
|
||||
(display foo
|
||||
)
|
||||
|
||||
EOF
|
||||
|
||||
mcron --schedule=10 > output
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue