X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fxscreensaver-getimage-file;h=49217d50514e98b5b26f1857ee7885519996e5eb;hb=13dbc569cdc6e29019722c0ef9b932a925efbcad;hp=0766d9ed91acedbe19fb7d9383b9b71f7e6586fd;hpb=585e1a6717d1dd9b90fbb53acaaae82106354d33;p=xscreensaver diff --git a/driver/xscreensaver-getimage-file b/driver/xscreensaver-getimage-file index 0766d9ed..49217d50 100755 --- a/driver/xscreensaver-getimage-file +++ b/driver/xscreensaver-getimage-file @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2001 Jamie Zawinski , all rights reserved. +# Copyright © 2001, 2002 Jamie Zawinski . # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that @@ -30,9 +30,12 @@ use strict; use POSIX; use Fcntl; +# use Fcntl ':mode'; # Perl 5.6ism? +use POSIX ':fcntl_h'; # more portable? + my $progname = $0; $progname =~ s@.*/@@g; -my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; +my $version = q{ $Revision: 1.10 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; my $verbose = 0; @@ -43,11 +46,11 @@ my $verbose = 0; # If you add other programs to this list, please let me know! # my @programs = ( - "xv -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" . + "chbg -once -xscreensaver -max_grow 4 -max_size 100", + "xv -root -quit -viewonly -maxpect +noresetroot -quick24 -rmode 5" . " -rfg black -rbg black", "xli -quiet -fullscreen -onroot -center -border black", "xloadimage -quiet -fullscreen -onroot -center -border black", - "chbg -once -xscreensaver -max_grow 4", # this lame program wasn't built with vroot.h: # "xsri -scale -keep-aspect -center-horizontal -center-vertical", @@ -99,8 +102,21 @@ sub find_all_files { next if ($file eq "core"); $file = "$dir/$file"; + my @st = stat($file); my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, - $atime,$mtime,$ctime,$blksize,$blocks) = stat($file); + $atime,$mtime,$ctime,$blksize,$blocks) = @st; + + if ($#st == -1) { + if ($verbose) { + my $ll = readlink $file; + if (defined ($ll)) { + print STDERR "$progname: dangling symlink: $file -> $ll\n"; + } else { + print STDERR "$progname: unreadable: $file\n"; + } + } + next; + } next if ($seen_inodes{$ino}); # break symlink loops $seen_inodes{$ino} = 1; @@ -129,11 +145,17 @@ sub find_random_file { print STDERR "$progname: recursively reading $dir...\n" if ($verbose > 1); find_all_files ($dir); - print STDERR "$progname: found $#all_files files\n" if ($verbose > 1); + print STDERR "$progname: found " . ($#all_files+1) . " files\n" + if ($verbose > 1); @all_files = sort(@all_files); - my $n = int (rand ($#all_files)); + if ($#all_files < 0) { + print STDERR "$progname: no files in $dir\n"; + exit 1; + } + + my $n = int (rand ($#all_files + 1)); my $file = $all_files[$n]; print STDERR "$progname: chose file $n: $file\n" if ($verbose > 1);