X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=blobdiff_plain;f=service;h=3e1197d141b6b21dc4b768e4aaf7b05465ea3e85;hb=aa7beea38eb0c7d0150a45c2a49563a9f5724b95;hp=f9992a36044d67125690e3542e32665446e69b8e;hpb=9efccaae353bacad20531a8041155b630fe59462;p=d.git diff --git a/service b/service index f9992a3..3e1197d 100755 --- a/service +++ b/service @@ -41,6 +41,7 @@ our $dom; our $user; our $priv; our $showcomment; +our $genmethod = 'alphanum'; sub nextarg () { die "too few arguments\n" unless @ARGV; @@ -160,16 +161,21 @@ sub local_part_inuse ($) { return !!$row; } +sub gen_local_part_alphanum { + my $s = chr(ord('a')+goodrand(26)); + while (length $s < $randlength) { + my $v = goodrand(36); + $s .= chr($v < 26 + ? ord('a')+($v) + : ord('0')+($v-26)); + } + return $s; +} + sub generate_local_part () { my $s; for (;;) { - $s = chr(ord('a')+goodrand(26)); - while (length $s < $randlength) { - my $v = goodrand(36); - $s .= chr($v < 26 - ? ord('a')+($v) - : ord('0')+($v-26)); - } + { no strict qw(refs); $s = &{"gen_local_part_$genmethod"}; } # print STDERR "$s\n"; last if !local_part_inuse($s); }