--- /dev/null
+#!/usr/bin/perl
+my $top=`pwd`; chomp $top;
+
+sub vfat_rename($$) {
+ my $from,$to;
+ ($from,$to) = @_;
+
+ # uppercase DOS names with the vfat driver need some forceful convincing
+ # to actually make them lowercase
+ rename($from,"$to.xxx.xx");
+ rename("$to.xxx.xx",$to);
+}
+
+sub scan($) {
+ my $old = `pwd`; chomp $old;
+ my $cur = shift @_;
+ my @x;
+
+ print "scanning $cur\n";
+ chdir($cur) || die;
+
+ opendir(X,".") || return;
+ while (my $name = readdir(X)) {
+ next unless -f $name;
+ my $n = lc($name);
+ next if $n eq $name;
+ print "$name\n";
+ rename($name,$n) || die;
+ vfat_rename($name,$n);
+ }
+ closedir(X);
+
+ opendir(X,".") || return;
+ while (my $name = readdir(X)) {
+ next if $name =~ m/^\.+$/;
+ next if $name eq ".git";
+ next if $name eq ".GIT";
+ next unless -d $name;
+ my $n = lc($name);
+ next if $n eq $name;
+ print "$name\n";
+ rename($name,$n) || die;
+ vfat_rename($name,$n);
+ }
+ closedir(X);
+
+ opendir(X,".") || return;
+ while (my $name = readdir(X)) {
+ next if $name =~ m/^\.+$/;
+ next if $name eq ".git";
+ next if $name eq ".GIT";
+ next unless -d $name;
+ push(@x,$name);
+ }
+ closedir(X);
+ foreach my $name (@x) {
+ scan("$cur/$name");
+ }
+
+ chdir($old) || die;
+}
+
+scan($top);