   #Fcron documentation Fcron: how and why? How to install fcron Release
   notes: fcron 3.3.3

   Copyright © 2000-2025 Thibault Godouet Fcron 3.3.3 (dev release) Web
   page : http://fcron.free.fr
   _______________________________________________________________________

             Fcron documentation
   Prev Chapter 1. Fcron: how and why? Next
   _______________________________________________________________________

1.3. Changes

   From version 3.3.2 to 3.3.3
     * Fixed infinite loop when an lavg job reaches its 'until' deadline
       and gets rescheduled as the next job to run.
     * Improved signal safety.
     * Improved log messages for: indentation, resume after suspend, child
       task completion.
     * Fixed compilation warnings: SELinux, signal handling.
     * Updated copyright years.

   From version 3.3.1 to 3.3.2
     * Add compilation option (configure's
       '--with-max-fcrontab-reload-delay-seconds') to allow faster or even
       instant reload for non-root users (thanks Elliot Wolk).
     * Added fcron.conf option 'maildisplayname', to configure the
       displayname fcron uses when sending email. This allows fcron to be
       configured ot be RFC5322-compliant (thanks Marco Emilio "sphakka"
       Poleggi)
     * Fixed fcrondyn output issue where two lines would be joined due to
       a long shell command.
     * Improve documentation wording (thanks Michael Kopp)

   From version 3.3.0 to 3.3.1
     * Updated SELinux code to stop using deprecated headers (fixes build
       on more recent systems)
     * Install programs with R/W perms for the owner
     * Fixed @reboot when using systemd
     * Various other fixes and improvements in doc, install and boot
       scripts (in particular under systemd)

   From version 3.2.1 to 3.3.0
     * fcron now handles computer suspend/resume. On Linux systems, fcron
       can detect resumes and measure the suspend time. On other OSes, a
       script must be run at suspend and resume via system hooks.
     * Added a new option 'runatresume' (as well as a Vixie-cron-style
       '@resume' shortcut), to run a job when the system resumes from
       suspend/hibernation.
     * Refactored the socket (for fcrondyn), suspend and select code.

   From version 3.2.0 to 3.2.1
     * @-line can now be run every second (minimum every 10s previously)
     * Fixed occasional 1s slippage. This was due to a race condition
       between when time_to_sleep is run and when we compute how long to
       sleep for, which could happen in the following second: if that
       happened we end up sleeping for 1s instead of not sleeping at all.
       The fix was to replace time_to_sleep() by next_wake_time().
     * add From: header to emails. Similarly to other crons, use: "From:
       %s (fcron)" with %s being either the user the job is run as or the
       value of MAILFROM.
     * The installation script now supports systemd fully.

   From version 3.1.3 to 3.2.0
     * Print date as %Y-%m-%d (the ISO 8601 date format), to avoid being
       ambiguous in international context. Also always use the ':' as
       hour:minute separator (there was a couple of 'h' instead).
     * Don't fully disable a @-line when something goes wrong (e.g. fcron
       didn't shut down cleanly). The idea was to prevent infinite loops,
       but this was overkill. Instead set its next execution to
       now+frequency.`
     * Cosmetic changes in the log lines (quote the job shell commands)
       and fcrondyn (use the pipe char "|" as a column separator).
     * Fixed file descriptor leak when executing jobs in case of NSS
       failures (thanks Pavel Stano).

   From version 3.1.2 to 3.1.3
     * Fixed compilation on Solaris 10, and fixed fcrondyn authentication
       without a password on that platform.
     * Fixed bug where LONG_MAX could potentially be used in functions
       like localtime(), which is too big for localtime(). This was
       unlikely to happen unless there was another problem in the first
       place.
     * fcrondyn -x no longer adds null characters at the end of the
       output. This would cause problems if the output was piped to
       something as grep. Thanks Dimitri Semitsoglou-Tsiapos for pointing
       this out.
     * Fixed minor bug in fcronsighup resulting in log errors about
       closing the signal file
     * fcrondyn no longer crashes when receiving an EOF when using
       readline (thanks Wade Carpenter for the patch)
     * fcrontab no longer crash if mailto is empty (thanks Olaf for
       reporting the issue)
     * Fixed SELinux issue with Linux user being used instead of the
       SELinux user (thanks Sven Vermeulen for the patch)

   From version 3.1.1 to 3.1.2
     * bug fix: fixed fcron crash bug when using fcrondyn
     * bug fix: the configure option --without-sendmail was not working
       correctly.
     * bug fix: inline runas wouldn't work with Vixie-cron style shortcut
       lines.
     * bug fix: fixed bug in the code to log to a file.
     * systemd: fixed the installation on systems using systemd, and also
       don't kill jobs when killing fcron.
     * Made file closures more robust to prevent bugs difficult to
       troubleshoot to creep in.

   From version 3.1.0 to 3.1.1
     * Added readline support for fcrondyn
     * tweaked 'make indent' options and applied
     * Fcron can now log to a file (without syslog) - thanks Matthew
       Signorini.
     * fixed fcrontab edition of *ly lines (hourly, daily, etc)
     * fixed fcron crashes when noticenotrun was triggered

   From version 3.0.6 to 3.1.0
     * Vixie cron compatibility: added options @reboot, @daily, @hourly,
       etc. Also added more generic options runatreboot, rebootreset and
       runonce.
     * Pass fcrondyn client credentials through the socket when possible
       so as the user doesn't need to type their password when using
       fcrondyn.
     * added audit (libaudit) support
     * Better validation of string arguments of fcrontab options. In
       particular for timezones, previously a space could be added at the
       beginning or the end of the timezone with no warning, and this led
       fcron to use an unexpected timezone, which could cause confusion.
     * Allow tasks to run every seconds
     * don't inherit fcron's environment when running a job but build the
       environment from scratch (cleaner, and this is what Vixie cron
       does)
     * fcron now sets the email headers X-Cron-Env and Auto-Submitted (as
       described in RFC 3834).
     * email encoding: fcron now sets the email headers Content-Type and
       Content-Transfer-Encoding. They can be controlled by setting the
       CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs.
     * Added systemd service definition (thank you Reiner)
     * Allow Makefile parallelism (e.g. make -j 4)
     * bug fix: fcrontab: don't alert about invalid character when
       correcting fcrontab twice
     * bug fix: fixed free_safe() function (replaced by macro).
     * bug fix: configure script: usage of sendmail couldn't be disabled
     * bug fix: fixed a potential (unlikely) 1 byte overflow in strncat()
       in socket.c
     * Quite a lot of code clean-up and refactoring -- e.g. implemented
       generic unordred list for lavgq / exeq.

   From version 3.0.5 to 3.0.6
     * Fixed bug preventing normal user from running fcrontab -l if
       fcron's uid!=gid
     * Fixed fcrontab's PAM initialization when working on the systab
       user.
     * Added check_system_crontabs.sh which is to replace the less
       portable check_system_crontabs.bash.
     * Added option -c to check_system_crontabs.sh to specify a fcron.conf
       file to use
     * Fixed Makefile bug preventing installation when building from a
       different folder than the sources (wrong fcron.conf path)

   From version 3.0.4 to 3.0.5
     * Security issue: fixed security issue that allowed malicious user to
       read any file readable by group 'fcron' (in particular fcron's
       config files and the fcrontabs of non-root users). On systems
       without seteuid() (i.e. quite exotic systems) then the bug is
       harder to exploit but any file could be read.
     * Improved general security of fcrontab and fcrondyn by dropping more
       privileges.
     * Work on portability (aix, hpux, irix, tru64 unix, solaris). Thanks
       Peter O'Gorman for his patch!
     * Patched startup script to make it more compliant to the LSB.
     * Increased maximum number of fcrontab entries from 256 to 1024.
     * bug fix: if fcron could not fork() to run a job, then the job would
       still appear to be running until fcron is restarted (thanks
       Alexander Y. Fomichev for noticing this bug).
     * bug fix: fcrontab used to accept MAXENTRIES+1 fcrontab entries
     * chdir to /tmp before executing the editor (as some editor needs to
       be able to read information on the current folder).

   From version 3.0.3 to 3.0.4
     * Initialize the random number generator with some values specific to
       the machine so as two fcron started exactly at the same time on two
       different machines run their random jobs at different time. This is
       useful for clusters for instance.
     * Added option erroronlymail so as the output of a job is emailed
       only when the job exited with a non-zero status.
     * Bug fix: in certain conditions, jobs could be executed outside
       their interval of execution when using option random on %-lines.
     * Fixed bug which prevented the pid of the job to be written to the
       (grand-)parent process. This was not a major issue but would
       prevent fcrondyn from working well with the concerned jobs. This
       bug was caused by a close() function applied twice on a file
       descriptor, which would trigger the bug in some rare occasions
       (only one affected linux system reported).
     * Fixed bug which would stop fcron from running any job any more on
       the affected system and until fcron was restarted if the bug above
       occured.
     * Cleaned-up the closures of file descriptors (check for errors,
       etc).

   From version 3.0.3-rc1 to 3.0.3
     * The configure script now check that the make command is GNU make
       (which is required to build fcron).
       Bug fix: better handling of getpwnam() errors (we cannot rely on
       errno to spot an error). This was causing problems for AIX for
       instance.

   From version 3.0.2 to 3.0.3-rc1
     * New configure scripts, with more standard default values for paths,
       etc. This aims at simplifying the packaging of fcron. Thanks go to
       Patrice Dumas for his patch!
     * New make targets: perms and strip. This aims at simplifying the
       packaging of fcron. Thanks go to Patrice Dumas for his patch!
     * Set environment variable LOGNAME when running a job (as Vixie Cron
       does: thanks Martin McGreal for pointing that out).
     * Portability work for AIX 5.2 and Solaris 8 and 10 (thanks Martin
       McGreal).
     * Chmod()ed fcron's fifo file to 777. It was 666 previously, but the
       exec bit is needed for AIX and apparently ignored on other
       platforms, so we now set it to.
     * Set TZ environment variable for lines which uses fcron option
       timezone.
     * A file was closed twice by fcrontab: removed the duplicate close().
     * Replaced include sys/termios.h by termios.h.
     * Fixed a fcrontab bug cause by an return value not handled and
       resulting in many useless (but pretty much harmless) iteration in a
       loop.

   From version 3.0.1 to 3.0.2
     * Use sockaddr's field sa_len/sun_len on system defining it (BSD,
       ...). It should allow fcrondyn to connect to fcron on these
       systems.
     * Non-SELinux systems: run each job in a different session by calling
       setuid() for each one of them. This is to improve compatibility
       with Vixie cron.
     * Don't use the shell defined in /etc/passwd by default, but use the
       default value from fcron.conf instead. This is for compatibility
       with Vixie cron.
     * Use root name and group instead of root uid and gid. This seems
       more logical since the configure scripts asks for the name and
       group and not the uid and gid.
     * Added an init file for Suse in script/ (contribution from Alex:
       thanks!).
     * Minor spelling fixes in the French documentation.

   From version 3.0.0 to 3.0.1
     * fcrontab: access user's directory with user's rights (necessary if
       user/group fcron has not the right to read the directory).
     * improvement in check_system_crontabs: more comments, added some
       help messages, added command line options, cleaner, safer code.
     * Improved English documentation: clarified some previously-unclear
       points.
     * Added French translation of the manual pages (thanks go to Alain
       Portal)
     * Removed old documentation from the package.
     * Better handling of the pipes in job.c: this should remove some
       problems encountered on BSD systems.
     * bug fix: do not use a tv_usec > 999999: should fix the problem
       encountered on BSD systems with select().
     * bug fix: fixed a bug in make_msg(): the size of a string written to
       a buffer was not controlled correctly in some cases. This could
       result in buffer overflow and thus this was security problem.
       However the bug seems not exploitable as the part of the string
       which could overflow the buffer could not be freely defined by an
       attacker (it was either ": " or one of the strings returned by
       strerror()).
     * Bug fix: set the FDs correctly for select().

   From version 2.9.7 to 3.0.0
     * Added a missing entry in changelog (changes from 2.9.6 to 2.9.7,
       bug fix for NetBSD).
     * Merged a patch for the check_system_crontabs script (Security
       enhancements and cleanups).

   From version 2.9.6 to 2.9.7
     * Added time zone support (option timezone).
     * Better support FreeBSD's users and groups modifications in fcron's
       install scripts.
     * Fixed a bug which used to make fcron send empty mails on very
       recent systems.
     * Fixed a bug which prevented fcrondyn to being used on NetBSD
       (thanks go to Gabor Z. Papp).
     * Added some casts in fileconf.c and save.c (to avoid some warnings
       when compiling on HP-UX).
     * Added a FAQ entry on how to emulate an anacron entry.

   From version 2.9.5.1 to 2.9.6
     * fixed the bug which made jobs run an hour too early after a
       daylight saving time change.
       Added detailed explanations about when a job will run when there is
       a DST change in the FAQ.
     * fixed fcrondyn's "Unknown command" bug on x86_64 (thanks go to
       Georgi Georgiev).
     * made fcrontab behave better when there is no space left in the
       spool directory (used to truncate the fcrontab source file).
     * Added a script, check_system_crontabs, to emulate Vixie cron's
       behavior about /etc/crontab and /etc/cron.d. Please have a look at
       the top of script/check_system_crontabs for more information.
     * HP-UX support (needs more tests).
     * bug fix: restore umask even if fcron runs unprivileged.

   From version 2.9.5 to 2.9.5.1
     * Fixed serious security vulnerabilities in fcronsighup, and improved
       fcronsighup's overall security (drop privileges, better check user
       inputs, etc).
     * Fixed several typos in the doc.
     * Updated debian package scripts (patch from debian maintainer).

   From version 2.9.4 to 2.9.5
     * Ported to HP-UX (thanks go to Scott Tinsley)
     * Implemented fcrondyn commands run and runnow.
     * Merged patch from Russell Coker for new SE Linux.
     * Merged debian/ dir for debian package.
     * Mail reports: put the same username in the To: field than the one
       we give as recipient to the MTA. mailto can now also be a fully
       qualified email address.
     * changed a log message: a job which has ended without error is
       reported has "completed" (which is more appropriated than
       "terminated").
     * Internal changes in log.c: code is more segmented, and code has
       been added to be able to send log message to fcrondyn. Syslog
       messages are now never longer than MAX_MSG (even with string from
       strerror()).
     * Fixed a bug which happened on Daylight Saving Time change on some
       systems. It would make fcron run into a nasty infinite loop. Added
       a sanity check in set_nextexe() to avoid such things.
     * Fixed a crash bug: in 2.9.4, if a user run ls_exeq when a job is
       running and has been removed from its fcrontab, it makes fcron
       crash.
     * Fixed a small bug: scripts were supposing perl was in /usr/bin.
     * Fixed a bug which caused the pid of a child process to be
       incorrectly read
     * fixed memory leak: some strings returned by log.c:make_msg()
       weren't always free()d.
     * bug fix: fcrondyn commands renice and kill used not to handle
       correctly the case where a job has several entries in exeq (exesev
       jobs).

   From version 2.9.3 to 2.9.4
     * Merged support for SE Linux (patch from Russell Coker: thanks!)
     * Work on the documentation (fixed spelling mistakes, tried to make
       things clearer in fcrontab.5) (thanks Bill Wohler for your help!)
     * Changed the subject line of mail reports: it now contains the
       subject line, and is very similar to vixie cron's one.
     * Added a sum-up at the end of ./configure.
     * bug fix: "makewhatis" bug is fixed -- at last!
       In fact, the problems encountered were due to an abusively ignored
       signal SIGPIPE.
     * bug fix: possible crash of fcron when trying to save a file if
       there was no space left on device.
     * bug fix: we don't consider '-' and '_' as word delimiters for a
       username before the command anymore, since many programs have one
       of these characters in their name.
     * bug fix: option first was broken in fcron 2.9.3.
     * fixed a little typo in an error message (could->couldn't)
     * bug fix: do not ignore the last line of a fcrontab if there is no
       \n before the end of file.
     * fixed compile on SunOS 5.9 .
     * Fcron now compiles on MacOS X.
     * added some $srcdir to be able (again ;) ) to run configure from
       another directory.
     * Perf improvement: use buffer for i/o in run_job().

   From version 2.9.2 to 2.9.3
     * security issue: fcron used not to check the fcrontabs installed by
       root for a standard user. This could make an inattentive superuser
       install a user job runas(root) involontary.
     * Perf improvement: we now use buffers to write something to disk
       (became necessary due to the use of O_SYNC).
     * To avoid loss of data in case of an hardware failure or a system
       crash, fcron now saves files to a temporary name, and then renames
       them to their definitive filename if everything's ok.
     * The PID indicated by fcrondyn is now the pid of the job itself (up
       to now, it was the one of the fcron process controlling the job).
     * Implemented functions kill (send a signal to a running job) and
       renice (change the priority of a running job) in fcrondyn.
     * Added fcron's option -q to control the lavg and serial queue sizes.
     * Added some timeouts in fcron for fcrondyn clients.
     * Fcron is less restrictive concerning mailto addresses. In
       particular, you can now use address like user@host.
     * bug fix: in 2.9.2, fcrontab and fcron did not set correctly some
       file modes.
     * bug (introduced in 2.9.1): when a job stops with an non-zero exit
       status or because it has been signaled, send a mail to its owner to
       inform him (in 2.9.1 and 2.9.2, the mail was sent, but contained
       nothing).
     * code clean: use the same scheme for all struct types, removed some
       code redundancy (save to disk management).

   From version 2.9.1 to 2.9.2
     * Added a system fcrontab. Root can access it with fcrontab by using
       "-u systab".
     * fcrondyn's ls_lavgq, ls_serialq and ls_exeq are now functional.
     * mailto can now be set to a non-real user (for ex., an alias).
     * fcron now calls shutdown() when a connection from fcrondyn is
       closed. Another change in the code should prevent fcrondyn from not
       returning to the prompt after a command has been run.
     * use open() instead of fopen() to write files, for more security.
     * fcrontab sets euid=uid before running the editor. This is required
       by some programs (for instance, perl).
     * bug fix: using DESTDIR with make did not work with the doc.
     * Code clean: changed macros to make parameters clearly different
       from vars.

   From version 2.9.0 to 2.9.1
     * fcron can now be run without root's privileges (see FAQ)
     * added configure's option --with-boot-install .
     * Minor change in the PAM code of fcron: may work better on some
       systems.
     * configure script now uses getpwnam() and getgrnam() instead of
       reading directly /etc/passwd and /etc/group: this makes easier the
       use of NIS, LDAP, etc.
     * Bug fix: using some "cmd > /dev/stderr" (or stdout) in a script
       used to make fcron send a bogus output mail. (rewrite of the code
       managing the output of jobs)
     * Bug fix: typo error prevented fcrontab to be compiled on some
       systems.
     * Minor bug fix about stdout option.
     * Minor bug fix: giving fcrontab's option -c a relative path now
       works correctly.

   From version 2.1.0 to 2.9.0
     * Added some new options to fcron: -y, -o, -l; and some fcrontab
       options: stdout and volatile. All these permit to make fcron run in
       foreground, execute all the pending jobs (mainly %-jobs), and
       return. May be used, for instance, in a ppp-up script with a dialup
       connection to update a software regularly.
     * Added fcrondyn: this software allows users to dialog dyn-amically
       with a running fcron daemon. Currently, it can list jobs of the
       user running it (or all jobs for root). In the near future, it
       should be able to run a job, change its next time and date of
       execution, renice a running job, send a signal to a running job,
       etc.
     * All the documentation has been ported to SGML DocBook.
       It results on a much better HTML version, which I recommand you
       use. It is installed by default in fcron documentation directory
       (for instance, on my system: /usr/share/doc/fcron-X.X.X/).
     * Fcrontab.5 has been updated and improved. Some examples have been
       added and some possible use of the different lines and options are
       mentioned.
     * Added option random, which allows an entry run periodically to be
       run at a random time in its intervals of execution, instead of
       being run as soon as possible.
     * added some more checks in fileconf.c: allow user to use hours,
       days, hourly, daily, etc options only with %-lines: it is ignored
       if set for a &-line, which is quite confusing for users who may
       type, for instance "&hourly" instead of "%hourly".
     * bug fixed: you can now use arguments in the var EDITOR and VISUAL.
     * bug fixed: fcron used to call sometimes a sleep(-1), which causes a
       freeze (no crash, but a very very long sleep :) ) under system
       using LIBC5, and maybe on some non-linux systems. It was not
       causing any problem under GLIBC2. Thanks go to Nick Pasich.

   From version 2.0.0 to 2.1.0
     * PAM support for fcron and fcrontab (need testing! - help would be
       appreciated).
     * Fcron now send a mail if a job has noticenotrun set and could not
       be run because of a queue full.
     * Fcron now compiles on AIX (thank you, John A. Parker!), and a few
       AIX-only bugs have been fixed, but it may remain some problems to
       correct. Please try, and tell me!
     * We now use constants ROOTUID and ROOTGID instead of some hard-coded
       "0", and those constants are defined by the configure script (we
       use the uid/gid of the name given with the option
       "--with-root{name|group}"). It allows fcron to be run on system on
       which root is not uid/gid 0/0.
     * code cleaning.
     * bug fixed: setting lavg to (0,0,0) used to make the line be added
       in the lavg queue instead of the serial queue (but the lavgs were
       ignored anyway).
     * bug fixed: fcrontab's "-z" option was not ignoring previous user's
       fcrontab version.
     * bug fixed: on systems using putenv(), the var HOME, USER and SHELL
       wasn't correctly assigned. On system supporting setenv() (which is
       the default), the problem did not occur. (thanks go to Evan A.
       Zacks).

   From version 1.1.1 to 2.0.0
     * using SIGUSR2 on fcron makes it print its current schedule on
       syslog and toggles on/off the printing of debug info on syslog.
     * fcron behavior on serial and lavg queues overflow has changed: in
       previous versions, it used to run a job to make room to put a new
       one. As it may conduct to a overwhelming of system resources, the
       new job is now refused (and not run). An error message is also
       logged through syslog.
     * a mail is now sent if the job exited due to a signal, or if exit
       status is non-zero. Read FAQ if you experience problems about that.
     * added a FAQ.
     * bug fixed: a midmonthly job executed after the 15th of the month
       used to cause an endless loop. Thanks go to Guy Geens (thanks a
       lot!).
     * bug fixed: inserting a job in serial queue or running a job not
       finished at startup was broken, unless the job was strict(no).
     * bug fixed: some 1.1.1 changes used to make fcron impossible to
       compile without sendmail (./configure's option
       "--with-sendmail=no").
     * bug fixed in sysV boot script: we know specify explicitly the path
       to fcron.
     * bug fixed: unresolved error used to occur on some system not
       defining getopt_long().

   From version 1.1.0 to 1.1.1
     * security fix: sym link attack against fcrontab. Any user allowed to
       use fcrontab used to be able to remove any fcrontab, and
       potentially to truncate any file to zero-length (under certain
       conditions, anyway).
     * fcron and fcrontab now have a configuration file: fcron.conf. It
       contains the default paths (spool dir, etc) and programs to use
       (editor, shell, etc). Thanks to that file, several fcron processes
       can run simultaneously if they have a different config (different
       spool dir and pid file).
     * added fcron's option "-m" to control the number of serial jobs
       which can be executed simultaneously.
     * added fcron's option "-n" to create a new spool dir.
     * command line syntax of fcrontab has changed: you can know use
       "user" (after the file name if any) instead of "-u user". It should
       make fcrontab a little more intuitive.
     * It is now possible to put a user name between the time/date fields
       and the shell command of a fcrontab line (for Vixie cron format
       compatibility): it is equivalent to runas(user).
     * support of Solaris (and SysV).
     * early support of OpenBSD.
     * the installation scripts now use nsswitch.conf to detect if a user
       or a group exists on the system. That way, naming services (NYS,
       ldap, etc) are supported.
     * the man page and doc is now installed by default in
       $prefix/share/{man|doc} (instead of the previous $prefix/{man|doc})
       ($prefix is generally "/usr").
     * bug corrected: fcron used not to add a serial_sev line to
       serial/lavg queue if this line was running, saying "already in
       serial queue".
     * bug corrected: a "all" in fcron.allow with no fcron.deny file was
       not considered as an allow rule.

   From version 1.0.3 to 1.1.0
     * The binary format of the binary fcrontabs has changed: there is now
       no more need to reinstall the fcrontabs when upgrading fcron (but
       you need to convert your fcrontabs to the new format once), and
       this format should allow extensions without losing any information.
     * better management of the errors in load/save fcrontabs functions.
     * the doc is a clearer about @-lines.
     * more security tests by fcrontab in the case it is suid root (but,
       if possible, it should be suid fcron as it is far more secure).
     * we now remove unwanted fcrontabs before loading them in memory:
       well, it seems to be more logical like that :)) .
     * bug fix: using options first with a &-line may have led to some
       problems during the first read by fcron (mail send erroneously if
       noticenotrun was used, bad set of the first execution's time and
       date or immediate execution if bootrun was set: in fact, the line
       was not recognized as a new line).
     * bug fix: fcron used not to be able to be compiled from any
       directory because of an absent -I. line option for the compiler
       (the config.h file was not found).

   From version 1.0.2 to 1.0.3
     * fcron can now be configured and compiled from any directory (not
       only from the source dir).
     * bug fix: fcron now sets umask to the value it got at start before
       running a job.
     * bug corrected: a bug used to make the "truncated" system not to
       work correctly, so a too long log message used to make fcron crash.

   From version 1.0.1 to 1.0.2
     * the user for whom a job is run is now logged.
     * installation script is now more explicit about what it is going to
       do.
     * a boolean value can now also be set by "yes" and "no".
     * bug corrected: bootrun option works again.
     * bug corrected: shell variable containing underscore (_) used to be
       rejected.
     * bug corrected: installation script used not to check if user fcron
       was in group fcron, in which case fcrontab doesn't work correctly
       (it cannot, in that case, read the fcrontabs for non-privileged
       users).

   From version 1.0.0 to 1.0.1
     * security fix: a user used to be able to read a file owned by root
       if root runs a "fcrontab -u user -e".

   From version 0.9.5 to 1.0.0
     * added fcron's option "-s" to control the time between two saves of
       the fcrontabs on disk.
     * installation scripts now support better FreeBSD and sh.
     * bug corrected: configure's options prefix and without-sendmail used
       not to work.
     * bug corrected: installing an fcrontab by "fcrontab file" wasn't
       working correctly with a relative path (a path not beginning by a
       "/").

   From version 0.9.4 to 0.9.5
     * security fix: the jobs of a fcrontab reinstalled by root used to be
       run as root (until the next action of the owner on the fcrontab).
     * added options strict and noticenotrun to tell fcron respectively if
       a job should be removed from lavg queue if its execution interval
       is exceeded, and if fcron should mail user to report the
       non-execution of a job.
     * added option nolog in order to log only errors (i.e. no message
       like "job x started"). This can help to reduce the disk access and
       save energy on a laptop, and make the log more readable if some
       jobs are run very often.
     * better handle of changes of the uids of users in /etc/passwd (no
       more need to reinstall the fcrontabs).
     * fcron.deny and fcron.allow files are now owned by root (they used
       to be owned by user fcron).
     * added ./configure's option --with-answer-all to be able to use
       "make install" in a non-interactive way (can be useful for
       automatic installers).
     * added option --with-rootname and --with-rootgroup to ./configure
       script for a better support of exotic systems.
     * bug corrected in make install (script user-group): the script used
       not to handle correctly the absence of both useradd and adduser
       commands. This script now checks and tries to add a group fcron if
       necessary.

   From version 0.9.3 to 0.9.4
     * security improvement: after the (horrible) root exploit found in
       version 0.9.3, I decided to improve fcron/fcrontab's security. I've
       included some strong (I hope :)) ) tests in fcron to ensure that
       only root can run commands as superuser and use option runas. Even
       an corrupted fcrontab should not be able to get root's privileges.
       Pretty reassuring, isn't it?
     * runfreq(1) lines have been replaced and extended by a new kind of
       line: the lines beginning by a "%". It's now possible to tell fcron
       to run a command once an hour, a week, etc, but only at some
       specified moments. For instance: '%weekly * 4-7 echo "foo"' will
       run the command 'echo "foo"' once a week between 4 and 7 in the
       morning. (see "man 5 fcrontab" for more details).
     * installation process improved: user is now consulted before
       anything is done about installation in boot scripts, etc. The
       default username of fcron is now ... fcron! (this is more secure
       than daemon, which can be used by other programs).
     * fcron now adds the host name to the addresses of the mails it
       sends.
     * fcrontab determines the identity of the running user by his uid (it
       used to use the var USER). That way, fcrontab should act as crontab
       under a "su".
     * bug fixed: a tmp file was not removed after a "fcron -z"
     * bug fixed in fcrontab: an expression of the form "start-stop" with
       start > stop used to be incorrectly managed by fcron.
     * bug fixed: when fcron and fcrontab were installed under a
       non-privileged user rights, a normal user used to be not able to
       use fcrontab.
     * bug fixed: while fcrontab was asking user if he would like to
       correct an erroneous line, the answer was not correctly handled.

   From version 0.9.2.1 to 0.9.3
     * installation scripts improved.
     * added code to avoid infinite loops.
     * bugs corrected in the functions to set the time and date of next
       execution.
     * bug corrected in the check for invalid lines.

   From version 0.9.2 to 0.9.2.1
     * minor bug corrected in Makefile

   From version 0.9.1 to 0.9.2
     * fcron now uses autoconf (the configure script), so it should be
       easier to compile and install it and various systems.
     * support of lavg options for all systems where getloadavg() is
       defined (BSD unix, etc) and on Linux systems with a proc filesystem
       (fcron can use /proc/loadavg).
     * a job can now be executed several times simultaneously if option
       exesev is set to 1.
     * user can determine if a job can be put several times in the serial
       queue simultaneously thanks to option serialonce.
     * fcron does not wait anymore for the completion of all jobs of a
       file before deleting it from memory.
     * fcron handles correctly the jobs which are both serial and lavg.
     * fcron now runs under a specific user and group (other than root)
       for basic security reasons.
     * bug corrected: fcron used to crash after a file was deleted from
       memory in some conditions.
     * corrected the bug which used to appear when a line was put several
       times in the serial queue: in this case, fcron used not to count
       correctly the number of running serial jobs.
     * bug corrected: fcrontab used not to remove the temporary file it
       creates if no modification where done to a file after an edition
       using the -e option and on errors.
     * bug corrected: fcrontab now defines correctly the remain value of a
       line based on time and date beginning with a "&" but without
       runfreq definition.
     * bug corrected: fcron used to not install correctly a file edited if
       a correction was made.
     * bug corrected: reset option was not working correctly when set to a
       single line.

   From version 0.9.0 to 0.9.1
     * support of the option mailto for each line (it used to be set for
       the whole file).
     * the value of the runas and mailto options are now stored internally
       as a uid number: you must reinstall all the system's fcrontabs if
       you change the uid of a user.
     * Support of options "lavg*", in order to run a job under a specific
       1, 5 and/or 15 minutes system load average value(s). When the job
       should be run, it is placed in a specific queue and the load
       average is checked regularly until the right value(s) is/are got.
       The options "lavgor" and "lavgand" permits users to tell fcron if
       they prefer to perform a logic OR or AND between the 1, 5 and 15
       load average values. The option "until" can be use to force the
       execution of a job after a determined timeout if the right
       conditions to run the job are not filled.
     * fcron now uses putenv() in place of setenv() (setenv() is not POSIX
       compliant).
     * a mailto option set to "" is now equivalent to "mail(false)".
     * corrected the bug which used to make a bootrun and runfreq(1) job
       executed twice when fcron's start occurs in an interval of
       execution of the job.
     * corrected the bug which used to make fcron crash after serial_array
       is resized.

   From version 0.8.3 to 0.9.0
     * support of options in fcrontabs. Options can be specific to a line
       or defined once for every line located after their definition (a
       special option "reset" set all options to their default). Some
       options also have too names: a long name and an abbreviation.
     * jobs can now be run be run one after the other (option "serial"):
       when the job should normally be run, it is added to a queue, which
       entries are executed one by one. It permits to avoid the use of a
       lot of system resources for a brief moment by the simultaneous
       execution of several tasks.
     * jobs can be run at system start up if they should have been run
       during system down time (option "bootrun").
     * root can run jobs as an another user (option "runas")
     * user can set a nice value to a job, but only root can use a
       negative value (a negative value will increase priority)
     * user can choose to perform a logic AND or a logic OR between day of
       month and day of week (option "dayor" and "dayand")
     * user can choose to mail the output of jobs (option "mail") if any,
       and can force fcron to send a mail even if output is zero-length
       (option "forcemail").
     * fixed the bug which used to make fcron run a job with a runfreq set
       to 1 at a wrong time.
     * fixed a bug which used to make fcrontab crash after several
       corrections in edit mode.

   From version 0.8.2 to 0.8.3
     * (all this bugs appeared in version 0.8.2 :)
     * fixed the bug which used to make fcron crash after a SIGHUP
     * fixed the bug which used to prevent fcron from running some job
       based on time and date
     * fixed the bug which used to makes fcron run the jobs one second too
       late

   From version 0.8.1 to 0.8.2
     * code has been optimized: The jobs are now queued in order of
       execution. It permits avoid useless tests of all jobs every time
       fcron wakes up, speeds up the determination of the time fcron
       should sleep, speeds up the processing after the end of a job, etc.
       I don't know why I haven't made it before :-) ...
     * fcrontab has been improved: it is now more stable (many bugs which
       used to make fcrontab crash in case of errors in the fcrontab has
       been fixed). Plus, it now asks if you want to make corrections if
       needed when editing.

   From version 0.8.0 to 0.8.1
     * ported to FreeBSD 4.0

   From version 0.7.0 to 0.8.0
     * corrected the bug which keep normal users from listing and editing
       their current configuration file with fcrontab -l or -e.
     * corrected the bugs which used to block fcron when a task was marked
       for execution but fcron stopped before it has been launched, and
       when fcron stopped after the end of a job but before the output has
       been mailed.
     * day of week 0 and 7 now both mean Sunday.
     * the abbreviations of months and day of week are not any more case
       dependent.
     * months are now defined from 1 to 12 (and not from 0 to 11) (it was
       a little bit illogical :-).
     * you can now force spaces in strings if you place them in quotes.
     * I discovered ispell :-) ...
     * I've added a kind of signature in the formated configuration files
       in order to keep the daemon from attempting to read an old
       configuration file which doesn't use the same syntax.
     * You can now install a file with fcrontab from standard input.
     * others minor adds and bug corrections.
   _______________________________________________________________________

   Prev                 Home                       Next
   How to install fcron  Up  Release notes: fcron 3.3.3
