]> 4ch.mooo.com Git - 16.git/blobdiff - make-lowercase
====REPO AND DEBUG WORK==== i need to make it work with wd again....
[16.git] / make-lowercase
diff --git a/make-lowercase b/make-lowercase
new file mode 100755 (executable)
index 0000000..2cd4e2a
--- /dev/null
@@ -0,0 +1,63 @@
+#!/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);