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 without the XSUB
code (the part that's hard to port to Windows). 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');