aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/sbin/kdeDesktopCleanup
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/sbin/kdeDesktopCleanup')
-rwxr-xr-xtrunk/sbin/kdeDesktopCleanup30
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;
+}