Author: sparky                       Date: Thu Nov 10 13:26:08 2005 GMT
Module: vfmg                          Tag: DEVEL
---- Log message:
- %desktop changed from hash to array
- killed @happs array

---- Files affected:
vfmg:
   vfmg (1.73.2.36 -> 1.73.2.37) 

---- Diffs:

================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.36 vfmg/vfmg:1.73.2.37
--- vfmg/vfmg:1.73.2.36 Mon Nov  7 02:05:17 2005
+++ vfmg/vfmg   Thu Nov 10 14:26:02 2005
@@ -294,8 +294,7 @@
 # what is $DESKTOP_FILE_PATH?
 
 my @apps;      # $apps{name}{category}=[icon,exec]
-my @happs;
-my %desktop;
+my @desktop;
 find(\&wanted, grep -d, map {"$_/applications"} @xdg_data_dirs);
 
 sub wanted { # {{{
@@ -410,13 +409,13 @@
        warn "Unknown Exec parameter variable: $1 in $File::Find::name, 
removing\n"
          if ($tags{Exec} =~ s/(%[^%\s])// and $o_verbose);
        $tags{Exec} =~ s/%%/%/g;
-       push @happs, $File::Find::name;
-
-       $apps[$#happs]{$_} = 1    # two apps can have same names now:)
+       
+       $file =~ s/\.desktop$//;
+       push @desktop, [$file, $utfname, $tags{Icon}, $tags{Exec}];
+       
+       $apps[$#desktop]{$_} = 1    # two apps can have same names now:)
          foreach grep length, split /;+/, $tags{Categories};
 
-       $file =~ s/\.desktop$//;
-       $desktop{$File::Find::name} = [$file, $utfname, $tags{Icon}, 
$tags{Exec}];
 } # }}}
 
 # read XDG menu specification
@@ -447,6 +446,7 @@
 
 my @menu;      # $menu[parent]{name}=[x=menu number,icon]
                # $menu[parent]{name}=[-1=entry,icon,exec]
+my $desknum = $#desktop;
 
 # logic {{{
 sub cand { # {{{
@@ -457,7 +457,7 @@
                if($tag eq 'Category') {
                        my $dir=getname();
                        if($firstrun) {
-                               foreach $name(0..$#happs) {
+                               foreach $name(0..$desknum) {
                                        $iapps[$name]=$apps[$name] if exists 
$apps[$name]{$dir};
                                }
                                $firstrun=0;
@@ -501,7 +501,7 @@
        while ( (my $tag = gettag()) ne '/Or') {
                if($tag eq 'Category') {
                        my $dir=getname();
-                       foreach $name(0..$#happs) {
+                       foreach $name(0..$desknum) {
                                $iapps[$name]=1 if exists $apps[$name]{$dir};
                        }
                        gettag();       # must be </category> else GIGO and we 
don't care
@@ -567,8 +567,8 @@
        while ( (my $tag = gettag()) ne "/Include" ) {
                if($tag eq 'Category') {
                        my $dir=getname();
-                       foreach my $name(0..$#happs) {
-                               $menu[$mno]{$happs[$name]}=-1
+                       foreach my $name(0..$desknum) {
+                               $menu[$mno]{$name}=-1
                                        if exists $apps[$name]{$dir};
                        }
                        gettag();       # must be </category> else GIGO and we 
don't care
@@ -586,7 +586,7 @@
                        foreach my $name(0..$#$tmpapps) {
                                next unless defined $tmpapps->[$name];
                                foreach my $dir (keys %{$apps[$name]}) {
-                                       $menu[$mno]{$happs[$name]}=-1;
+                                       $menu[$mno]{$name}=-1;
                                }
                        }
                        next;
@@ -599,15 +599,15 @@
        }
 } # }}}
 
-sub menu($$);
-sub menu($$) { # {{{
-       my ($parent_name, $parent_number) = @_;
-       # just in case, will fail if more <menu>'s have no <name> tag
-       my $this_name = $parent_name . ":new";
+sub menu($);
+sub menu($) { # {{{
+       my ($parent_number) = @_;
        my $name;
+       $#desktop++;
+       my $dirnum = $#desktop;
        $#menu++;
        my $mno = $#menu;
-       my $dirfile;
+       # $dirnum = $desknum + $mno;
 
        while ( (my $tag = gettag()) ne "/Menu" ) {
                if($tag eq 'Include') {
@@ -615,24 +615,16 @@
                        next;
                }
                if($tag eq 'Menu') {
-                       menu($this_name, $mno);
+                       menu($mno);
                        next;
                }
                if($tag eq 'Name') {
                        $name = getname();
-                       $this_name = $parent_name .":". $name;
-                       $menu[$parent_number]{$this_name} = $mno;
-                       if ( defined $dirfile ) {
-                               # $desktop created, but without name
-                               my $old_name = $parent_name . ":new";
-                               $desktop{$this_name}=$desktop{$old_name};
-                               delete $desktop{$old_name . ":new"};
-                       }
                        gettag();       # must be </name> else GIGO and we 
don't care
                        next;
                }
                if($tag eq 'Directory') {
-                       $dirfile=getname();
+                       my $dirfile = getname();
                        my $lang=0;
                        my $dname="";
                        my $icon="";
@@ -686,7 +678,7 @@
                                        $utfname=$name;
                                }
                                $dirfile =~ s/\..*?$//;
-                               $desktop{$this_name} = [$dirfile, $utfname, 
$icon];
+                               $desktop[$dirnum] = [$dirfile, $utfname, $icon];
                        } else {
                                local $" = "\n- ";
                                warn "No readable $dirfile in:\n- @tmp\n";
@@ -723,14 +715,16 @@
        }
        
        # if there was no <Directory>
-       $desktop{$this_name}=[$name,$name,""] unless defined 
$desktop{$this_name};
+       $desktop[$dirnum]=[$name,$name,""] unless defined $desktop[$dirnum];
+       
+       $menu[$parent_number]{$dirnum} = $mno;
 } # }}}
 
 $#menu++;
 while( (my $tag = gettag()) ne "Menu" ) {
        warn "Omitted tag: $tag\n" if $o_tags;
 }
-menu("", 0);
+menu(0);
 
 warn "Omitted ending: $file\n" if(($file ne "")&& $o_end);
 # parse menu file }}}
@@ -819,9 +813,9 @@
 sub cmpdname {
        use locale;
        return 
-                       encode($opt{encoding}, $desktop{$a}[1] )
+                       encode($opt{encoding}, $desktop[$a][1] )
                cmp
-                       encode($opt{encoding}, $desktop{$b}[1] )
+                       encode($opt{encoding}, $desktop[$b][1] )
                ;
 }
 
@@ -833,7 +827,7 @@
        my $all = ($#tmp + 1) / 2;
        my $num = 0;
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                $num++;
                if($menu[$no]{$entry} < 0) {
                        push @apps, $$d[LOCALENAME];
@@ -865,7 +859,7 @@
        my $apps = "";
        my @edje = qw(edje_cc -id . -fd . icon.edc);
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = $$d[LOCALENAME];
                print $tab.$name."..";
                
@@ -913,7 +907,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                ( my $name = $$d[LOCALENAME] ) =~ s/\"/\\\"/g;
                if($menu[$no]{$entry} < 0) {
                        ( my $exec = $$d[EXEC] ) =~ s/\"/\\\"/g;
@@ -931,7 +925,7 @@
        my ($no, $dir)[EMAIL PROTECTED];
        
        foreach my $entry(keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = encode($opt{encoding},$$d[LOCALENAME]);
                if($menu[$no]{$entry} < 0) {
                        $name=~s/\"/\\\"/g;
@@ -954,7 +948,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                if($menu[$no]{$entry} < 0) {
                        $apps .= "$level"."[exec] ($$d[LOCALENAME]) 
{$$d[EXEC]}\n";
                } else {
@@ -973,7 +967,7 @@
        print $F_OUT qq("$title"\n);
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = encode($opt{encoding},$$d[LOCALENAME]);
                $name=~s/\"/\'/g;
                my $icon="";
@@ -993,7 +987,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $icon = "";
                $icon = scale_icon($$d[ICON]) if $opt{icons};
                if($menu[$no]{$entry}<0) {
@@ -1022,7 +1016,7 @@
        my $this_menu = "";
        $this_menu .= qq(Popup "$file"\n\tTitle "$basename"\n);
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                if($menu[$no]{$entry} < 0) {
                        my $name = $$d[LOCALENAME];
                        $name =~ s/\"/\\\"/g;
@@ -1041,7 +1035,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                ( my $name = $$d[LOCALENAME] ) =~ s/\"/\\\"/g;
                my $icon = "";
                $icon = scale_icon($$d[ICON]) if $opt{icons};
@@ -1064,7 +1058,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = $$d[LOCALENAME];
                $name =~ s/\"/\\\"/g;
                my $icon = "";
@@ -1089,7 +1083,7 @@
        my $this_menu = "";
        $this_menu .= qq(DestroyMenu $file\nAddToMenu $file "$basename" 
Title\n);
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $icon = "";
                $icon = scale_icon($$d[ICON]) if $opt{icons};
                $icon = "\%$icon\%" if length $icon;
@@ -1110,7 +1104,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                ( my $name = $$d[LOCALENAME] ) =~ s/\"/\\\"/g;
                if($menu[$no]{$entry}<0) {
                        $apps .= qq($level"$name"       exec $$d[EXEC]\n);
@@ -1127,7 +1121,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                if($menu[$no]{$entry}<0) {
                        $apps .=
                                qq($level<item label="$$d[LOCALENAME]">\n).
@@ -1148,7 +1142,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                ( my $name = $$d[LOCALENAME] ) =~ s/\"/\\\"/g;
                my $icon = "";
                $icon = scale_icon($$d[ICON]) if $opt{icons};
@@ -1169,7 +1163,7 @@
        my ($no, $coma, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = $$d[LOCALENAME];
                $name =~ s/\"/\\\"/g;
                if($menu[$no]{$entry} < 0) {
@@ -1190,7 +1184,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = $$d[LOCALENAME];
                $name =~ s/\"/\\\"/g;
                if($menu[$no]{$entry} < 0) {
@@ -1217,7 +1211,7 @@
        my ($no, $level)[EMAIL PROTECTED];
        my $apps="";
        foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = ($$d[LOCALENAME] =~ /["&<>]/) ?
                        xmlname($$d[LOCALENAME]) : $$d[LOCALENAME];
                my $icon = "";
@@ -1238,7 +1232,7 @@
 sub xpde { # {{{
        my ($no, $dir)[EMAIL PROTECTED];
        foreach my $entry (keys %{$menu[$no]}) {
-               my $d = $desktop{$entry};
+               my $d = $desktop[$entry];
                my $name = encode($opt{encoding},$$d[LOCALENAME]);
                if($menu[$no]{$entry} < 0) {
                        $name =~ s/\"/\\\"/g;
================================================================

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

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

Reply via email to