diff options
Diffstat (limited to 'find-lang.pl')
-rw-r--r-- | find-lang.pl | 65 |
1 files changed, 47 insertions, 18 deletions
diff --git a/find-lang.pl b/find-lang.pl index 8b4f007..d87bef9 100644 --- a/find-lang.pl +++ b/find-lang.pl @@ -36,46 +36,52 @@ File::Find::find( my $file = substr($File::Find::name, length($buildroot)); -f $File::Find::name or return; debug("next file is %s", $file); - my ($pkg, $lang, $parent); my $langfile = $file; if ($file =~ m:^((.*/share/locale)/([^/@]+)[^/]*).*/([^/]+)\.mo:) { if ($withoutmo) { return; } - ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); - } elsif ($file =~ m:^((.*/gnome/help)/([^/]+)/([^/]+)).*$:) { + my ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); + if (pkg_match($pkg)) { + parent_to_own($langfile, $file, $lang); + } + } elsif ($file =~ m:^((.*/gnome/help)/([^/]+)/([^/]+)).*:) { if (!$withgnome) { return; } - ($pkg, $lang, $parent, $langfile) = ($3, $4, $2, $1); - } elsif ($file =~ m:^((.*/doc/kde)/HTML/([^/@]+)[^/]*)/([^/]+)/.*$:) { + my ($pkg, $lang, $parent, $langfile) = ($3, $4, $2, $1); + if (pkg_match($pkg)) { + parent_to_own($langfile, $file, $lang); + } + } elsif ($file =~ m:^((.*/doc/kde)/HTML/([^/@]+)[^/]*)/([^/]+)/.*:) { if (!$withkde) { return; } - ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); - } elsif ($file =~ m:^((.*/doc)/HTML/([^/@]+)[^/]*)/([^/_]+).*$:) { + my ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); + if (pkg_match($pkg)) { + parent_to_own($langfile, $file, $lang); + } + } elsif ($file =~ m:^((.*/doc)/HTML/([^/@]+)[^/]*)/([^/_]+).*:) { if (!$withhtml) { return; } - ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); - } elsif ($file =~ m:^((/+usr/share/man)/([^/@\.]+)[^/]*)/man[^/]+/([^/.]+)\.\d[^/]*$:) { + my ($pkg, $lang, $parent, $langfile) = ($4, $3, $2, $1); + if (pkg_match($pkg)) { + parent_to_own($langfile, $file, $lang); + } + } elsif ($file =~ m:^((/+usr/share/man)/([^/@\.]+)[^/]*)/man[^/]+/([^/.]+)\.\d[^/]*:) { if (!$withman) { return; } - ($pkg, $lang, $parent, $langfile) = ($4, $3, undef, $1); + my ($pkg, $lang, $parent, $langfile) = ($4, $3, undef, $1); $file =~ s/\.[^\.]+$//; $file .= '.*'; + if (pkg_match($pkg)) { + parent_to_own($langfile, $file, $lang); + } } else { return; } - if (! ((grep { $_ eq $pkg } @searchname) || $allname)) { - return; - } - - parent_to_own($parent, $langfile, $lang) if ($parent); - $finallist{$langfile}{'lang'}{$lang} = 1; - debug("File %s will be %s", $langfile, $lang); - }, $buildroot || '/' ); @@ -100,14 +106,37 @@ close($hlang); exit(0); +sub pkg_match { + my ($pkg) = @_; + if ($allname) { return 1 }; + if (grep { $_ eq $pkg } @searchname) { + return 1; + } + return; +} + sub parent_to_own { my ($parent, $file, $lang) = @_; + debug("parent_to_own: $parent, $file, $lang"); + if ($allname) { + #my @subdir = grep { $_ } split('/', substr($file, length($parent))); + #$parent .= '/' . shift(@subdir); + $finallist{$parent}{'lang'}{$lang} = 1; + debug("Parent %s will be %s", $parent, $lang); + } else { my @subdir = grep { $_ } split('/', substr($file, length($parent))); pop(@subdir); + $finallist{$parent}{dir} = 1; + $finallist{$parent}{'lang'}{$lang} = 1; + debug("Parent %s will be %s", $parent, $lang); while (my $part = shift(@subdir)) { $parent .= "/$part"; $finallist{$parent}{dir} = 1; $finallist{$parent}{'lang'}{$lang} = 1; debug("Parent %s will be %s", $parent, $lang); } + $finallist{$file}{'lang'}{$lang} = 1; + debug("Parent %s will be %s", $file, $lang); + + } } |