windows-nt/Source/XPSP1/NT/base/crts/crtw32/tools/fixcopyright.pl
2020-09-26 16:20:57 +08:00

96 lines
2.4 KiB
Perl

$inroot = '\rtl\crt';
$outroot = '\rtl\tmp';
while ($_ = $ARGV[0], /^-/) {
shift;
if (/^-i/) { $inroot = $ARGV[0]; shift; }
if (/^-o/) { $outroot = $ARGV[0]; shift; }
if (/^-v/) { $verbose++; }
}
chdir "$inroot" or die "Can't chdir to $inroot: $!\n";
system "delnode /q $outroot";
system "xcopy /ti $inroot $outroot";
open FILELIST, "sd files ...#have |" or die "Can't run sd files: $!\n";
for (<FILELIST>) {
chop;
s|^//depot/VCBranch/VC/crt/||;
s|#\d+ - .*||;
next if /^log\.txt$/;
next if /fixcopyright\.pl$/;
$INFILE = $_;
open INFILE or die "Can't open $INFILE: $!\n";
$OUTFILE = "$outroot\\$INFILE";
open OUTFILE, ">$OUTFILE" or die "Can't open $OUTFILE: $!\n";
$found_copyright = 0;
$other_copyright = 0;
$detab = 0;
@format_errs = ();
for (<INFILE>) {
$detab = 1 if /\t/;
if (/copyright/i && /Microsoft/) {
++$found_copyright;
if (/2001/) {
print "Warning: $INFILE:\tCopyright already current\n";
} elsif (/ (19|20)\d\d[ ,."]/) {
s/( (19|20)\d\d)([ ,."])/$1-2001$3/;
} elsif (/ (19|20)\d\d-(19|20)\d\d[ ,."]/) {
s/( (19|20)\d\d)-(19|20)\d\d([ ,."])/$1-2001$4/;
} elsif (/ (19|20)\d\d$/) {
s/( (19|20)\d\d)$/$1-2001/;
} elsif (/ (19|20)\d\d-(19|20)\d\d$/) {
s/( (19|20)\d\d)-(19|20)\d\d$/$1-2001/;
} else {
print "Error: $INFILE: Unparsable copyright line\n";
print "\t $_";
}
if (!/Copyright \([cC]\) \d{4}(-\d{4})?,? Microsoft Corporation\.\s+All rights reserved\./) {
if ( $INFILE !~ q|/sources(\.nt)?$|
&& $INFILE !~ q|dirs$|
) {
push @format_errs, $_;
}
}
}
elsif (/copyright/i && (/Digital Equipment/ || /Intel/)) {
++$other_copyright;
}
print OUTFILE $_;
}
while ($_ = pop @format_errs) {
# missing "All rights reserved" OK if other copyrights present
next if $other_copyright &&
/Copyright \([cC]\) \d{4}(-\d{4})?,? Microsoft Corporation/;
# .rc files are allowed to have a different format
next if $INFILE =~ /\.rc$/ &&
/Copyright \([cC]\) Microsoft Corporation\.\s+\d{4}(-\d{4})?"/;
print "Error: $INFILE: Incorrect copyright format\n";
print "\t $_";
}
if ($verbose) {
print "Warning: $INFILE:\tdetab!\n" if $detab;
print "Warning: $INFILE:\tmultiple copyrights\n" if $found_copyright > 1;
print "Warning: $INFILE:\tno copyright\n" if !$found_copyright;
}
close INFILE;
close OUTFILE;
unlink $OUTFILE if !$found_copyright;
}
close FILELIST;