Encode Hackers, I am now in the middle of linting filenames. I have found check83.pl terribly obsolete.
> > perl ../perl/Porting/check83.pl Yields nothing but filenames like "7bit-greek.enc" is an obvious violation. So I resorted to write my own version of check83.pl, chkmani.pl. I have included the script right after my sig. And here is the outcome. > > perl t/chkmani.pl > Encode/7bit-greek.enc : "7bit-greek.enc" is non-8.3-compliant. > Encode/7bit-kana.enc : "7bit-kana.enc" is non-8.3-compliant. > Encode/7bit-latin1.enc : "7bit-latin1.enc" is non-8.3-compliant. > Encode/big5-hkscs.enc : "big5-hkscs.enc" is non-8.3-compliant. > Encode/iso-ir-165.enc : "iso-ir-165.enc" is non-8.3-compliant. > Encode/macCentEuro.enc : "macCentEuro.enc" is non-8.3-compliant. > Encode/macCroatian.enc : "macCroatian.enc" is non-8.3-compliant. > Encode/macCyrillic.enc : "macCyrillic.enc" is non-8.3-compliant. > Encode/macDingbats.enc : "macDingbats.enc" is non-8.3-compliant. > Encode/macIceland.enc : "macIceland.enc" is non-8.3-compliant. > Encode/macRumanian.enc : "macRumanian.enc" is non-8.3-compliant. > Encode/macTurkish.enc : "macTurkish.enc" is non-8.3-compliant. > Encode/macUkraine.enc : "macUkraine.enc" is non-8.3-compliant. > encengine.c : "encengine.c" is non-8.3-compliant. > lib/Encode/Supported.pod : "Supported.pod" is non-8.3-compliant. > lib/Encode/iso10646_1.pm : "iso10646_1.pm" is non-8.3-compliant. > lib/Encode/EncFormat.pod : "EncFormat.pod" is non-8.3-compliant. *.pm and *.pod are easy to fix but *.enc is tough because Encode::Tcl and compile faithfully generate canonical encoding name out of filenames. For the time being I will fix *.pod and *.pm but I am stoked on *.euc. Tell me what you guys think. Dan the Man too Big to Fit in 8.3 #!/usr/bin/perl # usage: perl chkmani.pl require 5.00503; use strict; my %Manifest; open MANIFEST, "MANIFEST" or die "MANIFEST:$!"; while(<MANIFEST>){ chomp; s/\s+.*//o; # existence -f $_ or warn qq($_ : nonexistent\n); # case insensitivity if (exists $Manifest{my $lc = lc($_)}){ warn qq($_ : conflicts with "$Manifest{$lc}"\n); }else{ $Manifest{$lc} = $_; } my @dir = split(m{/}, $_); my $file = pop @dir; # directory; for my $dir (@dir){ $dir =~ /\./o and warn qq($_ : "$dir" contains a dot.\n); } # file my $badchar = ''; while ($file =~ /\G([^A-Za-z0-9_\.-])/go){ $badchar .= $1 }; length($badchar) and warn qq($_ : "$file" contains non-portable chars "$badchar"); $file =~ /^([A-Za-z0-9_-]{1,8}(\.[A-Za-z0-9_-]{1,3})?)$/o; $file ne $1 and warn qq($_ : "$file" is non-8.3-compliant.\n); } __END__