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 30-Apr-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 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