"Sean Branam" <[EMAIL PROTECTED]> writes:

> 4.4
> 
> Windows 2k server
> 
> Cifs

The problem is obviously case sensitivity.  "ls i386" should have
worked even though the folder was named I386.  (It works for me, but
see below.)  Our code reads i386/txtsetup.sif and related files to
identify the OS media, and those file name lookups are failing because
your file is named TXTSETUP.SIF.

Our boot disk tries two different Linux drivers to connect to the /z
share.  First it tries smbfs (by running smbmount), then it falls back
to cifs (by running mount.cifs).

The latter receives much less testing because smbmount usually works.

With a Windows file server, everything should be case-insensitive.
And using smbmount, it definitely is.  This may be a bug in the Linux
CIFS driver; I will look into it.

Meanwhile, to get this working, you need to figure out why smbmount is
failing.  The boot disk is pretty verbose about what it is doing, and
there should be some sort of diagnostic when smbmount fails.  Use
Shift+PageUp to scroll backwards on the Linux console.

Or you can rename everything under i386 to lower-case, which I believe
will help.  I am attaching a Perl script which automates this.  To use
it:

  1) If you have not done so already, install ActiveState Perl and
     associate .pl files with it.

  2) Run "lower-caseify.pl Z:\os\win2ksp4\i386".

Please let us know how it goes.  You are not the first person to have
problems with case sensitivity, and I would like to resolve this for
good.

 - Pat


use warnings;
use strict;
use File::Spec;

sub doit ($);
sub doit ($) {
    my ($file) = @_;

    if (! -l $file && -d _) {
        # Directory; recurse through its contents.
        opendir DIR, $file
            or die "Unable to opendir $file: $^E";
        my @contents = readdir DIR;
        closedir DIR
            or die "Unable to closedir $file: $^E";
        foreach my $entry (@contents) {
            $entry eq '.' || $entry eq '..'
                and next;
            doit (File::Spec->catfile ($file, $entry));
        }
    }

    # Rename to lower-case.
    my $lc_file = lc $file;
    $file eq $lc_file
        or rename $file, $lc_file
        or die "Unable to rename $file to $lc_file: $^E";
}

foreach my $file (@ARGV) {
    doit ($file);
}

exit 0;

Reply via email to