todo
  * add timestamps to -d output

  * manual cron.update prodding doesn't affect cl_NotUntil

  * Use hash when ID=... is supplied. FS#18292.

  * FS#18352: Another thing: when moving the original file to the backup name, and the edited version is written in it's place, the file is written without preserving the same permissions as the original, so if you have a umask that prevents others from reading your stuff, crontab won't be able to load the new file.

git
  * Numeric loglevels specified by 'crond -l <level>' weren't being validated.
    Now we no longer accept numeric loglevels; they must be specified
    symbolically. Thanks to Rogutės Sparnuotos.

  * Continued portability improvements. Makefile now uses -lbsd-compat.
    Factored allocation and string calls to utils.c.

  * Many internal changes and annotations to pass splint review.

  * Documentation and error message updates.

v4.5  1-May-2011
  * Some cron jobs were running multiple times. Now we make sure not to
    ArmJobs that are already running; and not to resynchronize while jobs are
    running; and to poll the DST setting. (Fixes Arch FS#18681; thanks to Vincent
    Cappe and Paul Gideon Dann for identifying the second issue; and Tilman
    Sauerbeck for identifying the third.)

  * @monthly was wrongly being parsed the same as @yearly (fixes Arch
    FS#19123). Thanks to Peter Johnson, Paul Gideon Dann, and Tilman Sauerbeck.

  * extra/crond.rc: now uses $CROND_ARGS from /etc/conf.d/crond; sample included
    as extra/crond.conf. Suggested by Eric Bélanger.

  * Running `/etc/rc.d/crond start` after startup could leak unwanted
    environment into cronjobs; now we force crond to start in empty env
    (fixes Arch FS#22085). Thanks to Mantas.

  * Also set LOGNAME environment variable in cronjobs. Requested by Michael
    Trunner; fixes Arch FS#18338.

  * extra/crond.logrotate now correctly gets pid from /var/run/crond.pid
    (fixes Arch FS#18039). Thanks to Kay Abendroth, revel, and Chlump Chatkupt.

  * extra/prune-cronstamps now only deletes files, and is formatted as a
    @weekly crontab. Thanks to Alec Moskvin <alecm@gmx.com>.

  * extra/crontab.vim works around an issue where vim's writebackup would
    interfere with crontab's security model (addresses Arch FS#18352).
    Thanks to Armadillo and Simon Williams.

  * Makefile uses $LDFLAGS (fixes Arch FS#23784). Thanks to Kristoffer Tidemann
    and Mike Frysinger.

  * defs.h sets default locations for CRONTABS and CRONSTAMPS beneath /var/spool/cron/,
    as in earlier versions of dcron.

  * Documentation updates.

  * Thanks for testing and feedback: Feifei Jia, Spider.007, Ray Kohler,
    Igor Zakharoff, Edward Hades, and Joe Lightning.

v4.4  17-Jan-2010
  * Finished mailjobs were being left as zombie processes. Fixed.

  * When using crond with logging-to-file, user jobs could only log some
    events if they had write access to the log. Fixed this by having crond
    keep a file descriptor open to the log; also added a SIGHUP handler
    to make crond re-open the logfile. The sample logrotate script now
    sends that signal.

  * More sensible command-line parsing by crontab.

  * Add prune-cronstamps to extra; document extra/*; general improvement
    of README and manpages.

  * Portability improvements, and defs.h now has fuller comments about
    requirements.

  * Makefile improvements: `make` now caches variables for `make install`;
    don't stomp CFLAGS environment variable, and added BINDIR,SBINDIR,MANDIR.

  * Thanks to Juergen Daubert for more testing and suggestions.

v4.3  11-Jan-2010
  * Internal refactoring to make buffer overflow checks
    clearer and portability issues more explicit.

  * Made file argument to -L mandatory; optional args to
    getopt needs GNU extensions.

  * Makefile tweaks. Added CRONTAB_GROUP for `make install`.
    Renamed TIMESTAMPS -> CRONSTAMPS.

  * Thanks to Juergen Daubert for testing and suggestions.

v4.2  11-Jan-2010
  * Makefile tweaks; moved more constants to #defines.

v4.1  10-Jan-2010
  * Fixed bug in parsing some numeric fields in crontabs. (Terminus of range
    wasn't being modded.)

  * Updated Makefile to make it easier to customize timestamps at configure
    time. Also, if LC_TIME is defined when crond runs, we use that instead of
    compiled-in default (for logging to files, to customize syslog output use
    syslog-ng's 'template' command).

  * Fixed Makefile permissions on crond and crontab binaries.

v4.0  6-Jan-2010
  * Jim Pryor took over development; folded in changes from his fork "yacron"

  * Applied "Daniel's patch" from dcron 3.x tarballs to enable logging to syslog or
    files. Added further logging improvements.

  * Added -m user@host and -M mailer options

  * Various crontab syntax extensions, including "2nd Monday of every month",
    @reboot, @daily, and finer-grained frequency specifiers.

  * Jobs can wait until AFTER other jobs have finished.

  * Enhanced parsing of cron.update file, to make it possible for scripts to
    interact with a running crond in limited ways.

  * Various internal changes

  * Updated Makefile, manpage buildchain, and docs

v3.2
    Fixed a minor bug, remove the newline terminating a line only if there
    is a newline to remove.

v3.1
    Add support for root-run crontab files in /etc/cron.d and rewrite a
    good chunk of the crontab file management code.  By VMiklos and Matt
    Dillon.

v3.0
    Fix /tmp race and misc cleanups from Emiel Kollof <emiel@gamepoint.net>

v2.9
    Modernize the code, remove strcpy() and sprintf() in favor of snprintf().
    (Supplied by Christine Jamison <technobabe@mail.nwmagic.net>)

v2.8
    Fixed bug found by Christian HOFFMANN.  newline removal was broken
    for lines that began with whitespace, causing crontab lines to be
    chopped off.

v2.7
    Committed changes suggested by
    Ragnar Hojland Espinosa <ragnar@redestb.es>

    Fixed a few printfs, removed strdup() function ( strdup() is now standard
    in all major clib's )

v2.4-2.6
    ( changes lost )

v2.3
    dillon: Fixed bug in job.c -- if ChangeUser() fails, would return from child fork rather
        then exit!  Oops.

v2.2
    dillon: Initial release

