This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "Update File-Temp to CPAN version 0.2310"
authorSawyer X <xsawyerx@cpan.org>
Mon, 28 Sep 2020 18:15:35 +0000 (20:15 +0200)
committerSawyer X <xsawyerx@cpan.org>
Mon, 28 Sep 2020 18:15:35 +0000 (20:15 +0200)
This reverts commit e11449403fd20c119b4b38b99079f993f24f15e8.

Please see GH #18172: https://github.com/Perl/perl5/issues/18172

Porting/Maintainers.pl
cpan/File-Temp/lib/File/Temp.pm
cpan/File-Temp/t/cmp.t
cpan/File-Temp/t/fork.t
cpan/File-Temp/t/lock.t
cpan/File-Temp/t/object.t
cpan/File-Temp/t/rmtree.t
cpan/File-Temp/t/tempfile.t

index 88aea43..4bbe441 100755 (executable)
@@ -535,7 +535,7 @@ use File::Glob qw(:case);
     },
 
     'File::Temp' => {
-        'DISTRIBUTION' => 'ETHER/File-Temp-0.2310.tar.gz',
+        'DISTRIBUTION' => 'ETHER/File-Temp-0.2309.tar.gz',
         'FILES'        => q[cpan/File-Temp],
         'EXCLUDED'     => [
             qw( README.mkdn
index 99c8aeb..39e15d5 100644 (file)
@@ -1,7 +1,7 @@
-package File::Temp; # git description: v0.2309-16-g1d3137c
+package File::Temp; # git description: v0.2308-7-g3bb4d88
 # ABSTRACT: return name and handle of a temporary file safely
 
-our $VERSION = '0.2310';
+our $VERSION = '0.2309';
 
 #pod =begin :__INTERNALS
 #pod
@@ -307,7 +307,6 @@ my %FILES_CREATED_BY_OBJECT;
 #                        use of the O_TEMPORARY flag to sysopen.
 #                        Usually irrelevant on unix
 #   "use_exlock" => Indicates that O_EXLOCK should be used. Default is false.
-#   "file_permissions" => file permissions for sysopen(). Default is 0600.
 
 # Optionally a reference to a scalar can be passed into the function
 # On error this will be used to store the reason for the error
@@ -340,13 +339,12 @@ sub _gettemp {
 
   # Default options
   my %options = (
-                 "open"             => 0,
-                 "mkdir"            => 0,
-                 "suffixlen"        => 0,
-                 "unlink_on_close"  => 0,
-                 "use_exlock"       => 0,
-                 "ErrStr"           => \$tempErrStr,
-                 "file_permissions" => undef,
+                 "open" => 0,
+                 "mkdir" => 0,
+                 "suffixlen" => 0,
+                 "unlink_on_close" => 0,
+                 "use_exlock" => 0,
+                 "ErrStr" => \$tempErrStr,
                 );
 
   # Read the template
@@ -482,9 +480,6 @@ sub _gettemp {
     }
   }
 
-  my $perms = $options{file_permissions};
-  my $has_perms = defined $perms;
-  $perms = 0600 unless $has_perms;
 
   # Now try MAX_TRIES time to open the file
   for (my $i = 0; $i < MAX_TRIES; $i++) {
@@ -507,19 +502,19 @@ sub _gettemp {
       my $open_success = undef;
       if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) {
         # make it auto delete on close by setting FAB$V_DLT bit
-        $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, $perms, 'fop=dlt');
+        $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt');
         $open_success = $fh;
       } else {
         my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ?
                       $OPENTEMPFLAGS :
                       $OPENFLAGS );
         $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock});
-        $open_success = sysopen($fh, $path, $flags, $perms);
+        $open_success = sysopen($fh, $path, $flags, 0600);
       }
       if ( $open_success ) {
 
         # in case of odd umask force rw
-        chmod($perms, $path) unless $has_perms;
+        chmod(0600, $path);
 
         # Opened successfully - return file handle and name
         return ($fh, $path);
@@ -804,7 +799,7 @@ sub _is_verysafe {
 
 sub _can_unlink_opened_file {
 
-  if (grep $^O eq $_, qw/MSWin32 os2 VMS dos MacOS haiku/) {
+  if (grep { $^O eq $_ } qw/MSWin32 os2 VMS dos MacOS haiku/) {
     return 0;
   } else {
     return 1;
@@ -1004,7 +999,7 @@ sub _can_do_level {
 sub _parse_args {
   my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' );
   my %args = @_;
-  %args = map +(uc($_) => $args{$_}), keys %args;
+  %args = map { uc($_), $args{$_} } keys %args;
 
   # template (store it in an array so that it will
   # disappear from the arg list of tempfile)
@@ -1053,8 +1048,7 @@ sub _parse_args {
 #pod if UNLINK is set to true (the default).
 #pod
 #pod Supported arguments are the same as for C<tempfile>: UNLINK
-#pod (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX.
-#pod Additionally, the filename
+#pod (defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename
 #pod template is specified using the TEMPLATE option. The OPEN option
 #pod is not supported (the file is always opened).
 #pod
@@ -1365,11 +1359,6 @@ sub DESTROY {
 #pod
 #pod   ($fh, $filename) = tempfile($template, EXLOCK => 1);
 #pod
-#pod By default, the temp file is created with 0600 file permissions.
-#pod Use C<PERMS> to change this:
-#pod
-#pod   ($fh, $filename) = tempfile($template, PERMS => 0666);
-#pod
 #pod Options can be combined as required.
 #pod
 #pod Will croak() if there is an error.
@@ -1382,8 +1371,6 @@ sub DESTROY {
 #pod
 #pod EXLOCK flag available since 0.19.
 #pod
-#pod PERMS flag available since 0.24.
-#pod
 #pod =cut
 
 sub tempfile {
@@ -1399,9 +1386,8 @@ sub tempfile {
                  "SUFFIX" => '',    # Template suffix
                  "UNLINK" => 0,     # Do not unlink file on exit
                  "OPEN"   => 1,     # Open file
-                 "TMPDIR" => 0,     # Place tempfile in tempdir if template specified
-                 "EXLOCK" => 0,     # Open file with O_EXLOCK
-                 "PERMS"  => undef, # File permissions
+                 "TMPDIR" => 0, # Place tempfile in tempdir if template specified
+                 "EXLOCK" => 0, # Open file with O_EXLOCK
                 );
 
   # Check to see whether we have an odd or even number of arguments
@@ -1478,13 +1464,12 @@ sub tempfile {
   my ($fh, $path, $errstr);
   croak "Error in tempfile() using template $template: $errstr"
     unless (($fh, $path) = _gettemp($template,
-                                    "open"             => $options{OPEN},
-                                    "mkdir"            => 0,
-                                    "unlink_on_close"  => $unlink_on_close,
-                                    "suffixlen"        => length($options{SUFFIX}),
-                                    "ErrStr"           => \$errstr,
-                                    "use_exlock"       => $options{EXLOCK},
-                                    "file_permissions" => $options{PERMS},
+                                    "open" => $options{'OPEN'},
+                                    "mkdir"=> 0 ,
+                                    "unlink_on_close" => $unlink_on_close,
+                                    "suffixlen" => length($options{'SUFFIX'}),
+                                    "ErrStr" => \$errstr,
+                                    "use_exlock" => $options{EXLOCK},
                                    ) );
 
   # Set up an exit handler that can do whatever is right for the
@@ -2596,7 +2581,7 @@ sub unlink1 {
 package ## hide from PAUSE
   File::Temp::Dir;
 
-our $VERSION = '0.2310';
+our $VERSION = '0.2309';
 
 use File::Path qw/ rmtree /;
 use strict;
@@ -2663,7 +2648,7 @@ File::Temp - return name and handle of a temporary file safely
 
 =head1 VERSION
 
-version 0.2310
+version 0.2309
 
 =head1 SYNOPSIS
 
@@ -2834,8 +2819,7 @@ that the temporary file is removed by the object destructor
 if UNLINK is set to true (the default).
 
 Supported arguments are the same as for C<tempfile>: UNLINK
-(defaulting to true), DIR, EXLOCK, PERMS and SUFFIX.
-Additionally, the filename
+(defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename
 template is specified using the TEMPLATE option. The OPEN option
 is not supported (the file is always opened).
 
@@ -3020,11 +3004,6 @@ versions, explicitly set C<< EXLOCK=>0 >>.
 
   ($fh, $filename) = tempfile($template, EXLOCK => 1);
 
-By default, the temp file is created with 0600 file permissions.
-Use C<PERMS> to change this:
-
-  ($fh, $filename) = tempfile($template, PERMS => 0666);
-
 Options can be combined as required.
 
 Will croak() if there is an error.
@@ -3037,8 +3016,6 @@ TMPDIR flag available since 0.19.
 
 EXLOCK flag available since 0.19.
 
-PERMS flag available since 0.24.
-
 =item B<tempdir>
 
 This is the recommended interface for creation of temporary
@@ -3629,13 +3606,13 @@ Tim Jenness <tjenness@cpan.org>
 
 =head1 CONTRIBUTORS
 
-=for stopwords Tim Jenness Karen Etheridge David Golden Slaven Rezic mohawk2 Roy Ivy III Peter Rabbitson Olivier Mengué John Acklam Gim Yee Nicolas R Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover James E. Keenan Kevin Ryde Ben Tilly
+=for stopwords David Golden Karen Etheridge Slaven Rezic Peter Rabbitson Olivier Mengue Kevin Ryde John Acklam James E. Keenan Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover Ben Tilly
 
 =over 4
 
 =item *
 
-Tim Jenness <t.jenness@jach.hawaii.edu>
+David Golden <dagolden@cpan.org>
 
 =item *
 
@@ -3643,27 +3620,23 @@ Karen Etheridge <ether@cpan.org>
 
 =item *
 
-David Golden <dagolden@cpan.org>
-
-=item *
-
-Slaven Rezic <srezic@cpan.org>
+Slaven Rezic <slaven@rezic.de>
 
 =item *
 
-mohawk2 <mohawk2@users.noreply.github.com>
+Peter Rabbitson <ribasushi@cpan.org>
 
 =item *
 
-Roy Ivy III <rivy.dev@gmail.com>
+Olivier Mengue <dolmen@cpan.org>
 
 =item *
 
-Peter Rabbitson <ribasushi@cpan.org>
+David Golden <xdg@xdg.me>
 
 =item *
 
-Olivier Mengué <dolmen@cpan.org>
+Kevin Ryde <user42@zip.com.au>
 
 =item *
 
@@ -3671,11 +3644,11 @@ Peter John Acklam <pjacklam@online.no>
 
 =item *
 
-Tim Gim Yee <tim.gim.yee@gmail.com>
+Slaven Rezic <slaven.rezic@idealo.de>
 
 =item *
 
-Nicolas R <atoomic@cpan.org>
+James E. Keenan <jkeen@verizon.net>
 
 =item *
 
@@ -3699,21 +3672,13 @@ Guillem Jover <guillem@hadrons.org>
 
 =item *
 
-James E. Keenan <jkeen@verizon.net>
-
-=item *
-
-Kevin Ryde <user42@zip.com.au>
-
-=item *
-
 Ben Tilly <btilly@gmail.com>
 
 =back
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2020 by Tim Jenness and the UK Particle Physics and Astronomy Research Council.
+This software is copyright (c) 2019 by Tim Jenness and the UK Particle Physics and Astronomy Research Council.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
index 50e4ab6..d826ede 100644 (file)
@@ -7,7 +7,7 @@ use strict;
 BEGIN {use_ok( "File::Temp" ); }
 
 {
-  my $fh = File::Temp->new();
+  my $fh = new File::Temp();
   isa_ok ($fh, 'File::Temp');
 
   ok( "$fh" ne "foo", "compare stringified object with string");
index 019fab3..fd3f5a6 100644 (file)
@@ -12,14 +12,10 @@ BEGIN {
      $Config::Config{useithreads} and
      $Config::Config{ccflags} =~ /-DPERL_IMPLICIT_SYS/
     );
-  if ( $can_fork && !(($^O eq 'MSWin32') && $Devel::Cover::VERSION) ) {
+  if ( $can_fork ) {
     print "1..8\n";
   } else {
-    if ( ($^O eq 'MSWin32') && $Devel::Cover::VERSION ) {
-        print "1..0 # Skip Devel::Cover coverage testing is incompatible with fork under 'MSWin32'\n";
-    } else {
-        print "1..0 # Skip No fork available\n";
-    }
+    print "1..0 # Skip No fork available\n";
     exit;
   }
 }
@@ -42,7 +38,8 @@ for my $i (1 .. $children) {
   } else {
     # in a child we can't keep the count properly so we do it manually
     # make sure that child 1 dies first
-    my $time = ($i-1) * 3;
+    srand();
+    my $time = (($i-1) * 5) +int(rand(5));
     print "# child $i sleeping for $time seconds\n";
     sleep($time);
     my $count = $i + 1;
@@ -75,7 +72,8 @@ for my $i (1 .. $children) {
     # parent process
     next;
   } else {
-    my $time = ($i-1) * 3;
+    srand();
+    my $time = (($i-1) * 5) +int(rand(5));
     print "# child $i sleeping for $time seconds\n";
     sleep($time);
     my $count = 5 + $i;
index 7bcd491..0d7dfc0 100644 (file)
@@ -43,7 +43,7 @@ if ($@) {
 ok( !$status, "File $fh is locked" );
 
 # Now get a tempfile with locking disabled
-$fh = File::Temp->new( EXLOCK => 0 );
+$fh = new File::Temp( EXLOCK => 0 );
 
 eval {
    local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
index fd512a3..942de19 100644 (file)
@@ -41,7 +41,7 @@ like( $@, qr/can't be called as a method/, "File::Temp->tempfile error" );
 
 # Tempfile
 # Open tempfile in some directory, unlink at end
-my $fh = File::Temp->new( SUFFIX => '.txt' );
+my $fh = new File::Temp( SUFFIX => '.txt' );
 
 ok( (-f "$fh"), "File $fh exists"  );
 # Should still be around after closing
@@ -89,7 +89,7 @@ ok( (-d $tempdir), "Does $tempdir directory exist" );
 push(@dirs, $tempdir);
 
 # Create file in the temp dir
-$fh = File::Temp->new(
+$fh = new File::Temp(
                     DIR => $tempdir,
                     SUFFIX => '.dat',
                    );
@@ -102,7 +102,7 @@ push(@files, "$fh");
 
 # Test tempfile
 # ..and again (without unlinking it)
-$fh = File::Temp->new( DIR => $tempdir, UNLINK => 0 );
+$fh = new File::Temp( DIR => $tempdir, UNLINK => 0 );
 
 print "# TEMPFILE: Created $fh\n";
 ok( (-f "$fh" ), "Second file $fh exists in tempdir [nounlink]?");
@@ -110,7 +110,7 @@ push(@files, "$fh");
 
 # and another (with template)
 
-$fh = File::Temp->new( TEMPLATE => 'helloXXXXXXX',
+$fh = new File::Temp( TEMPLATE => 'helloXXXXXXX',
                      DIR => $tempdir,
                      SUFFIX => '.dat',
                    );
@@ -133,7 +133,7 @@ push(@files, "$fh");
 
 # Create a temporary file that should stay around after
 # it has been closed
-$fh = File::Temp->new( TEMPLATE => 'permXXXXXXX', UNLINK => 0);
+$fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 0);
 
 print "# TEMPFILE: Created $fh\n";
 ok( -f "$fh", "File $fh exists?" );
@@ -143,7 +143,7 @@ push( @still_there, "$fh"); # check at END
 
 # Now create a temp file that will remain when the object
 # goes out of scope because of $KEEP_ALL
-$fh = File::Temp->new( TEMPLATE => 'permXXXXXXX', UNLINK => 1);
+$fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 1);
 
 print "# TEMPFILE: Created $fh\n";
 ok( -f "$fh", "File $fh exists?" );
index 78a26bc..c5c98d7 100644 (file)
@@ -35,7 +35,7 @@ sub dircontent {
   my $tempdirstr = shift;
   my $str = "Contents of $dir (should not contain \"$tempdirstr\"):\n";
   opendir(my $DH, $dir) or die "opendir failed; $!";
-  my @contents = grep $_ !~ /^\.+/, readdir($DH);
+  my @contents = grep { $_ !~ /^\.+/; } readdir($DH);
   closedir($DH);
   for my $ls (@contents) {
     $str .= "  $ls\n";
index baef313..3cb08d2 100644 (file)
@@ -2,7 +2,7 @@
 # Test for File::Temp - tempfile function
 
 use strict;
-use Test::More tests => 30;
+use Test::More tests => 28;
 use File::Spec;
 use Cwd qw/ cwd /;
 
@@ -100,31 +100,13 @@ ok( (-f $tempfile ), "Local tempfile in tempdir exists");
 push(@files, File::Spec->rel2abs($tempfile));
 
 # Test tempfile
-# ..and another with default permissions
+# ..and another with changed permissions (read-only)
 ($fh, $tempfile) = tempfile(
-                           DIR => $tempdir,
-                          );
-
-ok( (-f $tempfile && -r _ && -w _),
-    "Created tempfile with default permissions" );
-push(@files, File::Spec->rel2abs($tempfile));
-
-# Test tempfile
-# ..and another with changed permissions
-($fh, $tempfile) = tempfile(
-                           DIR => $tempdir,
-                           PERMS => 0400,
-                          );
+                           DIR => $tempdir,
+                          );
+chmod 0444, $tempfile;
 
-# From perlport on chmod:
-#
-#     (Win32) Only good for changing "owner" read-write access;
-#     "group" and "other" bits are meaningless.
-#
-# So don't check actual file permissions -- it will be 0444 on Win32
-# instead of 0400.  Instead, just check that no longer writable.
-ok( (-f $tempfile && -r _ && ! -w _),
-    "Created tempfile with changed permissions" );
+ok( (-f $tempfile ), "Local tempfile in tempdir exists read-only");
 push(@files, File::Spec->rel2abs($tempfile));
 
 print "# TEMPFILE: Created $tempfile\n";