diff options
Diffstat (limited to 'trunk/sbin/kdeDesktopCleanup')
-rwxr-xr-x | trunk/sbin/kdeDesktopCleanup | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/trunk/sbin/kdeDesktopCleanup b/trunk/sbin/kdeDesktopCleanup new file mode 100755 index 0000000..323dcc5 --- /dev/null +++ b/trunk/sbin/kdeDesktopCleanup @@ -0,0 +1,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; +} |