This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't promulgate Perl attributes
[perl5.git] / regen_lib.pl
1 #!/usr/bin/perl -w
2 use strict;
3 use vars qw($Is_W32 $Is_OS2 $Is_Cygwin $Is_NetWare $Needs_Write);
4 use Config; # Remember, this is running using an existing perl
5
6 # Common functions needed by the regen scripts
7
8 $Is_W32 = $^O eq 'MSWin32';
9 $Is_OS2 = $^O eq 'os2';
10 $Is_Cygwin = $^O eq 'cygwin';
11 $Is_NetWare = $Config{osname} eq 'NetWare';
12 if ($Is_NetWare) {
13   $Is_W32 = 0;
14 }
15
16 $Needs_Write = $Is_OS2 || $Is_W32 || $Is_Cygwin || $Is_NetWare;
17
18 sub safer_unlink {
19   my @names = @_;
20   my $cnt = 0;
21
22   my $name;
23   foreach $name (@names) {
24     next unless -e $name;
25     chmod 0777, $name if $Needs_Write;
26     ( CORE::unlink($name) and ++$cnt
27       or warn "Couldn't unlink $name: $!\n" );
28   }
29   return $cnt;
30 }
31
32 sub safer_rename_silent {
33   my ($from, $to) = @_;
34
35   # Some dosish systems can't rename over an existing file:
36   safer_unlink $to;
37   chmod 0600, $from if $Needs_Write;
38   rename $from, $to;
39 }
40
41 sub safer_rename {
42   my ($from, $to) = @_;
43   safer_rename_silent($from, $to) or die "renaming $from to $to: $!";
44 }
45 1;