Thread chmod nutzlos? - Ubuntu (13 answers)
Opened by Snicker at 2008-11-20 20:32

topeg
 2008-11-22 03:31
#116521 #116521
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Nach dem ich mich durch die freedesktop Spezifikationen gehangelt habe sollte es so gut funktionieren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/perl
use strict;
use warnings;

# zu nutzende Temporäre Datei
my $file='/tmp/test.txt';
# Typ der Datei
my $file_mime='text/plain';

# Datei erzeugen und mit irgendwas füllen
# echo ist einfach am kürzesten :)
system("echo Das ist ein test > $file")==0 or die "Konnte \"$file\" nicht erstellen ($@)";
# es gibt module,
# die zuverlässig unbenutzte temporäre Dateienamen erzeugen.
# für das Beispiel hier nutze ich sie nicht...

# offizielle XDG Pfade wo Daten zu finden sind
my @xdg_base=grep{$_ ne ''}split(/\:/,$ENV{XDG_DATA_DIRS});
# wir brauchen nur den "applications" Ordner
@xdg_base=map{$_.='applications/'}@xdg_base;

# Herausfinden was der defaulteditor für diesen MimeType ist
# zurück geliefert wird eine *.desktop referenz
my $d_file=`xdg-mime query default $file_mime`;
die $@ if($@);
chomp($d_file);

# Die *.desktop Datei suchen
for my $path (@xdg_base)
{
  if(-e $path.$d_file)
  {
    $d_file=$path.$d_file;
    last;
  }
}
die "$d_file nicht gefunden" if(!-f $d_file);

my $d_exec;
# Datei auslesen
open(my $FH, '<', $d_file) or die "$!";
# uns interessiert nur die "Exec=" Zeile
while(<$FH>){chomp; last if(($d_exec)=$_=~/^Exec=(.+)$/i); print "$_\n"}
close($FH);
die "executable nicht gefunden" unless($d_exec);

# %F sind Pfadlisten
# %f ist ein Pfad
# %U sind URL Listen
# %u ist eine URL
# Alle kommen mit einer einfachen Datei klar
$d_exec=~s/\%F|\%U/$file/gi;

# Das Programm starten
system($d_exec)==0 or die "$@";

# Datei wieder einlesen
my $data=do{ local(@ARGV,$/)=$file; <>; } or die "$!";
# Datei löschen
unlink($file) or warn "$!";
# daten ausgeben/verarbeiten
print "DATA:\n$data\n";


Grundsätzlich würde ich mir einen einfacheren Weg wünschen, der mir das Suchen abnimmt.

View full thread chmod nutzlos? - Ubuntu