The existing check conflated two different potential problems,
multiple dots in a filename and dots in a directory name.
Multiple dots in a filename can cause various kinds of trouble,
depending on the VMS filesystem in use, but there are workarounds
for older filesystems and this problem is unlikely to cause a
build failure, so it's probably too stringent to make a test
fail when we find them (and there are lots of examples already
in the repository).
*Any* dots in a directory name are problematic because dot is the
directory delimiter. Newer (ODS-5) filesystems can handle these
if escaping is done but older (ODS-2) filesystems can't and the
manifest checker in configure.com can't. In other words, the
build falls down hard in this case.
The existing test was checking for multiple dots in a directory
name but not checking the filename at all. I've changed it to
check for any dots in a directory name.
my @path_components = split('/',$path);
pop @path_components; # throw away the filename
for my $component (@path_components) {
- if ($component =~ /\..*?\./) {
- fail("no directory components containing more than one '.'");
+ if ($component =~ /\./) {
+ fail("no directory components containing '.'");
return;
}
if (length $component > 32) {