FCRON - CHANGES

 $Id: CHANGES,v 1.66 2001/04/15 12:28:19 thib Exp $

<-- fcron version 1.0.3 -->

Fcron is distributed under GPL license (please read the file LICENSE).

Project home page : http://fcron.free.fr/

Author : Thibault GODOUET <fcron@free.fr>


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).

- fcrontab is now more strict about command line syntax
  (a "fcrontab -e thib" used to work (even if "thib" is not interpreted because
  it should have been "-u thib"))

- 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 add 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.



