2001.06.11
  initial release
2001.06.13
  renamed package from zeus to runwhen, and program from zeus to somewhen
  portability fixes
  fixed big bug with calendar calculations
2001.06.25
  factored somewhen into caldelay, maxdelay, and delayrun
  bugfix for default run time specs
  bugfix for now>mtime+$MAXINTERVAL
2001.07.01
  caldelay increases its inherited $DELAY instead of setting a new one
  maxdelay is now maxinterval; $LASTRUN is now $MAXINTERVAL_FILE
  somewhen is gone
  bugfix for unchecked failure of pathexec_env
2001.08.23
  recategorized in admin
  use new mkmed
  feature: caldelay: each time spec variable can contain multiple constraints,
    or'ed together
  bugfix: caldelay: calculate last day of month based on working month and
    year, not current month and year
  bugfix: caldelay: set increased=1 when advancing to next week
2001-09-01
  added dependency notes to README
2001-09-03
  new command: mininterval
2001-09-04
  feature: caldelay: -n time specs
  clean up exit codes
  bugfix: delayrun: don't unblock previously-blocked signals
2001-09-22
  bugfix: caldelay: handle =1=2 when current unit==1
2001-11-27
  bugfix: delayrun: leave SIGALRM blocked when not sleeping, even if
    we don't sleep at all, so an extra signal doesn't kill us
  cleanup: use errstat() to check errno
2001-12-07
  delayrun: ignore SIGALRM after sleeping, don't block, so we don't
    interfere with programs that use it
2002-02-21
  bugfix: delayrun: sigset arguments to sigprocmask were reversed
2003-04-09
  use new mkmed
  use skalibs
2003-06-04
  caldelay: silence gcc 3.3's warning about alloc() alignment
2003-08-10
  new commands: rw-add, rw-max, rw-min, rw-now, rw-sub, rw-wake
2003-08-12
  caldelay.c: don't need to cast alloc() argument
  new commands: rw-match
  added sample-service
2003-08-14
  rw-wake.c: simplify overflow check
2003-08-21
  rw-wake.c: improve timer.it_value.tv_sec overflow check
2003-09-10
  install runwhen.h and runwhen.a
2003-09-11
  factor rw_match.c; include it in runwhen=l
  use rw_ prefix for everything in runwhen.h
  use uint32 & uint64
  use timeval_from_taia & timeval_from_taia_relative
2003-09-14
  rw_scan.c: use tai_u64, not taia_ulong, to work with large values
2003-09-26
  move more of rw-match.c into rw_match.c
  rw_wake.c: make month and monthday 1-based
2003-09-30
  rw_match.c: fix constraints initialization
2003-10-04
  rename rw-wake* to rw-sleep*
  rw_scan.c: add 'n' case
  remove rw-now*
2003-10-14
  rw_match.c: use localtime/mktime instead of caldate
2003-10-15
  rw-match.c: add out-of-range error
  rw_match.c: fix weekday wraparound
2003-10-17
  merge rw_match.c into rw-match.c
  rw-match.c: disallow multiple constraints per unit
  rw_scan.c: add scaling factors for "d"
  rw-sleep.c, rw-touch.c: use pathexec0
2003-10-20
  rw-match.c: clear flag_increased when setting flag_need_increase
2003-10-21
  rw_scan.c: use mktime instead of caltime_tai
2003-10-30
  sample-service/run: bring it up to date with changes in command interfaces
