Revision history for Perl extension P4::Client.
2.4319 Wed Jun 09 2004

      - Porting change for Cygwin. Update hints file to support the use of
        gcc3 to build P4Perl on Cygwin. This requires the 2003.2 Cygwin
	API. Thanks to Jeremy Bopp.
        
2.4259 Wed Apr 07 2004

      - Porting change for Solaris 8/9 and later. Improved hints file to make
        sure that const_char gets defined as "const char" not "char".

2.3552 Wed Aug 06 2003

      - Add support for OutputBinary to P4::UI class so we can support
        "p4 print" of binary files or text files on clients with non-native
	line termination

2.3540 Tue Aug 05 2003

      - Add hints file for Cygwin build contributed by Nathan Royer
	<nroyer@sirf.com>. No functional change

2.2596 Tue Jan 14 2003

      - Allow form parsing to accept forms deliberately initialised with
        invalid data. 

2.2411 Wed Nov 27 2002

      -	Port bug fix from P4Ruby to P4Perl. Certain variable names get
	reused in tagged mode and this causes the hash members to lose
	their earlier contents when the later value comes along. Specifically
	this is otherLock and otherOpen in the output of "p4 fstat". This
	slightly unpleasant fix simply renames the later variable name by
	appending an "s" to it. So otherLock becomes otherLocks and otherOpen
	becomes otherOpens. 
	
	Now otherOpen is an array containing the user/client of the other 
	users who have the file open and otherLock is a single-element
	array containing the user/client of the user who has the file locked.
	
	otherOpens contains the number of other users who have the file
	opened.
	
	otherLocks contains an empty string.
	
	Since the latter two are quite redundant they may be explicitly 
	removed in a future release.

      - Fix bogus output of P4::UI::OutputStat - it was producing some 
        duplicate output.
	
2.2373 Tue Nov 19 2002
	- Bug fix. Tagged mode was not handling fields with embedded numbers
	  in their name (like P4DTI-*) well. Thanks to ravi narayan.

2.2279 Fri Oct 25 2002
        - Bumped version to 2.2279 to make CPAN.pm get people the latest
	  version. It thought that 1.977 was the latest release!

	  No functional change.

1.2223 Fri Oct 15 2002
	- Relegate diff support added in 1.1976 to the bottom drawer. It's
	  still there if you really want it but you must call 

	     $client->DoPerlDiffs();

	  to specify your preference. The new implementation uses the Diff
	  class provided by the P4 client API to perform the diff and just
	  pushes the output out through the P4::UI::OutputText() interface.
	  This means you will always get the same output as "p4 diff" 
	  because it's using the same classes, and you don't need to install
	  any extra Perl modules to get diff support.

1.2084 Fri Sep 06 2002
	- Removed ugly hack preserving the specdef in perl hashes. There's
          no need for it as the server kindly provides it when you run
          the "p4 XXX -i".
	
	- A little tidying of the test harness. It's not great, but there's
	  at least something in there to check the form parsing now.

1.2010 Fri Aug 09 2002
	- Bug fix. When using ParseForms() mode, if a user inserts a hash or
	  an object into the spec before calling SetInput() a crash could
	  occur. It's a stupid thing to do, but it should not cause a crash.
	  P4-Client is now stricter about what it will accept and will reject
	  blessed references as form members altogether. Passing an array which
	  contains a hash or other such structures will also now get you 
	  nowhere.

1.1980 Mon Jul 29 2002
	- Port to ActivePerl > 623. Convert all fprintf's to just plain old
	  printf to avoid PerlIO mess. Include math.h early on Win32 to 
	  prevent it being included with C++ linkage.

1.1976 Thu Jul 25 2002
	- Add support for ClientUser::Diff() to P4-Client. Thanks to
	  Wilson Snyder (wsnyder@wsnyder.org).

1.1894 Mon Jun 17 2002
	- Fix bug introduced in 1.1711. Thanks to Jon Bjornstad. 

1.1711 Fri Apr 26 2002
	- Make P4::Client::SetCwd() both change the working directory, and
	  update the PWD environment variable.  This makes sure that
	  P4CONFIG files in or above the target directory will be correctly
	  loaded.

1.1692 Wed Apr 24 2002
	- Explicitly add -D_BSD_SOURCE and -D_SVID_SOURCE to build on
	  Linux as some ActiveState and Red Hat builds inexplicably omit
	  them. 

1.1615 Wed Apr 03 2002
	- Add debugging support to the ClientUserPerl class so that 
	  we can see what's going on during tagged output parsing.

1.1546 Fri Mar 15 2002
	- Fix to yesterdays release. Two of the debugging statements added
	  yesterday were not protected by conditions. This release corrects
	  that behaviour.

1.1542 Thu Mar 14 2002
	- Correct error message in Client.xs which still referred to old
	  ClientApi class. Now uses the correct name "P4::Client::Run"

	- Made debugging available at run time, not just compile time. New 
	  method DebugLevel() added to allow users to get/set the debug level. 
	  Anything non-zero enables debug output which goes to stdout.

1.1515  Wed Mar 06 2002
	- Bug fix. Make sure that perl header files are included with
	  C linkage, not default of C++. This caused problems on some
	  platforms with the redefinition of the Perl_malloc() etc.
	  functions with different linkage.

1.1084	Fri Nov 16 2001
	- Fix memory management in tagged mode. Reference counts
	  were not being incremented when converting the structured
	  hashes into a Perforce form for use as input to a subsequent
	  command.

1.1050  Wed Nov 07 2001
	- Fix for complex tagged output which contains more than one level
	  of nested data. e.g. "how0,0", "how0,1" etc. in the output of
	  "p4 filelog". P4-Client can now handle any number of levels of 
	  nested data in tagged responses from the Perforce server. It does
	  not however accept such complex structures as input for conversion
	  into Perforce forms. I think that's OK as no Perforce forms
	  contain nested structures and are unlikely to.

1.977	Mon Oct 22 2001
	- Fix broken form parsing. specdef was not getting saved so 
	  forms could not be reconstructed from a hash. Also added
	  support for reconstructing spec's from multi-line form elements
	  stored in Perl arrays.

1.976	Mon Oct 22 2001
	- Fix for bug in multi-line form element handling reported by
	  Michael Keirnan <mgk@atg.com>

1.966	Fri Oct 19 2001
	- Fix dodgy UI.pm in previous release. 

1.964	Fri Oct 19 2001
	- Multi-line elements within forms are now presented as arrays
	  within the hashref returned to the caller. So instead of
	  $href->{ View2 }, you now use $href->{ View }->[ 2 ]. Yes, it's
	  more verbose, but it means you can grab an array of related 
	  elements.
	- Added Solaris support contributed by Jeremy Russell 
	  <jrussel@reshape.com> with a few tweaks.

1.931   Fri Oct 05 2001 (busy day)
	- Support for form parsing when using the tag and specstring 
	  protocol options. When both these options are in effect, the
	  data is returned to the caller as a hash containing the parsed
	  form in key => value format.
	  
1.923	Fri Oct 05 2001
	- Better documentation on P4::UI class.
	- UI::OutputText() now respects the length parameter
	- Members of the hashref passed to OutputStat are no longer
	  mortal so that they will persist after OutputStat returns if
	  they are referenced by user code.
	- UI::OutputError() now blurts to stderr instead of stdout which
	  it should have from the start.
	- Win32 UI::Edit() now invokes notepad if nothing better has been
	  specified.
	
0.52  Thu Apr 05 2001
	- Fix by Gurusamy Sarathy <gsar@activestate.com> to
	  P4::Client::GetCwd(). 
	- Fixed minor bugs in UI.pm. Module now returns true on load and
	  new is no longer exported into the namespace of the caller (duh!)
	- Added an example script to help get people started.

0.51  Thu Feb 08
	- Ported to Win32 ( well Windows 2000 anyway )
	- Fixed building on Threaded perls like ActivePerl

0.50  Thu Jan 25
	- Renamed P4::ClientApi to P4::Client.

0.05  Mon Jan 15
	- Added AUTOLOAD functionality for Run method so that the 
	  Perforce commands can be used as methods directly. Also
	  pared down the export list as we don't want to export
	  anything at all.

	- First publicly available version released under BSD-like 
	  licence.

0.04  Thu Jan 11
	- Back ported to 5.005_003 and ported to FreeBSD. Now works on 
	  Linux and FreeBSD on perl 5.005_003 and perl 5.6.0

0.03  Fri Jan 5
	- Added in some features to make it easier to back port to
	  versions of Perl prior to 5.6. Still won't work on these older
	  versions though.

	- Massive rework. Now each instance of a P4::ClientApi object
	  has its own Error object and counts the Init and Final calls
	  so that destruction is clean. The object is now a blessed 
	  hash and the pointers are stored as IV members of the hash.
	  This means you can now declare and use as many P4::ClientApi
	  objects as you want without them treading on each others toes.
	  Should be thread-safe too, but that's not been tested.

	- Tweaked Makefile.PL so that the nasty bits of the build are
	  mostly in the hints file. Should make porting a bit easier

0.02  Thu Jan  4 
	- Added support for numeric arguments to P4::ClientApi::Run() to
	  make life easier on callers

	- Cleaned up destructor code to make it call ClientApi->Final() if
	  the number of initialisations exceeds the number of calls to
	  Final(). This prevents hangs when the object is destroyed without
	  calling Final() at the cost of ruining what little thread safety
	  we had ( not much ).

	- At the moment you can only have one P4::ClientApi object in
	  client programs. Yuk.

	- Improved documentation

0.01  Tue Jan  2
	- original version; 

	- Contains basic support for running p4 commands through 
	  the API.