Author: sparky                       Date: Sat Dec 31 18:27:48 2005 GMT
Module: vfmg                          Tag: DEVEL
---- Log message:
- unified Name and GenericName decoding
- put generic name in ASCII mode

---- Files affected:
vfmg:
   vfmg (1.73.2.47 -> 1.73.2.48) 

---- Diffs:

================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.47 vfmg/vfmg:1.73.2.48
--- vfmg/vfmg:1.73.2.47 Sat Dec 31 19:16:04 2005
+++ vfmg/vfmg   Sat Dec 31 19:27:43 2005
@@ -327,10 +327,8 @@
        return unless -f && /^[^.].*\.desktop$/;
        my $file = $_;
 
-       open F_IN, "$file" or warn "$File::Find::name: $!\n" and return;
+       open F_IN, $file or warn "$File::Find::name: $!\n" and return;
        my %tags = (
-               Name            => '',
-               GenericName     => '',
                Icon            => '',
                Categories      => '',
                Type            => '',
@@ -357,15 +355,9 @@
                }
                return unless $found;
        }
-       $tags{_name} = findfirstlang( grep /^Name/, keys %tags);
-       $tags{name} = $tags{ $tags{_name} };
-       $tags{_genericname} = findfirstlang( grep /^GenericName/, keys %tags);
-       $tags{genericname} = $tags{ $tags{_genericname} };
          
-       $tags{enc}  = exists $tags{Encoding} ? $tags{Encoding} : 'iso-8859-1';
        $tags{term} =
          ($tags{Terminal} && $tags{Terminal} =~ /^(?:1|true)$/i) ? 1 : 0;
-
        return if $tags{term} and not $opt{xterm};
 
        my($bin) = ($tags{Exec} =~ /(\S+)/);    #v---------v
@@ -380,7 +372,7 @@
                }
                return unless $exists;
        }
-       if ($tags{term}) {
+       if ( $tags{term} ) {
                $bin =~ s|.*/||;
                $_ = $opt{xterm};
                s/%1/$bin/;
@@ -402,87 +394,67 @@
                }
                $tags{Icon} = '' unless $exists;
        }
-       my $utfname;
-       if (length $tags{name}) {
-               if ($tags{enc} eq 'Legacy-Mixed') {
+       
+       $tags{Encoding} = exists $tags{Encoding} ? $tags{Encoding} : 
'iso-8859-1';
+       
+       my @to_decode = qw(Name);
+       push @to_decode, "GenericName"
+               if $o_output eq "DR17" or $o_output eq "ASCII";
+       foreach my $tag_name (@to_decode) {
+               my @all = (grep /^$tag_name/, keys %tags);
+               next if ($#all < 0);
+               my $first = findfirstlang(@all);
+               my $enc = $tags{Encoding};
+       
+               if ($enc eq 'Legacy-Mixed') {
                        warn "$File::Find::name: Legacy-Mixed encoding is 
depreciated.\n";
 
                        # this code is untested
                        #    --radek
-                       ($tags{lang}) = ($tags{_name} =~ /^Name\[([^\]]+)/);
-                       if ($tags{lang} !~ /\./) {
+                       my ($lang) = ($first =~ /^$tag_name\[([^\]]+)/);
+                       if ($lang !~ /\./) {
                                warn "$File::Find::name: cannot get encoding 
name for"
-                                 . " `$tags{lang}'. Assuming iso-8859-1\n";
-                               $tags{enc} = "iso-8859-1";
+                                 . " `$lang'. Assuming iso-8859-1\n";
+                               $enc = "iso-8859-1";
                        } else {
                                require POSIX;
                                my $old_locale = setlocale(POSIX::LC_ALL());
                                eval {
-                                       setlocale(POSIX::LC_ALL(), $tags{lang});
+                                       setlocale(POSIX::LC_ALL(), $lang);
                                        require I18N::Langinfo;
-                                       $tags{enc} =
-                                         
I18N::Langinfo::langinfo(I18N::Langinfo::CODESET());
+                                       $enc = 
I18N::Langinfo::langinfo(I18N::Langinfo::CODESET());
                                };
                                warn "something went wrong: $@" if $@;
                                setlocale(POSIX::LC_ALL(), $old_locale);
                        }
                }
-               $utfname = decode($tags{enc}, $tags{name});
-               unless ($utfname) {
-                       warn "$File::Find::name: wrong encoding!\n";
-                       $utfname = $tags{name};
+               $tags{$tag_name} = decode($enc, $tags{$first});
+               unless ($tags{$tag_name}) {
+                       warn "$File::Find::name: $first: wrong encoding!\n";
+                       $tags{$tag_name} = $tags{$first};
                }
        }
-       else {
-               ($utfname = $file) =~ s/\.desktop$//;
-               warn "$File::Find::name: missing Name tag! using $utfname\n";
-       }
-       my $genname = "";
-       if ($o_output eq "DR17" and length $tags{genericname}) {
-               if ($tags{enc} eq 'Legacy-Mixed') {
-                       warn "$File::Find::name: Legacy-Mixed encoding is 
depreciated.\n";
-
-                       # this code is untested
-                       #    --radek
-                       ($tags{lang}) = ($tags{_genericname} =~ 
/^GenericName\[([^\]]+)/);
-                       if ($tags{lang} !~ /\./) {
-                               warn "$File::Find::name: cannot get encoding 
name for"
-                                 . " `$tags{lang}'. Assuming iso-8859-1\n";
-                               $tags{enc} = "iso-8859-1";
-                       } else {
-                               require POSIX;
-                               my $old_locale = setlocale(POSIX::LC_ALL());
-                               eval {
-                                       setlocale(POSIX::LC_ALL(), $tags{lang});
-                                       require I18N::Langinfo;
-                                       $tags{enc} =
-                                         
I18N::Langinfo::langinfo(I18N::Langinfo::CODESET());
-                               };
-                               warn "something went wrong: $@" if $@;
-                               setlocale(POSIX::LC_ALL(), $old_locale);
-                       }
-               }
-               $genname = decode($tags{enc}, $tags{genericname});
-               unless ($genname) {
-                       warn "$File::Find::name: wrong encoding!\n";
-                       $genname = $tags{name};
-               }
-               
+       unless ($tags{Name}) {
+               ( $tags{Name} = $file ) =~ s/\.desktop$//;
+               warn "$File::Find::name: missing Name tag! using $tags{Name}\n";
+       }
+       
+       if ( $tags{Exec} =~ /%\S/ ) {
+               $tags{Exec} =~ s/([^%])%v/$1/g;
+               $tags{Exec} =~ s/([^%])%k/$1$file/g;
+               $tags{Exec} =~ s/([^%])%c/$1$tags{Name}/g;
+               my $iicon = '';
+               $iicon = "--icon $tags{Icon}" if $tags{Icon};
+               $tags{Exec} =~ s/([^%])%i/$1$iicon/g;
+               $tags{Exec} =~ s/%(?i:[fudn])//g;
+               warn "Unknown Exec parameter variable: $1 "
+                       ."in $File::Find::name, removing\n"
+                 if ($tags{Exec} =~ s/(%[^%\s])// and $o_verbose);
+               $tags{Exec} =~ s/%%/%/g;
        }
-
-       $tags{Exec} =~ s/([^%])%v/$1/g;
-       $tags{Exec} =~ s/([^%])%k/$1$file/g;
-       $tags{Exec} =~ s/([^%])%c/$1$utfname/g;
-       my $iicon = '';
-       $iicon = "--icon $tags{Icon}" if $tags{Icon};
-       $tags{Exec} =~ s/([^%])%i/$1$iicon/g;
-       $tags{Exec} =~ s/%(?i:[fudn])//g;
-       warn "Unknown Exec parameter variable: $1 in $File::Find::name, 
removing\n"
-         if ($tags{Exec} =~ s/(%[^%\s])// and $o_verbose);
-       $tags{Exec} =~ s/%%/%/g;
        
        $file =~ s/\.desktop$//;
-       push @desktop, [$file, $utfname, $tags{Icon}, $tags{Exec}, $genname, 
$tags{term}, $bin];
+       push @desktop, [$file, $tags{Name}, $tags{Icon}, $tags{Exec}, 
$tags{GenericName}, $tags{term}, $bin];
        
        $apps[$#desktop]{$_} = 1    # two apps can have same names now:)
          foreach grep length, split /;+/, $tags{Categories};
@@ -908,25 +880,29 @@
                my $d = $desktop[$entry];
                $num++;
                if($menu[$no]{$entry} < 0) {
-                       push @apps, $$d[LOCALENAME];
+                       push @apps, $d;
                } else {
                        my $step = " \033[${cnum}m\033(0\017x\033(B\033[0m ";
                        if ($num >= $all and ( $#apps < 0 )) {
                                $step = "   ";
-                               print "$level 
\033[${cnum}m\033(0mq\033(B\033[${cnext}m\033[1m[$$d[LOCALENAME]]\033[0m\n";
+                               print "$level 
\033[${cnum}m\033(0mq\033(B\033[${cnext}m\033[1m[$$d[LOCALENAME]]";
                        } else {
-                               print "$level 
\033[${cnum}m\033(0tq\033(B\033[${cnext}m\033[1m[$$d[LOCALENAME]]\033[0m\n";
+                               print "$level 
\033[${cnum}m\033(0tq\033(B\033[${cnext}m\033[1m[$$d[LOCALENAME]]";
                        }
+                       print " ($$d[GENNAME])" if $$d[GENNAME];
+                       print "\033[0m\n";
                        ASCII($menu[$no]{$entry},$level.$step, $cnext);
                }
        }
        $num = 0;
-       foreach my $app (@apps) {
+       foreach my $d (@apps) {
                if ($num >= $#apps) {
-                       print "$level 
\033[${cnum}m\033(0\017mq\033(B\033[${cnext}m$app\033[0m\n";
+                       print "$level 
\033[${cnum}m\033(0\017mq\033(B\033[${cnext}m$$d[LOCALENAME]";
                } else {
-                       print "$level 
\033[${cnum}m\033(0\017tq\033(B\033[${cnext}m$app\033[0m\n";
+                       print "$level 
\033[${cnum}m\033(0\017tq\033(B\033[${cnext}m$$d[LOCALENAME]";
                }
+               print " ($$d[GENNAME])" if $$d[GENNAME];
+               print "\033[0m\n";
                $num++;
        }
 } # }}}
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.47&r2=1.73.2.48&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to