From c9f544da6fba1a81b64cb5261db3332ab7f785eb Mon Sep 17 00:00:00 2001 From: Matthew Vernon Date: Thu, 13 Feb 2014 18:16:39 +0000 Subject: [PATCH] More general argument parsing; neaten code Rather than special-casing -a, loop through any arguments (and complain if there is anything other than -a). Use .= Use unless rather than if (!) ... Signed-off-by: Matthew Vernon --- evade-mail-admin | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/evade-mail-admin b/evade-mail-admin index 6f3fe21..4e5be40 100755 --- a/evade-mail-admin +++ b/evade-mail-admin @@ -409,20 +409,22 @@ sub listq ($) { } sub action_list { - my ($q, $listall); - if ($priv) { $listall = 1; } - if (@ARGV) { - my $v = shift @ARGV; - if ($v ne "-a") { - die "only legal argument to list is -a"; - } else { $listall=1; } + my $listall = 0; + $listall ||= $priv; + while (@ARGV) { + last unless $ARGV[0] =~ m/^-/; + $_ = shift @ARGV; + last if m/^--?$/; + if (m/^-a$/) { + $listall=1; + } else { + die "unknown option to list \`$_'\n"; + } } nomoreargs; - $q="SELECT * FROM addrs WHERE user=?"; - if (!$listall) { - $q = $q. " AND NOT redirect = ''"; - } - $q = $q. " ORDER BY localpart"; + my $q = "SELECT * FROM addrs WHERE user=?"; + $q .= " AND NOT redirect = ''" unless $listall; + $q .= " ORDER BY localpart"; $q = $dbh->prepare($q); $q->execute($user); listq($q); -- 2.30.2