diff options
| author | Daniel Friesel <derf@derf.homelinux.org> | 2010-05-22 15:44:14 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@derf.homelinux.org> | 2010-05-22 15:44:14 +0200 | 
| commit | c63f9d9eed3c3571c84871d556ac464eabaea2fe (patch) | |
| tree | ecad325d8c1d1cb952cc438376657d1959f07a6a | |
| parent | 9117a7a55b5e5aa2f9132d69f7d33ad3e7069349 (diff) | |
comirror: Give a more usable exit status
| -rwxr-xr-x | bin/comirror | 25 | 
1 files changed, 15 insertions, 10 deletions
diff --git a/bin/comirror b/bin/comirror index 4ab8251..8a9528b 100755 --- a/bin/comirror +++ b/bin/comirror @@ -11,6 +11,7 @@ my $mech = WWW::Mechanize->new(  my $uri      = shift || first_line('last_uri');  my $image_re = first_line('image_re'); +my $exit     = 1;  if (not defined $uri or not defined $image_re) {  	die("last_uri or image_re not found / specified\n"); @@ -30,7 +31,8 @@ sub find_next_link {  		}  	}  	save_lasturi(); -	die("Cannot find next link\n"); +	say "Cannot find next link. We might have reached the end of the comic."; +	exit $exit;  }  sub find_image { @@ -52,10 +54,11 @@ sub get_image {  		say "img: $filename (skipped)";  	}  	else { +		$exit = 0;  		say "img: $filename"; -		open(my $fh, '>', $filename) or die("Cannot open $filename: $!\n"); +		open(my $fh, '>', $filename) or die("Cannot open $filename: $!");  		print {$fh} $tmpmech->content(); -		close($fh) or die("Cannot close $filename: $!\n"); +		close($fh) or die("Cannot close $filename: $!");  	}  	return; @@ -83,15 +86,15 @@ sub save_lasturi {  	# image. Work around this.  	$mech->back(); -	open(my $fh, '>', 'last_uri') or die("Cannot open last_uri: $!\n"); +	open(my $fh, '>', 'last_uri') or die("Cannot open last_uri: $!");  	print {$fh} $mech->uri->as_string; -	close($fh) or die("Cannot close last_uri: $!\n"); +	close($fh) or die("Cannot close last_uri: $!");  	return;  }  local $SIG{INT} = sub {  	save_lasturi(); -	exit(0); +	exit $exit;  };  while ( @@ -108,7 +111,9 @@ while (  	if ($uri eq $mech->uri->as_string) {  		save_lasturi(); -		die("Looks like we're in a loop, bailing out\n"); +		say "The 'next' link lead us to a loop."; +		say "This is probably because we reached the end of the comic."; +		exit $exit;  	}  	print "\n"; @@ -140,9 +145,9 @@ B<comirror> takes no options.  =head1 EXIT STATUS -Zero if interrupted by the user (eg SIGINT), non-zero if terminating after -reaching the end of the comic (loop or no "next" link).  So, a non-zero exit -status is normal.  However, this behaviour may be changed in the near future. +Zero if at least one new comic image was downloaded, one if either no images +were found or all found images already existed in the current directory.  Any +other non-zero means indicates grave errors.  =head1 CONFIGURATION  | 
