1898184e3Ssthen#!./perl -w 2898184e3Ssthen 3898184e3Ssthen=head1 filenames.t 4898184e3Ssthen 5898184e3SsthenTest the well-formed-ness of filenames names in the MANIFEST file. Current 6898184e3Ssthentests being done: 7898184e3Ssthen 8898184e3Ssthen=over 4 9898184e3Ssthen 10898184e3Ssthen=item * no more than 39 characters before the dot, and 39 after 11898184e3Ssthen 12898184e3Ssthen=item * no filenames starting with - 13898184e3Ssthen 14898184e3Ssthen=item * don't use any of these names (regardless of case) before the dot: CON, 15898184e3SsthenPRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, 16898184e3SsthenLPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9 17898184e3Ssthen 18898184e3Ssthen=item * no spaces, ( or & in filenames 19898184e3Ssthen 20898184e3Ssthen=back 21898184e3Ssthen 22898184e3Ssthen=cut 23898184e3Ssthen 24898184e3SsthenBEGIN { 25898184e3Ssthen chdir 't'; 26898184e3Ssthen @INC = '../lib'; 27898184e3Ssthen} 28898184e3Ssthen 29898184e3Ssthenuse strict; 30898184e3Ssthenuse File::Basename; 31898184e3Ssthenrequire './test.pl'; 32898184e3Ssthen 33898184e3Ssthen 34*91f110e0Safresh1my $manifest = '../MANIFEST'; 35898184e3Ssthen 36898184e3Ssthenopen my $m, '<', $manifest or die "Can't open '$manifest': $!"; 37898184e3Ssthenmy @files; 38898184e3Ssthenwhile (<$m>) { 39898184e3Ssthen chomp; 40898184e3Ssthen my($path) = split /\t+/; 41898184e3Ssthen push @files, $path; 42898184e3Ssthen 43898184e3Ssthen} 44898184e3Ssthenclose $m or die $!; 45898184e3Ssthen 46898184e3Ssthenplan(scalar @files); 47898184e3Ssthen 48*91f110e0Safresh1PATHNAME: for my $pathname (@files) { 49*91f110e0Safresh1 my @path_components = split('/',$pathname); 50*91f110e0Safresh1 my $filename = pop @path_components; 51898184e3Ssthen for my $component (@path_components) { 52898184e3Ssthen if ($component =~ /\./) { 53*91f110e0Safresh1 fail("$pathname has directory components containing '.'"); 54*91f110e0Safresh1 next PATHNAME; 55898184e3Ssthen } 56898184e3Ssthen if (length $component > 32) { 57*91f110e0Safresh1 fail("$pathname has a name over 32 characters (VOS requirement)"); 58*91f110e0Safresh1 next PATHNAME; 59898184e3Ssthen } 60898184e3Ssthen } 61898184e3Ssthen 62898184e3Ssthen 63898184e3Ssthen if ($filename =~ /^\-/) { 64*91f110e0Safresh1 fail("$pathname starts with -"); 65*91f110e0Safresh1 next PATHNAME; 66898184e3Ssthen } 67898184e3Ssthen 68898184e3Ssthen my($before, $after) = split /\./, $filename; 69898184e3Ssthen if (length $before > 39) { 70*91f110e0Safresh1 fail("$pathname has more than 39 characters before the dot"); 71*91f110e0Safresh1 } elsif ($after && length $after > 39) { 72*91f110e0Safresh1 fail("$pathname has more than 39 characters after the dot"); 73*91f110e0Safresh1 } elsif ($filename =~ /^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])\./i) { 74*91f110e0Safresh1 fail("$pathname has a reserved name"); 75*91f110e0Safresh1 } elsif ($filename =~ /\s|\(|\&/) { 76*91f110e0Safresh1 fail("$pathname has a reserved character"); 77*91f110e0Safresh1 } else { 78*91f110e0Safresh1 pass("$pathname ok"); 79898184e3Ssthen } 80898184e3Ssthen} 81898184e3Ssthen 82898184e3Ssthen# EOF 83