X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fvidwhacker;h=bf6186e5ea3afe751b61f23eba5ff110c8c61a97;hp=f243156256e1a7c59bfbe91e22070db219164f59;hb=e4fa2ac140f7bc56571373a7b7eb585fa4500e38;hpb=96a411663168b0ba5432b407a83be55f3df0c802 diff --git a/hacks/vidwhacker b/hacks/vidwhacker index f2431562..bf6186e5 100755 --- a/hacks/vidwhacker +++ b/hacks/vidwhacker @@ -21,7 +21,7 @@ use diagnostics; use strict; my $progname = $0; $progname =~ s@.*/@@g; -my $version = q{ $Revision: 1.22 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; +my $version = q{ $Revision: 1.24 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; my $verbose = 0; my $use_stdin = 0; @@ -139,6 +139,32 @@ sub error { exit 1; } +# Any files on this list will be deleted at exit. +# +my @all_tmpfiles = (); + +sub signal_cleanup { + unlink @all_tmpfiles; +} + +sub init_signals { + + $SIG{HUP} = \&signal_cleanup; + $SIG{INT} = \&signal_cleanup; + $SIG{QUIT} = \&signal_cleanup; + $SIG{ABRT} = \&signal_cleanup; + $SIG{KILL} = \&signal_cleanup; + $SIG{TERM} = \&signal_cleanup; + + # Need this so that if giftopnm dies, we don't die. + $SIG{PIPE} = 'IGNORE'; +} + +END { signal_cleanup(); } + + + + # #### Lifted from driver/xscreensaver-getimage-file # sub pick_displayer { @@ -188,6 +214,7 @@ sub randcolors { } + sub filter_subst { my ($filter, $width, $height, @tmpfiles) = @_; my $colors = randcolors(); @@ -219,8 +246,12 @@ sub frob_ppm { my $tmpdir = $ENV{TMPDIR}; $tmpdir = "/tmp" unless $tmpdir; - my $fn = sprintf("$tmpdir/vw.%04x", $$); - my @files = ( "$fn", "$fn.1", "$fn.2", "$fn.3" ); + my $fn = sprintf ("%s/vidwhacker-0-%08x", $tmpdir, rand(0xFFFFFFFF)); + my $fn1 = sprintf ("%s/vidwhacker-1-%08x", $tmpdir, rand(0xFFFFFFFF)); + my $fn2 = sprintf ("%s/vidwhacker-2-%08x", $tmpdir, rand(0xFFFFFFFF)); + my $fn3 = sprintf ("%s/vidwhacker-3-%08x", $tmpdir, rand(0xFFFFFFFF)); + my @files = ( "$fn", "$fn1", "$fn2", "$fn3" ); + push @all_tmpfiles, @files; my $n = int(rand($#filters+1)); my $filter = $filters[$n]; @@ -389,9 +420,10 @@ sub dispose_ppm { my $tmpdir = $ENV{TMPDIR}; $tmpdir = "/tmp" unless $tmpdir; - my $fn = sprintf("$tmpdir/vw.%04x", $$); + my $fn = sprintf ("%s/vidwhacker-%08x", $tmpdir, rand(0xFFFFFFFF)); local *OUT; unlink $fn; + push @all_tmpfiles, $fn; open (OUT, ">$fn") || error "writing $fn: $!"; print OUT $ppm; close OUT; @@ -463,6 +495,8 @@ sub main { else { usage; } } + init_signals(); + read_config; if (!$use_stdout) {