projects
/
lab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* fix: previous procedure skips files such as '...'
[lab.git]
/
misc
/
findcombinable.pl
diff --git
a/misc/findcombinable.pl
b/misc/findcombinable.pl
index
464ecb8
..
8d515d9
100755
(executable)
--- a/
misc/findcombinable.pl
+++ b/
misc/findcombinable.pl
@@
-3,24
+3,26
@@
use strict;
use warnings;
use utf8;
use strict;
use warnings;
use utf8;
-use encoding 'utf-8';
+use Encode;
use Unicode::Normalize qw(NFC NFKC);
use Unicode::Normalize qw(NFC NFKC);
+binmode STDOUT => 'encoding(utf8)';
+binmode STDERR => 'encoding(utf8)';
my $top = shift @ARGV || exit;
if (! -d $top) { exit; }
my $top = shift @ARGV || exit;
if (! -d $top) { exit; }
+my $utf8 = find_encoding("utf8");
+$top = $utf8->decode($top);
+
checkdir($top);
checkdir($top);
-sub combinable {
+sub match {
my $str = shift @_;
if ($str ne NFC($str)) {
return 1;
}
my $str = shift @_;
if ($str ne NFC($str)) {
return 1;
}
- if ($str ne NFKC($str)) {
- return 1;
- }
return '';
}
return '';
}
@@
-30,13
+32,13
@@
sub checkdir {
print STDERR "checking '$target'\n";
opendir(my $dir, $target) || return $target;
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) {
closedir($dir);
my @dirs;
while (my $entry = shift @entries) {
- next if ($entry =~ /^\.+$/);
- if (combinable($entry)) {
+ $entry = $utf8->decode($entry);
+ if (match($entry)) {
print "'$target/$entry' can be composed\n";
next;
}
print "'$target/$entry' can be composed\n";
next;
}