[X2Go-Commits] [x2goserver] 01/04: x2goserver/bin/x2gogetapps: respect NoDisplay and Hidden values, don't parse the full desktop file if there are non-Desktop Entries groups.
git-admin at x2go.org
git-admin at x2go.org
Mon Mar 16 06:30:23 CET 2015
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch release/4.0.1.x
in repository x2goserver.
commit 86d9b3c13f7a0055f6c06023832e8aa5469ecd8d
Author: Mihai Moldovan <ionic at ionic.de>
Date: Wed Mar 11 21:00:36 2015 +0100
x2goserver/bin/x2gogetapps: respect NoDisplay and Hidden values, don't parse the full desktop file if there are non-Desktop Entries groups.
Based on a patch submitted by Jason Alavaliant.
Fixes: #812.
Conflicts:
debian/changelog
---
debian/changelog | 6 ++++
x2goserver/bin/x2gogetapps | 77 ++++++++++++++++++++++++++++----------------
2 files changed, 56 insertions(+), 27 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index af70337..2508b02 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,12 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low
- TERMINAL Session: Add support for qterminal
(Lightweight terminal emulator written in Qt)
+ [ Mihai Moldovan ]
+ * New upstream version (4.0.1.20):
+ - x2goserver/bin/x2gogetapps: respect NoDisplay and Hidden values, don't
+ parse the full desktop file if there are non-Desktop Entries groups.
+ Based on a patch submitted by Jason Alavaliant. Fixes: #812.
+
-- X2Go Release Manager <git-admin at x2go.org> Tue, 24 Feb 2015 22:11:49 +0100
x2goserver (4.0.1.19-0x2go2) UNRELEASED; urgency=low
diff --git a/x2goserver/bin/x2gogetapps b/x2goserver/bin/x2gogetapps
index 09ba50d..c374d6e 100755
--- a/x2goserver/bin/x2gogetapps
+++ b/x2goserver/bin/x2gogetapps
@@ -91,24 +91,27 @@ sub findicon_ext
return "";
}
-sub printicon
+sub geticon
{
my $file=shift;
+ my @ret;
if (open(I,"<$file"))
{
my $buf;
- print "<icon>\n";
+ push(@ret, "<icon>");
while (read(I, $buf, 60*57))
{
- print encode_base64($buf);
+ push(@ret, encode_base64($buf));
}
- print "</icon>\n";
+ push(@ret, "</icon>\n");
close(I);
}
else
{
- syslog ('info', "x2gogetapps:printicon - can't open file $file: $!");
+ syslog ('info', "x2gogetapps:geticon - can't open file $file: $!");
}
+
+ return @ret;
}
sub proc_desktop_file
@@ -116,53 +119,73 @@ sub proc_desktop_file
my $file=shift;
if (open(F,"<$file"))
{
- print("<desktop>\n");
+ push(@output, "<desktop>");
+ my @output;
+ my $nodisplay = 0;
my $is_desktop_entry = 0;
- while(!eof(F))
+ READ_FILE: while(!eof(F))
{
my $line=<F>;
+ # Hopefully strip most whitespace and newlines surrounding $line.
+ chomp($line);
+ # Desktop Entry block search.
if ( $line=~m/^\[Desktop Entry\] */ )
{
$is_desktop_entry = 1;
next;
}
+ # Consume random data.
if ( ! $is_desktop_entry )
{
next;
}
+ # Stop reading when seeing a non-Desktop Entry block.
if ( $line=~m/^\[.*\] */ )
{
$is_desktop_entry = 0;
- next;
+ last READ_FILE;
+ }
+ # Breaking out when finding NoDisplay=true or Hidden=true.
+ # Do not use \s here as newlines are not allowed within key-value sets.
+ # Generally, we're reading lines anyway and a newline can't possibly be part of
+ # a line, as lines are split on newlines, but play it safe still.
+ if ( $line=~m/^NoDisplay[ \t]*?=[ \t]*?true/ || $line=~m/^Hidden[ \t]*?=[ \t]*?true/ )
+ {
+ $nodisplay = 1;
+ last READ_FILE;
}
- if( $line=~m/^Categories/i || $line=~m/^Name/i || $line=~m/^Terminal/i || $line=~m/^Comment/i || $line=~m/^Exec/i)
+ if ( $line=~m/^Categories/i || $line=~m/^Name/i || $line=~m/^Terminal/i || $line=~m/^Comment/i || $line=~m/^Exec/i)
{
- print $line;
+ push(@output, $line);
}
- if( $line =~ m/^Icon/ )
+ if ( $line =~ m/^Icon/ )
{
my $icon=$line;
- $icon =~ s/Icon=//;
- chop($icon);
- #$line is absolute path
- if($icon =~ m/\//)
- {
- $icon=$icon;
- }
- #$line have format ext.
- elsif ($line =~ m/\./)
+ $icon =~ s/Icon[ \t]*?=//;
+ #$line is not absolute path
+ if(!($icon =~ m/\//))
{
- $icon=findicon_ext($icon);
+ #$line have format ext.
+ if ($line =~ m/\./)
+ {
+ $icon=findicon_ext($icon);
+ }
+ else
+ {
+ $icon=findicon($icon);
+ }
}
- else
- {
- $icon=findicon($icon);
- }
- printicon($icon);
+ @output = (@output, geticon($icon));
}
}
close (F);
- print("</desktop>\n");
+ push(@output, "</desktop>\n");
+
+ # Print out parsed entry if it's not hidden or marked NoDisplay.
+ if (! $nodisplay)
+ {
+ print join("\n", @output);
+ }
}
else
{
--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
More information about the x2go-commits
mailing list