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__

Reply via email to