diff options
Diffstat (limited to 'module/datetime')
-rw-r--r-- | module/datetime/app.scm | 18 | ||||
-rw-r--r-- | module/datetime/zic.scm | 5 |
2 files changed, 21 insertions, 2 deletions
diff --git a/module/datetime/app.scm b/module/datetime/app.scm new file mode 100644 index 00000000..9797ee39 --- /dev/null +++ b/module/datetime/app.scm @@ -0,0 +1,18 @@ +(define-module (datetime app) + :use-module (util) + :use-module (util app) + :use-module (ice-9 rdelim) + :use-module (datetime zic)) + +(define-method (init-app) + (setf 'zoneinfo + (let* ((pipe + (-> (@ (global) basedir) + dirname + (string-append "/tzget") + ((@ (ice-9 popen) open-input-pipe)))) + (path (read-line pipe)) + (names (string-split (read-line pipe) #\space))) + (read-zoneinfo + (map (lambda (s) (string-append path file-name-separator-string s)) + names))))) diff --git a/module/datetime/zic.scm b/module/datetime/zic.scm index 52457ada..02f3230f 100644 --- a/module/datetime/zic.scm +++ b/module/datetime/zic.scm @@ -19,7 +19,7 @@ :use-module (srfi srfi-9 gnu)) -(define-public (read-zoneinfo . ports-or-filenames) +(define-public (read-zoneinfo ports-or-filenames) (parsed-zic->zoneinfo (concatenate (map (lambda (port-or-filename) @@ -377,7 +377,8 @@ ;; group rules and put in map (awhen (assoc-ref groups 'rule) (for-each (lambda (group) - (hashq-set! rules (car group) (sort* (cadr group) < rule-from))) + (hashq-set! rules (car group) (sort* (cadr group) (lambda (a b) (if (eq? 'minimum) #t (< a b))) + rule-from))) (group-by rule-name (car it)))) ;; put zones in map |