X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=server-src%2Famtape.pl;h=490a68eace11054322c7929fc8bc00125887375a;hb=b116e9366c7b2ea2c2eb53b0a13df4090e176235;hp=d733d7016828be287b685e24394d69dfec75d640;hpb=fd48f3e498442f0cbff5f3606c7c403d0566150e;p=debian%2Famanda diff --git a/server-src/amtape.pl b/server-src/amtape.pl index d733d70..490a68e 100644 --- a/server-src/amtape.pl +++ b/server-src/amtape.pl @@ -19,6 +19,7 @@ use lib '@amperldir@'; use strict; +use warnings; use File::Basename; use Getopt::Long; @@ -44,7 +45,8 @@ my %subcommands; sub usage { my ($finished_cb) = @_; - $finished_cb ||= sub { exit(1); }; + + $finished_cb = sub { exit(1); } if (!$finished_cb or !(ref($finished_cb) eq "CODE")); print STDERR < {} [-o configoption]* @@ -80,7 +82,7 @@ subcommand("usage", "usage", "this message", sub { my ($finished_cb, @args) = @_; - usage($finished_cb); + return usage($finished_cb); }); subcommand("reset", "reset", "reset changer to known state", @@ -315,7 +317,7 @@ sub { # 'current' or 'next' .. when we have a changer using such slot names, # this subcommand will need to support a --literal flag - usage($finished_cb) unless (@args == 1); + return usage($finished_cb) unless (@args == 1); my $slot = shift @args; my $chg = load_changer($finished_cb) or return; @@ -392,7 +394,7 @@ sub { my $inter; my $scan; - usage($finished_cb) unless (@args == 1); + return usage($finished_cb) unless (@args == 1); my $label = shift @args; my $steps = define_steps @@ -520,7 +522,7 @@ sub { } }; - usage($finished_cb) unless (@args == 0); + return usage($finished_cb) unless (@args == 0); my $label = shift @args; my $chg = load_changer($finished_cb) or return; @@ -639,10 +641,16 @@ select($previous_fh); sub main { my ($finished_cb) = @_; - my $subcmd = shift @ARGV; - usage($finished_cb) unless defined($subcmd) and exists ($subcommands{$subcmd}); - invoke_subcommand($subcmd, $finished_cb, @ARGV); + my $steps = define_steps + cb_ref => \$finished_cb; + + step start => sub { + my $subcmd = shift @ARGV; + return usage($finished_cb) unless defined($subcmd) and exists ($subcommands{$subcmd}); + invoke_subcommand($subcmd, $finished_cb, @ARGV); + } } + main(\&Amanda::MainLoop::quit); Amanda::MainLoop::run(); Amanda::Util::finish_application();