diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2018-03-20 14:44:54 +0100 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2018-03-20 19:27:10 +0100 |
commit | f908c5395c24da621e5e30814a7a3e4fb76abcbc (patch) | |
tree | 27746720c8c9768f63c1bf4e95ad88407fc8551b | |
parent | 09e452b62a82845736e638eecd762a911d95a349 (diff) | |
download | mcron-f908c5395c24da621e5e30814a7a3e4fb76abcbc.tar.gz mcron-f908c5395c24da621e5e30814a7a3e4fb76abcbc.tar.bz2 mcron-f908c5395c24da621e5e30814a7a3e4fb76abcbc.zip |
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>
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | src/mcron/scripts/cron.scm | 7 | ||||
-rw-r--r-- | src/mcron/scripts/mcron.scm | 12 | ||||
-rw-r--r-- | src/mcron/utils.scm | 15 | ||||
-rw-r--r-- | tests/schedule.sh | 26 |
5 files changed, 26 insertions, 36 deletions
@@ -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 diff --git a/src/mcron/scripts/cron.scm b/src/mcron/scripts/cron.scm index 5052c32..323499e 100644 --- a/src/mcron/scripts/cron.scm +++ b/src/mcron/scripts/cron.scm @@ -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.")))) diff --git a/src/mcron/scripts/mcron.scm b/src/mcron/scripts/mcron.scm index afb380f..6545ada 100644 --- a/src/mcron/scripts/mcron.scm +++ b/src/mcron/scripts/mcron.scm @@ -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) - (process-user-file (string-append dir "/" file) - #:input input-type)) - dir)) + (for-each (λ (file) + (process-user-file (string-append dir "/" file) + #:input input-type)) + (scandir dir))) (λ (key . args) (set! errors (1+ errors))))) (list (string-append home-directory "/.cron") diff --git a/src/mcron/utils.scm b/src/mcron/utils.scm index 062e756..bb23f4a 100644 --- a/src/mcron/utils.scm +++ b/src/mcron/utils.scm @@ -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 diff --git a/tests/schedule.sh b/tests/schedule.sh index 5ea79e5..d403f1d 100644 --- a/tests/schedule.sh +++ b/tests/schedule.sh @@ -41,14 +41,10 @@ EOF cat > expected <<EOF Thu Jan 1 00:00:01 1970 +0000 -(display foo -) - -Thu Jan 1 00:00:01 1970 +0000 (display bar ) -Thu Jan 1 00:00:02 1970 +0000 +Thu Jan 1 00:00:01 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 |