at 3.0: at now has a lex/yacc grammer, which is an extension of POSIX.2 to something more sensible. There's an atd, which can still simulate atrun with the -s option. at 3.1: Tried to fix some races in the atd code by renaming running jobs to "=" (thanks to aj@arthur.pfalz.de for pointing out the bug). at 3.1.1: The last fix didn't work. New locking scheme: as soon as a job starts, the file a00beef is hardlinked to =00beef. a00beef is unlinked as soon as actual shell execution starts. "=" - files are deleted as soon as their job ends, or an hour after they should have run. at 3.1.2: cleanups: indent the source with OTBS remove output file if it already exists, with a warning. log attempts to run job twice added -b option to atd removed -b option from at (now batch calls "at -qb now") revamp run_loop so -b works correctly at 3.1.3: Fixed "at 07:30" functionality for implicit tomorrow Include yywrap if none can be found at 3.1.4: Set default batch maximum to 0.8 Changed install group to 'root' at 3.1.5: Merged Bjorn Helgaas' (helgaas@tomahawk.rsn.hp.com) patches: * Use setresuid(2) if setreuid(2) is not available (HP-UX 10) * Use "chown user:group" instead of "chown user.group" for HP-UX compatibility * RELINQUISH_PRIVS slightly earlier in at.c, since it doesn't depend on * Change "volatile static" to "static volatile" * Test for HAVE_ATTRIBUTE_NORETURN instead of __GNUC__ in daemon.h Don't export SHELLOPTS (read-only variable in bash) at 3.1.6: Made 'noon', 'teatime' and 'midnight' work. Reran autoheader so HP-UX compilation works.