Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 92b3a3ebc05e3ce0e84a1ccff46487ca2200b471
      
https://github.com/Perl/perl5/commit/92b3a3ebc05e3ce0e84a1ccff46487ca2200b471
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M MANIFEST
    M dosish.h
    M t/op/stat.t
    A t/win32/stat.t
    M win32/config.gc
    M win32/config.vc
    M win32/config_H.gc
    M win32/config_H.vc
    M win32/perlhost.h
    M win32/win32.c
    M win32/win32.h
    M win32/win32iop.h

  Log Message:
  -----------
  Win32: add lstat(), fetch st_dev and st_ino and fetch st_nlink for fstat

We need lstat() for various modules to work well with symlinks,
and the same modules often want to check for matches on the device
and inode number.

The values we're using for st_ino match those that the Python and Rust
libraries use, and Go uses the same volume and file index values for
testing if two stat objects refer to the same file.

They aren't entirely unique, given ReFS uses 128-bit file ids, but
the API used to check for this (GetFileInformationByHandleEx() for
FileIdInfo) is only available on server operating systems, so I can't
directly test it anyway.


  Commit: 680b2c5ee3b53c627074192b3cf14416a24da6ea
      
https://github.com/Perl/perl5/commit/680b2c5ee3b53c627074192b3cf14416a24da6ea
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M MANIFEST
    M iperlsys.h
    M pod/perlport.pod
    M pp_sys.c
    M t/op/stat.t
    A t/win32/symlink.t
    M win32/Makefile
    M win32/config.gc
    M win32/config.vc
    M win32/config_H.gc
    M win32/config_H.vc
    M win32/perlhost.h
    M win32/win32.c
    M win32/win32iop.h

  Log Message:
  -----------
  Win32: implement symlink() and readlink()

The API used requires Windows Vista or later.

The API itself requires either elevated privileges or a sufficiently
recent version of Windows 10 running in "Developer Mode", so some
tests require updates.


  Commit: e935ef333b3eab54a766de93fad1369f76ddea49
      
https://github.com/Perl/perl5/commit/e935ef333b3eab54a766de93fad1369f76ddea49
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M pod/perlport.pod
    M t/win32/stat.t
    M win32/win32.c

  Log Message:
  -----------
  Win32: implement our own stat(), and hence our own utime

This fixes at least two problems:

- unlike UCRT, the MSVCRT used for gcc builds has a bug converting
  a FILETIME in an unlike current DST state, returning a time
  offset by an hour.  Fixes GH #6080

- the MSVCRT apparently uses FindFirstFile() to fetch file
  information, but this doesn't follow symlinks(), so stat()
  ends up returning information about the symlink(), not the
  underlying file.  This isn't an issue with the UCRT which
  opens the file as this implementation does.

Currently this code calculates the time_t for st_*time, and the
other way for utime() using a simple multiplication and offset
between time_t and FILETIME values, but this may be incorrect
if leap seconds are enabled.

This code also requires Vista or later.

Some of this is based on code by Tomasz Konojacki (xenu).


  Commit: 12a8085aee9a1a5ac613205b43ea06406736ac6b
      
https://github.com/Perl/perl5/commit/12a8085aee9a1a5ac613205b43ea06406736ac6b
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M dist/PathTools/Cwd.pm
    M dist/PathTools/Cwd.xs
    M dist/PathTools/lib/File/Spec.pm
    M dist/PathTools/lib/File/Spec/AmigaOS.pm
    M dist/PathTools/lib/File/Spec/Cygwin.pm
    M dist/PathTools/lib/File/Spec/Epoc.pm
    M dist/PathTools/lib/File/Spec/Functions.pm
    M dist/PathTools/lib/File/Spec/Mac.pm
    M dist/PathTools/lib/File/Spec/OS2.pm
    M dist/PathTools/lib/File/Spec/Unix.pm
    M dist/PathTools/lib/File/Spec/VMS.pm
    M dist/PathTools/lib/File/Spec/Win32.pm
    M dist/PathTools/t/cwd.t

  Log Message:
  -----------
  PathTools: use PerlLIO_*() functions and chdir() on a symlink differences

Use PerlLIO_lstat() and PerlLIO_readlink() instead of directly calling
the POSIX names, so our Win32 overrides work.

For the test, unlike POSIX, changing directory via a symlink on Win32
appears to store the symlink as part of the current directory rather
so GetCurrentDirectory() fetches that rather than the hardlinked path.


  Commit: a0ced391f0a77a8d66c8cba046a923721e0dd52b
      
https://github.com/Perl/perl5/commit/a0ced391f0a77a8d66c8cba046a923721e0dd52b
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M ext/File-Find/t/find.t

  Log Message:
  -----------
  File::Find find.t: switch to done_testing()


  Commit: 0d00729c03a1f68e1b51e986d1ce9000b0e3d301
      
https://github.com/Perl/perl5/commit/0d00729c03a1f68e1b51e986d1ce9000b0e3d301
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M ext/File-Find/lib/File/Find.pm
    M ext/File-Find/t/find.t
    M ext/File-Find/t/lib/Testing.pm
    M ext/File-Find/t/taint.t

  Log Message:
  -----------
  File::Find: support Win32 symlinks

find.t, taint.t: check that symlink() works under the current
permissions/filesystem rather than assuming it will work

find.t: since symlinks are now available, an earlier test block
set $FileFileTests_OK, and the tests in this Win32 block don't use
either of the follow options, which is required for fast file tests.

taint.t: ensure we get "/" separated names to match File::Find's output


  Commit: 520fd6d3ecf7b0cec09bae8a26b939b7ed485bbf
      
https://github.com/Perl/perl5/commit/520fd6d3ecf7b0cec09bae8a26b939b7ed485bbf
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M lib/File/Copy.pm
    M lib/File/Copy.t

  Log Message:
  -----------
  File::Copy: support symlinks on Win32


  Commit: 690ab4ba4bc90fa2f43c03eb418c3dc163f57ea8
      
https://github.com/Perl/perl5/commit/690ab4ba4bc90fa2f43c03eb418c3dc163f57ea8
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M win32/win32.c

  Log Message:
  -----------
  Win32: re-work FILETIME <=> time_t conversions

Current versions of Windows claim to support leap seconds, but the
time conversion I was using ignores that possibility.

Switch to using APIs (FileTimeToSystemTime() and SystemTimeToFileTime())
that are documented to support leap seconds that might be included
in a FILETIME.


  Commit: 17ab6b6399dbe07e478478e9eba9aeb345eab2ed
      
https://github.com/Perl/perl5/commit/17ab6b6399dbe07e478478e9eba9aeb345eab2ed
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M win32/win32.c

  Log Message:
  -----------
  win32 symlink: only use the unprivileged flag if windows is new enough


  Commit: 203831af1a745c76df85e12f4a1cf47e5bddf3ff
      
https://github.com/Perl/perl5/commit/203831af1a745c76df85e12f4a1cf47e5bddf3ff
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M mg.c
    M pod/perlvar.pod
    M win32/win32.c
    M win32/win32.h

  Log Message:
  -----------
  remove ${^WIN32_SLOPPY_STAT}

The new implementation, like the UCRT implementation, always
opens the specified file.


  Commit: 2bfb75d20f6d643150258ffdbe1647239cb5f69a
      
https://github.com/Perl/perl5/commit/2bfb75d20f6d643150258ffdbe1647239cb5f69a
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M pod/perlport.pod
    M t/win32/stat.t
    M t/win32/symlink.t
    M win32/win32.c

  Log Message:
  -----------
  lstat(), readlink() and unlink() treat directory junctions as symlinks


  Commit: d9f9953f74a41a404d61c6ddef3ed682eec1aa1c
      
https://github.com/Perl/perl5/commit/d9f9953f74a41a404d61c6ddef3ed682eec1aa1c
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M win32/GNUmakefile
    M win32/Makefile
    M win32/config_H.gc
    M win32/config_H.vc
    M win32/config_sh.PL
    M win32/makefile.mk

  Log Message:
  -----------
  Win32: don't include version specific config for prebuilt config_h.*

This fixes the problem where doing a regen_config_h with a compiler
that supports stdbool.h would generate a config_h.* that would
result in a build failure on older compilers that didn't support
stdbool.h.


  Commit: 7c04651411221e54ce561cd41ae8fa76347bbd5a
      
https://github.com/Perl/perl5/commit/7c04651411221e54ce561cd41ae8fa76347bbd5a
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M win32/win32.c

  Log Message:
  -----------
  pre-vista support for win32_symlink


  Commit: 9a1250917f0a11e197e9776a3baee0aa232ea2ed
      
https://github.com/Perl/perl5/commit/9a1250917f0a11e197e9776a3baee0aa232ea2ed
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M t/win32/stat.t
    M win32/win32.c

  Log Message:
  -----------
  Win32: try to make the new stat pre-Vista compatible

Skips the win32\stat.t execute flag test for handles pre-Vista

This is intended mostly for allowing the Win2000 smoker to build and
test.  If we end up dropping pre-Vista support this commit can be
removed (or reverted if it ends up in blead)


  Commit: 7e6c9456ae41721f3054e84eb60242e86219542a
      
https://github.com/Perl/perl5/commit/7e6c9456ae41721f3054e84eb60242e86219542a
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M t/op/taint.t

  Log Message:
  -----------
  t/op/taint.t: handle symlink requiring anything unavailable

like privileges, or a filesystem without symlink support


  Commit: 72aac62720fdd7ad8838984e8ca7cf2dedb7a776
      
https://github.com/Perl/perl5/commit/72aac62720fdd7ad8838984e8ca7cf2dedb7a776
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M Porting/Maintainers.pl
    M cpan/Test-Harness/t/source.t
    M t/porting/customized.dat

  Log Message:
  -----------
  Test-Harness: don't assume symlink succeeds

https://github.com/Perl-Toolchain-Gang/Test-Harness/pull/103
upstream which has been applied but not released.


  Commit: a2e9e863ec01c95edbb270bcf28d1869d7cedf5b
      
https://github.com/Perl/perl5/commit/a2e9e863ec01c95edbb270bcf28d1869d7cedf5b
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M t/win32/symlink.t
    M win32/win32.c

  Log Message:
  -----------
  win32 symlink: treats paths that look like directories as directories


  Commit: 0d2c9baa1c18fc5a6d8d8a4668a207fe030f87a2
      
https://github.com/Perl/perl5/commit/0d2c9baa1c18fc5a6d8d8a4668a207fe030f87a2
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M win32/win32.c

  Log Message:
  -----------
  win32 symlink: reindent


  Commit: b277e767f3a3d9af20f138a95c26625cf2dfb53a
      
https://github.com/Perl/perl5/commit/b277e767f3a3d9af20f138a95c26625cf2dfb53a
  Author: Tony Cook <t...@develop-help.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M MANIFEST
    M Porting/Maintainers.pl
    M cpan/Test-Harness/t/source.t
    M dist/PathTools/Cwd.pm
    M dist/PathTools/Cwd.xs
    M dist/PathTools/lib/File/Spec.pm
    M dist/PathTools/lib/File/Spec/AmigaOS.pm
    M dist/PathTools/lib/File/Spec/Cygwin.pm
    M dist/PathTools/lib/File/Spec/Epoc.pm
    M dist/PathTools/lib/File/Spec/Functions.pm
    M dist/PathTools/lib/File/Spec/Mac.pm
    M dist/PathTools/lib/File/Spec/OS2.pm
    M dist/PathTools/lib/File/Spec/Unix.pm
    M dist/PathTools/lib/File/Spec/VMS.pm
    M dist/PathTools/lib/File/Spec/Win32.pm
    M dist/PathTools/t/cwd.t
    M dosish.h
    M ext/File-Find/lib/File/Find.pm
    M ext/File-Find/t/find.t
    M ext/File-Find/t/lib/Testing.pm
    M ext/File-Find/t/taint.t
    M iperlsys.h
    M lib/File/Copy.pm
    M lib/File/Copy.t
    M mg.c
    M pod/perlport.pod
    M pod/perlvar.pod
    M pp_sys.c
    M t/op/stat.t
    M t/op/taint.t
    M t/porting/customized.dat
    A t/win32/stat.t
    A t/win32/symlink.t
    M win32/GNUmakefile
    M win32/Makefile
    M win32/config.gc
    M win32/config.vc
    M win32/config_H.gc
    M win32/config_H.vc
    M win32/config_sh.PL
    M win32/makefile.mk
    M win32/perlhost.h
    M win32/win32.c
    M win32/win32.h
    M win32/win32iop.h

  Log Message:
  -----------
  Implement symlink(), lstat() and readlink() on Win32


Compare: https://github.com/Perl/perl5/compare/c1ec4bdd803f...b277e767f3a3

Reply via email to