return $v;
}
-sub nextarg_addr () {
- my $addr = nextarg;
+sub addr2localpart ($) {
+ my ($addr) = @_;
return $addr if $addr !~ m/\@/;
die "address not in correct domain (\@$dom)\n" unless $' eq $dom; #';
return $`; #`;
}
+sub nextarg_addr () {
+ return addr2localpart nextarg;
+}
+
sub nomoreargs () {
die "too many arguments\n" if @ARGV;
}
return $row;
}
-sub generate_local_part () {
+sub local_part_inuse ($) {
+ my ($s) = @_;
our $checkexist_q ||=
$dbh->prepare("SELECT localpart FROM addrs WHERE localpart=?");
+ $checkexist_q->execute($s);
+ my $row = $checkexist_q->fetchrow_arrayref();
+ return !!$row;
+}
+
+sub generate_local_part () {
my $s;
for (;;) {
$s = chr(ord('a')+goodrand(26));
: ord('0')+($v-26));
}
# print STDERR "$s\n";
- $checkexist_q->execute($s);
- my $row = $checkexist_q->fetchrow_arrayref();
- last if !$row;
+ last if !local_part_inuse($s);
}
return $s;
}
$user = ((getpwuid $<)[0]) or die;
}
-$usage2 .= "ADDR may be a local part, implicitly qualified with \@$dom\n"
- if defined $qualdom;
+$usage2 .= defined $dom
+ ? "ADDR may be a local part, implicitly qualified with \@$dom\n"
+ : "ADDR must be a local part (only)\n";
$usage2 .= "REDIRECT is implicitly qualified with \@$qualdom if it has no \@\n"
if defined $qualdom;