aboutsummaryrefslogtreecommitdiffstats
path: root/sbin/kdeDesktopCleanup
blob: 323dcc5e410c2c59c34e69370efaf14322c99bfa (plain)
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
#!/usr/bin/perl
# (c) Mandriva,  Pixel <pixel@mandriva.com>
# Copyright under GPL

@dirs = (qw(/etc/skel /root), glob("/home/*"));
@path = split ":", "/sbin:/usr/sbin:/usr/X11R6/bin:/bin:/usr/bin";

foreach $f (map { grep { /\.kdelnk$/ } eval { all("$_/Desktop") } } @dirs) {
    open F, $f or next;
    L: foreach (<F>) {
	  if (/^Exec=(?:kdesu\s+-c\s+)?"?(\S+)/) {
	      -x "$_/$1" and last L foreach '', @path;
	  } elsif (m|^URL=file:(/.*)|) {	  
	      -e $1 and last;
	  } else { next }
	  print STDERR "removing $f\n";
	  unlink $f;
	  last;
      }
}

sub all {
    my $d = shift;
    local *F;
    opendir F, $d or die "all: can't open dir $d: $!\n";
    my @l = grep { $_ ne '.' && $_ ne '..' } readdir F;
    closedir F;

    map { "$d/$_" } @l;
}