The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension IPC::ChildSafe.

0.01  Sat Nov 29 12:03:06 1997
	- Original version; created by h2xs 1.18

1.01  Mon Dec 01 22:23:14 1997
	- First release. There are a few bells and whistles I would
	like to add yet, but this version seems stable.  Might as well
	get feedback before implementing the b&w.

2.00  Mon Mar 09 22:23:14 1998
	- Reworked the entire perl interface using one 'smart' method
	$obj->command.  This detects whether it was run in a scalar or list
	context and either dumps all output to true stdout/stderr and
	returns the exit status (scalar case) or returns it all plus the
	exit status in a hash (list case).

	Added a function for registering an error-checking routine.
	This allows the user to set up their preferred regular expression
	(or other algorithm) for determining which output constitutes
	an error condition.

2.02  Sat Apr 11 15:23:14 1998
	- Added a third mode to the $obj->command method;
	if called in a void context it now will exit on failure.

	- As a result of the above improvement, moved the required
	perl version up to 5.004 since the wantarray() feature
	which enables it was added only in 5.004.

2.10  Sun Apr 26 15:23:14 1998
	- Renamed to IPC::ChildSafe as a result of discussions
	on modules@perl.org.

	- Reworked to use a hash to represent the object.  This allowed
	a rethinking of how $obj->command behaves in scalar context. Now,
	when used in scalar it will store all generated output in arrays
	_STDOUT and _STDERR.  This data can be retrieved later using the
	new methods 'stdout' and 'stderr'.

	- Added a related feature; when $obj->command() is called in a
	void context and with no arguments, it flushes (throws away) the
	stored results.

2.20  Sun May 10 17:43:44 1998
	- Added the ability to handle stderr differently via
	$obj->command("cmd" => IGNORE) etc.

	- Added $obj->status method to poll the currently-stored
	stderr for an error count.

	- Moved ClearCase-specific comments out to subclassed
	  IPC::ClearTool module.

2.25  Sun May 17 12:34:46 1998
	- Renamed $obj->command() to $obj->cmd() for brevity.
	  Left old method in place but de-documented.

2.26  Mon Sep 28 09:44:12 EDT 1998
	- Fixed a bug causing multiple instances to overwrite each other.

2.27  Mon Oct 19 16:25:14 EDT 1998
	- Fixed a couple of doc bugs

2.28  Sat Jan  9 19:52:07 EST 1999
	- Updated XS code to compile under perl5.006 and above
	  (cleaned up -DPERL_POLLUTE macros).

2.29  Mon Jan 11 10:12:25 EST 1999
	- Previous fix (2.28) turned out to break with perl <5.006.

2.30 Fri Oct  1 08:07:12 EDT 1999
	- Fixed a timing bug which caused it to report failure status
	  for the child process on Linux. I was assuming the child must
	  have ended before the call to waitpid(), but that was a sloppy
	  assumption which for whatever reason was always true on
	  Solaris but never true on Linux. Now I do the right thing.
	- Made some minor documentation improvements.

2.31 Sat Oct  2 23:18:28 EDT 1999
	- Added a 'mode' attribute as a cleaner way than
	  $obj->cmd(command => mode).
	- Improved docs and removed redundant comments.

2.32 Wed Nov 17 06:14:47 EST 1999
	- Added a DESTROY method in order to stop the coprocess
	  when obj-ref goes out of scope.
	- Renamed child.c to childsafe.c etc. for cosmetic reasons.
	  (apologies to anyone inconvenienced by this!).

2.33 Mon Nov 29 12:36:21 EST 1999
	- To fix an esoteric bug I was forced to make a slightly
	  incompatible change to the C API. This should not affect Perl
	  users at all (except for having the bug fixed, that is).
	  The change was to add a 4th parameter to the child_open()
	  function. You can simply pass NULL there for the
	  previous behavior, or pass a command which tells the
	  child process to exit to get benefit of the bugfix. I.e.
	  if the child is a shell you can pass "exit". Without this
	  explicit command it's possible for multiple instances
	  of the coprocess object to hang upon closing. Of course
	  multiple instances are rare - the whole point of this
	  module is to replace many processes with one.

3.01 Mon Dec  6 11:29:47 EST 1999
	- Major version bumped to recognize a complete rewrite of
	  the C code contributed by Wolfgang Laun
	  (Wolfgang.Laun@chello.at).  This version uses poll() and
	  should show performance and robustness improvements. In
	  particular it will not stall if the stderr pipe fills up as
	  the old one did.
	- Semi-ported to Win32. "Semi" in this case means that the
	  IPC::ChildSafe module is modified to install on
	  Windows without the XSUB code (the part that's hard to port).
	  Of course ChildSafe by itself is useless without
	  the XSUB code so why do this? Because IPC::ClearTool can (and
	  now does) subclass ChildSafe and override the methods that
	  use the compiled code, using instead the ClearCase Automation
	  Library (CAL), a COM interface new in CC 3.2.1.  Thus,
	  although IPC::ChildSafe still doesn't work in Windows its
	  subclass IPC::ClearTool does (as of CC 3.2.1).
	- NOTE: THIS RELEASE BREAKS SOME BACKWARD COMPATIBILITY!!
	  It just seemed that this was a major enough rewrite,
	  and the benefits of it important enough, that it was
	  the right time to jettison some old back-compat things
	  that were cluttering up the code. The important one is that
	  there's no longer a standalone C API; the C code is now
	  tuned to work directly with Perl. The previous C API
	  (from version 2.33) still works fine so if you need
	  C just stick with that. Or fix up the new one yourself;
	  there's nothing to keep it from working as a C API, I
	  just didn't get around to adding it.
	- Other compatibility issues: a couple of old method names
	  (command, debug) that were being kept around are now gone.
	  The modern names are 'cmd' and 'dbglevel'.
	- Allow mode methods to take a zero arg to reset the
  	  attribute, viz.: $obj-store(0).

3.02 Mon Dec 20 07:54:18 EST 1999
	- Fixed a porting bug for HP/UX found by Paul Schinder.
	- Fixed a typo: IPC_MOD => IPC_MODE

3.03 Wed Dec 22 09:44:24 EST 1999
	- Portability patch for SunOS4.

3.04 Wed Dec 22 12:07:35 EST 1999
	- Urk - another SunOS4 fix (for platforms without ssize_t).
	- This version tested on Solaris 2.5/6/7, SunOS4, Compaq
	  OSF/1 V4.0, HP/UX 10.20, UnixWare 7.0.1, and AIX 4.3
	  in various combinations with Perl 5.004 and 5.005.
	- Cleaned up some test scripting issues.

3.05 Fri Dec 24 15:51:55 EST 1999
	- Added 'chdir' method and some doc work.

3.06 Tue Jan  4 23:10:55 EST 2000
	- Made it work with non-newline-terminated return values.
	- Added 'noexec' method.

3.08 Sat Jan 15 20:22:30 EST 2000
	- Fixed a couple of warnings.

3.09 Tue Feb  1 17:36:44 EST 2000
	- Found and fixed a couple of bugs in the un(der)documented
	  'stdin' method. Now does the right thing whether the
	  input is chomped or not.

3.10 Tue Feb  8 09:57:44 EST 2000
	- The mode methods (->store et al) now return $self
	  to allow for "drive-by" attribute setting, e.g.
		$obj->store->cmd('pwv');

3.11 Thu Apr  6 09:00:22 EDT 2000
	- Backported to perl 5.004/Windows (e.g. MKS).
	  Required a few less assumptions about Getopt::Long
	  capabilities and $^O.

3.12 Tue Nov 13 18:57:04 EST 2001
	- Made static-size buffers dramatically larger (2k -> 128k)
	  which may cure some core dumps (but of course not all).
	- Applied patch from Daphne Pfister @nortelnetworks.com
	  to build with a -DMULTIPLICITY perl.
	- Removed support for CC 3.2.1 CAL on Windows because it
	  required some truly awful code, and 3.2.1 is obsolete.
	- Various other minor cleanups.
	- NOTE: I cannot verify the versions of Perl on which
	  this currently works. There are potential issues with 
	  -DMULTIPLICITY perls as above, there are questions about
	  the -DPOLLUTE code changes in 5.005 and 5.6. I've tried to
	  code conservatively and don't KNOW of anything that would
	  keep it from compiling/working with any Perl version >=5.004
	  but have no way to test all the permutations.

3.14 Thu Nov 15 13:18:53 EST 2001
	- Improved patch from Daphne Pfister @nortelnetworks.com;
	  previous one broke on 5.004.

3.15 Mon Sep 16 18:05:10 EDT 2002
	- Maintenance work. Minor change to signal handling, may or may
	  not fix a reported problem. 

3.16 Tue Aug  5 22:52:04 EDT 2003
	- Fixed author's email address.