use lib '@amperldir@';
use strict;
+use warnings;
use File::Basename;
use Getopt::Long;
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 <<EOF;
-Usage: amtape <conf> <command> {<args>} [-o configoption]*
+Usage: amtape [-o configoption]* <conf> <command> {<args>}
Valid commands are:
EOF
local $Text::Wrap::columns = 80 - 20;
sub {
my ($finished_cb, @args) = @_;
- usage($finished_cb);
+ return usage($finished_cb);
});
subcommand("reset", "reset", "reset changer to known state",
my $line = "slot $sl->{slot}:";
if (!defined($sl->{device_status}) && !defined($sl->{label})) {
$line .= " unknown state";
- } elsif ($sl->{'status'} == Amanda::Changer::SLOT_EMPTY) {
+ } elsif ($sl->{'state'} == Amanda::Changer::SLOT_EMPTY) {
$line .= " empty";
} else {
if (defined $sl->{label}) {
$line .= " label $sl->{label}";
+ } elsif ($sl->{'device_status'} == $DEVICE_STATUS_VOLUME_UNLABELED) {
+ $line .= " blank";
} elsif ($sl->{'device_status'} != $DEVICE_STATUS_SUCCESS) {
$line .= "device error";
} elsif ($sl->{'f_type'} != $Amanda::Header::F_TAPESTART) {
# '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;
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
}
};
- 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;
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();