ChangeLog version 1.6 / 17-Aug-2015 * tcllauncher::demonize when invoked with the -noclose option will still redirect any stdio files (stdin, stdout, stderr) to/from /dev/null if the corresponding stdio handle does not exist. * clean and distclean make targets fixed/improved * configure script now included in distribution * remove all reference to Windows version 1.5 / 3-Oct-2014 * tcllauncher no longer generates or references a shared library. * tcllauncher now is linked against the thread library to avoid deadlocking if Tcl is built with threads * Sync Makefile.in with TEA 3.9; clean up the generation of the object file and the executable * tcllauncher-support.tcl is now macro-substituted from tcllauncher-support.tcl.in to get package and version right every time version 1.4 / 2-Sep-2014 * reassert lock on pidfile during pidfile_write The documented usage of pidfile_open and pidfile_write did not actually work because the flock on the pidfile would not survive the daemonize call to fork to a background process. Now we re-assert the lock on the pidfile when calling pidfile_write (aborting if the lock cannot be obtained) so that the pidfile can be reliably used as a lockfile as documented. * Updated build instructions for Debian. * Corrected unclear pidfile_open documentation. * manual page rendering improvements. * Update README and license and remove superfluous stuff from launcher.h * Support for Tcl 8.6 * In pid_open properly handle the case of specifying the path to the pid file. Also properly support the file mode argument. version 1.3 / 26-Nov-2012 * Catch the sourcing of the app's main.tcl file and if there is an error, customize the error message to include that it's a tcllauncher app and the command line arguments, then write it to stderr and exit with a nonzero exit status. * Change the name of the startup routine to the more standard "main". version 1.2 / 18-Jan-2011 * Upgrade to Tcl Extension Architecture (TEA) 3.8. * Add aclocal.m4 to create a rule for finding the path to dtplite and modify configure.in to use that rule. * Merge daemonize.tcl and pidfile.tcl into tcllauncher.tcl * Reference Tcl 8.5 in docs and whatnot. * Add support for Mac OS X version 1.1 / 11-Jun-2009 * Alter Makefile.in to have rules for building the tcllauncher.n manpage using dtplite based on the tcllauncher.man Tcl doctools file. * Deploy pidfile_* and daemonize functions. * Document pidfile functions. * Builds cleanly on Debian. Added README.Debin with configure instructions. * Upgrade to Tcl Extension Architecture (TEA) 3.7 version 1.0 / 18-Mar-2008 * Create a global variable, launchdir, containing the directory that the main.tcl is being run out of, if the path to the executable is .../bin/programName, else set that variable to "." This provides a way for programs to find other files they installed alongside their main.tcl. * When invoked as a shell, [info nameofexecutable] returns nothing. Detect that condition and, if so, use the SHELL environment variable to form the basis of what we do. For instance, if the shell is /usr/local/bin/farsh, we'll run /usr/local/lib/farsh/main.tcl. * Make sure tcllauncher gets installed into the bin directory. * When allocating memory to fiddle command line arguments before invoking Tcl_Main, use malloc instead of ckalloc because whatever ckalloc needs hasn't necessarily been initialized yet. * Using $(COMPILE) instead of $(CC) for compiling the main routine makes it work on FreeBSD as well as the Mac.