Subject: shepherd: cron-string->calendar-event does not seem to work
From: Tomas Volf <[email-masked]>
To: [email-masked]
Date: Sat, 25 Jan 2025 20:06:49 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Five asterisks (* * * * *) is a valid cron time specification, but
cron-string->calendar-event chokes one it:

--8<---------------cut here---------------start------------->8---
$ guix shell guile shepherd guile-fibers -- guile -c '(use-modules (shepherd service timer)) (cron-string->calendar-event "* * * * *")'
Backtrace:
In ice-9/boot-9.scm:
  1752:10  7 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           6 (apply-smob/0 #<thunk 7f8d870d7300>)
In ice-9/boot-9.scm:
    724:2  5 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (guile-user) 7f8d870dac80>)))
In ice-9/command-line.scm:
   185:19  3 (_ #<input: string 7f8d870d4850>)
In unknown file:
           2 (eval (cron-string->calendar-event "* * * * *") #<direc…>)
In shepherd/service/timer.scm:
    155:2  1 (calendar-event #:seconds _ #:minutes _ #:hours _ # _ # …)
In srfi/srfi-1.scm:
    634:9  0 (for-each #<procedure 7f8d7f382a80 at shepherd/service…> …)

srfi/srfi-1.scm:634:9: In procedure for-each:
ERROR:
  1. &message: "calendar-event: hours: 24: value out of range (0-23)"
--8<---------------cut here---------------end--------------->8---

I *think* on line 450 in timer.scm there should be `(hours 24 0)'
instead of the current `(hours 60 0)'.

Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.