diff --git a/perl/imap/IMAP/Shell.pm b/perl/imap/IMAP/Shell.pm index e2cd82133a..87f61ac113 100644 --- a/perl/imap/IMAP/Shell.pm +++ b/perl/imap/IMAP/Shell.pm @@ -483,7 +483,7 @@ sub shell { -mechanism => $mech, -password => $pw, -tlskey => $tlskey, -notls => $notls, -cafile => $cacert, -capath => $capath) - or die "cyradm: cannot authenticate to server with $mech as $auth\n"; + or die "cyradm: cannot authenticate to server" . (defined($mech)?" with $mech":"") . " as $auth\n"; } my $fstk = [*STDIN, *STDOUT, *STDERR]; if ($dorc && $systemrc ne '' && -f $systemrc) { diff --git a/perl/sieve/scripts/sieveshell.pl b/perl/sieve/scripts/sieveshell.pl index 2b1791e68c..e8638d96ff 100644 --- a/perl/sieve/scripts/sieveshell.pl +++ b/perl/sieve/scripts/sieveshell.pl @@ -62,7 +62,9 @@ my $username = $ENV{USER}; my $authname = $ENV{USER}; my $realm = ""; +my $password; my $ex = ""; +my $exfile = ""; my $help = 0; my $man = 0; my $ret; @@ -70,7 +72,9 @@ GetOptions("a|authname:s" => \$authname, "u|username:s" => \$username, "r|realm:s" => \$realm, + "p|password:s" => \$password, "e|exec:s" => \$ex, + "f|execfile:s" => \$exfile, "help|?" => \$help, man => \$man) or pod2usage(2); pod2usage(1) if $help; @@ -85,7 +89,11 @@ my $filehandle; my $interactive; -if (! $ex eq "") { +if (! $exfile eq "") { + open(FILEH,"<$exfile") || die "unable to open file: $?"; + $filehandle = *FILEH; + $interactive = 0; +} elsif (! $ex eq "") { $filehandle = tempfile(); if (!$filehandle) { die "unable to open tmp file: $?"; } @@ -98,8 +106,6 @@ $interactive = 1; } - - sub list_cb { my($name, $isactive) = @_ ; @@ -123,6 +129,8 @@ sub prompt { return $authname; } elsif (($type eq "realm") && (defined $realm)) { return $realm; + } elsif (($type eq "password") && (defined $password)) { + return $password; } my $ostty; @@ -173,6 +181,8 @@ sub show_help { my $term = Term::ReadLine->new("sieveshell"); +my $exitcode = 0; + $term->ornaments(0); while(defined($_ = ($interactive ? $term->readline('> ') : <$filehandle>))){ @@ -199,6 +209,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "upload failed: $errstr\n"; + $exitcode = 1; } } elsif (($words[0] eq "list") || ($words[0] eq "l") || @@ -208,6 +219,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "list failed: $errstr\n"; + $exitcode = 1; } } elsif (($words[0] eq "activate") || ($words[0] eq "a")) { @@ -220,6 +232,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "activate failed: $errstr\n"; + $exitcode = 1; } } elsif (($words[0] eq "deactivate") || ($words[0] eq "da")) { @@ -232,6 +245,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "deactivate failed: $errstr\n"; + $exitcode = 1; } } elsif (($words[0] eq "delete") || ($words[0] eq "d")) { @@ -244,6 +258,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "delete failed: $errstr\n"; + $exitcode = 1; } } elsif (($words[0] eq "get") || ($words[0] eq "g")) { @@ -257,6 +272,7 @@ sub show_help { my $errstr = sieve_get_error($obj); $errstr = "unknown error" if(!defined($errstr)); print "get failed: $errstr\n"; + $exitcode = 1; } else { if ($words[2]) { open (OUTPUT,">$words[2]") || die "Unable to open $words[2]"; @@ -268,14 +284,16 @@ sub show_help { } } elsif (($words[0] eq "quit") || ($words[0] eq "q")) { sieve_logout($obj); - exit 0; } elsif (($words[0] eq "help") || ($words[0] eq "?")) { show_help(); } else { print "Invalid command: $words[0]\n"; + $exitcode = 1; } } +exit $exitcode + __END__ =for pod2rst .. DO NOT EDIT sieveshell.rst: Autogenerated by tools/perl2rst from perl/sieve/scripts/sieveshell.pl @@ -291,7 +309,8 @@ =head1 NAME =head1 SYNOPSIS sieveshell [B<--user>=I] [B<--authname>=I] -[B<--realm>=I] [B<--exec>=I