add 'graph' for gitconfig
[lab.git] / misc / findcombinable.pl
index 7b9d629..667d6bd 100755 (executable)
@@ -5,23 +5,21 @@ use warnings;
 use utf8;
 
 use Encode;
-use Unicode::Normalize qw(NFC NFKC);
-binmode STDOUT => 'encoding(utf8)';
-binmode STDERR => 'encoding(utf8)';
+use Unicode::Normalize qw(NFC);
 
 my $top = shift @ARGV || exit;
 if (! -d $top) { exit; }
 
 my $utf8 = find_encoding("utf8");
-$top = $utf8->decode($top);
 
 checkdir($top);
 
 sub match {
     my $str = shift @_;
     
+    $str = $utf8->decode($str);
     if ($str ne NFC($str)) {
-        return 1;
+        return $utf8->encode(NFC($str));
     }
     
     return '';
@@ -30,17 +28,15 @@ sub match {
 sub checkdir {
     my $target = shift @_;
     
-    print STDERR "checking '$target'\n";
+    print STDERR "# checking '$target'\n";
     opendir(my $dir, $target) || return $target;
-    my @entries = sort readdir($dir);
+    my @entries = sort grep { !m/^(\.|\.\.)$/g } readdir($dir);
     closedir($dir);
     
     my @dirs;
     while (my $entry = shift @entries) {
-        next if ($entry =~ /^\.+$/);
-        $entry = $utf8->decode($entry);
-        if (match($entry)) {
-            print "'$target/$entry' can be composed\n";
+        if (my $composed = match($entry)) {
+            print "'$target/$entry' can be composed to '$composed'\n";
             next;
         }
         if (-d "$target/$entry") {