________________________________________________________________________________

                        Win32::UTCFileTime, Version 1.41
________________________________________________________________________________

Revision history for Perl extension Win32::UTCFileTime.
_________________

v1.41 12 Dec 2004

    - Moved XSLoader::load() call inside BEGIN subroutine as recommended by the
      XSLoader manpage.  This means that the XSUB's are now installed before the
      rest of the Perl module is compiled, and hence their prototypes are now
      known, and can be checked, during the remaining compilation.
_________________

v1.40 31 Oct 2004

    - Removed $Debug variable and introduced new $ErrStr variable.

      Instead of callers having no clue as to why a function failed unless an
      error happens to be in $! and/or $^E or they had $Debug set to a true
      value, they can now inspect the $ErrStr variable to obtain the reason for
      the failure, much like the use of $! and $^E themselves, except that
      $ErrStr will always be set when a function fails, even if the last error
      did not relate to a system call or Win32 API call.

      Note that $! and/or $^E will continue to be set as well wherever they were
      previously being set, so existing code that inspects those variables will
      not be affected.  Callers should simply consider inspecting $ErrStr
      instead in the future.

      The only backwards compatibility issue here is the removal of the $Debug
      variable, which is unlikely to affect most production systems.

    - Updated documentation and tests for these changes.

    - Renamed some functions, macros and external variables in the XS and C code
      to use names that are more likely to be unique to this code, namely
      Win32UTCFileTime_*() for functions, WIN32_UTCFILETIME_* for macros and
      win32_utcfiletime_* for external variables.

    - Introduced use of *MY_CXT* macros etc for handling static data in the C
      code to make the module thread-safe.

    - Reinstated ppport.h to provide *MY_CXT* macros etc for Perls older than
      5.7.3 (or 5.9.2 in the case of MY_CXT_CLONE).

    - Updated Module::Install components from version 0.36 of that distribution.
_________________

v1.33 08 Aug 2004

    - Added a check to the return value from the _get_osfhandle() call in the
      _SetUTCFileTimes() C function (used by the replacement utime() function)
      so that we don't try to continue with an invalid handle.

    - Also added an extra attempt at continuing in the above scenario by closing
      the previously opened file descriptor and trying to open an operating-
      system file handle directly instead, and modified the similar existing
      case intended to cover directories to always retry rather than only when
      errno was set to EACCES because (a) the debug message was misleading
      (errno is set to EACCES for read-only files too) and (b) errno is not
      always reliably set (see below).

      This module now appears to function correctly when built using the free
      Visual C++ Toolkit 2003 compiler in conjunction with a Perl (e.g.
      ActivePerl Build 810) that was built using Visual C++ 6.0.  (Passing file
      descriptors, errno and other CRT resources between the msvcr71.dll and
      msvcrt.dll C runtime libraries used by those compilers respectively
      doesn't work.)

      Using such mismatched C runtimes, however, has to be seen as undesirable
      and may not always work.

      Added a note to the INSTALL file that if possible the same compiler should
      be used to build this module as was used to build Perl itself.

      Thanks to Robert Rothenberg <rrwo@cpan.org> for drawing attention to this
      problem via CPAN Testers (http://testers.cpan.org/).
_________________

v1.32 01 Aug 2004

    - Removed standard modules from the list of pre-requisites in Makefile.PL
      (since a minimum required Perl version is given anyway).

    - Updated Module::Install components from version 0.35 of that distribution
      and changed Makefile.PL to use abstract_from() now that it is fixed.

    - Changed INSTALL document and Makefile.PL to remove requirement for
      Microsoft Visual C++, and mention dmake.

    - This module should now build cleanly with Perls built using MinGW / dmake.

    - Changed various standard C library function calls to their Perl
      replacement functions.

    - Improved warning and error messages to include the message string for the
      relevant standard C library errno or Win32 API last-error code where
      appropriate.

    - Fixed a bug in the _SetUTCFileTimes() C function (used by the replacement
      utime() function) in which a file handle was wrongly being closed twice.
      The inevitable failure of the second attempted closure had gone unnoticed
      because the error checking code was also faulty :(

    - Changed return value from the private _set_utc_file_times() XSUB so that
      if it fails when called in list context then it returns an empty list
      rather than a single "false" value (which would be seen as "true" in list
      context).  (It is not currently called in list context anyway; this is
      just defensive programming.)
_________________

v1.31 26 Feb 2004

    - Use Module::Install as a front-end to ExtUtils::MakeMaker.  The same build
      script can also be used as a front-end to Module::Build in due course
      (once problems building XS modules with Module::Build are ironed out), and
      it also creates a META.yml file that contains a "license" key which
      http://search.cpan.org/ makes use of.

    - Added new test to check for POD errors if Test::Pod is available.
_________________

v1.30 22 Feb 2004

    - Changed stat(), lstat() and alt_stat() to use $_ if no argument is given,
      as per the Perl built-in functions.

    - Added new test script to exercise this new feature.

    - Clarified licence and warranty for the module, and included relevant
      licence files in the distribution.

    - Moved installation instructions to a separate INSTALL file.

    - Added PREOP to the dist option in Makefile.PL to ensure permissions are
      set correctly within the distdir (since they often aren't set correctly in
      the top-level directory when working on Windows) to stop CPANTS from
      complaining about bad permissions.

    - Added COMPRESS (and SUFFIX) and ZIPFLAGS to the dist option in Makefile.PL
      to enable "best compression" for gzip when running "nmake dist" and for
      zip when running "nmake zipdist" respectively.

    - Added clean option to Makefile.PL to have the const-c.inc and const-xs.inc
      files deleted by "nmake clean".

    - Added MANIFEST.SKIP to stop "nmake distcheck" from producing bogus
      warnings.

    - Moved UTCFileTime.pm into lib/Win32/ sub-directory within distribution.
      This is the new layout style produced by h2xs as of version 1.23.

    - Removed ppport.h since no use was being made of it.  (This module builds
      on Perl installations back to 5.6.0, both with and without ithreads,
      without needing any portability fixups.)
_________________

v1.20 24 Sep 2003

    - Introduced an alternative C stat(2) function from CVSNT and Perl code that
      can succeed in some cases where Microsoft's implementation fails.  A Perl
      interface, alt_stat(), is optionally exported, and can be automatically
      tried by the replacement stat() and lstat() functions if the built-in
      functions that they call first fail.

    - Changed the replacement utime()'s use of Perl's trick for making it work
      on directories too.  The trick only works under Windows NT platforms, so
      it is more appropriate to try a more natural approach first and only fall
      back on the trick if that fails.  This is the approach that Perl uses too.

    - Improved the replacement stat() and lstat() functions by having them fall
      back on CreateFile() if FindFirstFile() fails when getting the correct UTC
      file times.  The file times can now be retrieved under Windows NT
      platforms for root (drive or UNC) directories, and for directories
      specified with a trailing slash or backslash.

    - Improved the detection of the filesystem when determining whether or not
      it stores UTC file times.

    - Cached the conversion of the base SYSTEMTIME to FILETIME for a minor
      speed-up.

    - Changed the output of debug information to use warn() rather than simply
      print()'ing to STDERR to enable the information to be captured by a
      $SIG{__WARN__} handler if required.

    - Added new test scripts to exercise the new and improved features.

    - Renamed some functions in the XS and C code.

    - Reverted the typemap for "const char *" back to the default T_PV.  There
      didn't seem to be any point in the custom typemap.

    - Changed tabs to spaces (via "expand -t 4 infile > outfile") to avoid
      irritation when switching between editors that use 4- or 8-space tabs.

    - Added META.yml (courtesy of ExtUtils::MakeMaker 6.17).
_________________

v1.10 23 Jun 2003

    - Incorporated improvements to the underlying C code from CVSNT code.  The
      DST season transition dates are now correctly calculated (assuming that
      they are not determined by year-specific clues), rather than assuming the
      United States' rule applies.
_________________

v1.00 05 Jun 2003

    - First released version.
_________________

v0.01 20 May 2003

    - Original version; created by h2xs 1.22 with options:
      -n Win32::UTCFileTime -b 5.6.0
________________________________________________________________________________