24
24
$mailcap = "/etc/mailcap";
25
25
$mailcapdef = "/usr/lib/mime/mailcap";
26
26
$mimedir = "/usr/lib/mime/packages";
27
$appsdir = "/usr/share/applications";
27
28
$orderfile = "/etc/mailcap.order";
71
my($pkg,$priority,$counter);
75
74
# foreach $file (glob "$mimedir/*") {
76
75
foreach $file (map { glob $_.'/*' } split ':',$mimedir) {
112
sub RecurseIntoDirectories
115
foreach my $dir (@_) {
116
next if ($dir =~ m!(^|/)(\.|\#)|(\~)$!);
117
my @entries = glob "$dir/*";
118
push @files, RecurseIntoDirectories(grep { -d $_ } @entries);
119
push @files, grep { -f $_ } @entries;
124
sub ReadDesktopEntries
128
foreach $file (RecurseIntoDirectories(split ':',$appsdir)) {
129
next if ($file =~ m!(^|/)(\.|\#)|(\~)$!);
130
next unless ($file =~ m/\.desktop$/);
131
($pkg) = ($file =~ m|/([^/]*)\.desktop$|);
132
print STDERR "$pkg:\n" if $debug;
134
next if (defined $packages{$pkg});
135
$packages{$pkg} = [];
137
if (open(FILE,"<$file")) {
138
my($terminal, $exec, @types) = ("test=test -n \"\$DISPLAY\"");
141
next if (m/^\s*$|^\s*\#/);
142
if (m/^Terminal=(\w+)/i) {
143
$terminal = "needsterminal" if ($1 eq "true");
145
elsif (m/Exec=(.*)$/i) {
147
$exec =~ s/%[fFuU]/%s/g;
148
$exec .= " %s" if ($exec !~ m/%s/);
150
elsif (m/MimeType=(.*)/i) {
151
push @types, split(/;/, $1);
154
if (!defined($exec) || !scalar(@types)) {
158
foreach $type (@types) {
159
my $entry = "$type; $exec; $terminal";
160
$priority=$defpriority;
161
$entries{$counter} = $entry;
162
push @{$packages{$pkg}},$counter;
163
push @{$priorities{$priority}},$counter;
164
print STDERR "$counter: $entry\n" if $debug;
169
print STDERR "Warning: could not open file '$file' -- $!\n";