]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
autoreconf.in: improve compatibility with old perl
authorZack Weinberg <zackw@panix.com>
Mon, 2 Nov 2020 22:16:00 +0000 (17:16 -0500)
committerZack Weinberg <zackw@panix.com>
Mon, 2 Nov 2020 22:16:00 +0000 (17:16 -0500)
In very old perls (I noticed this with 5.8.4), File::Temp objects are
not automatically stringified in all contexts where we expect them to
be, causing autoreconf to crash.

* bin/autoreconf.in (install_aux_file): Explicitly extract the
  temporary file’s name from $temp, and use that in all the places we
  were using $temp.

bin/autoreconf.in

index 2d4271556a08cee34105b0a6609a05e7b1a1fc20..ccbd6c47488868a75bc90c113f59e2f7046c1b01 100644 (file)
@@ -363,10 +363,13 @@ sub install_aux_file
             or fatal "rm -f $dest: $!\n";
         }
       my $temp = new File::Temp (UNLINK => 0, DIR => $destdir);
-      copy ($src, $temp)
-        or fatal "copying $src to $temp: $!\n";
-      make_executable ($temp) if -x $src;
-      update_file ($temp, $dest, $force);
+      # Older Perls don't convert $temp to its filename
+      # in all the places we need it to.
+      my $tempname = $temp->filename;
+      copy ($src, $tempname)
+        or fatal "copying $src to $tempname: $!\n";
+      make_executable ($tempname) if -x $src;
+      update_file ($tempname, $dest, $force);
     }
 }