chiark / gitweb /
break out gen_local_part_alphanum
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 Sep 2013 22:11:22 +0000 (23:11 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 Sep 2013 22:11:22 +0000 (23:11 +0100)
service

diff --git a/service b/service
index f9992a36044d67125690e3542e32665446e69b8e..3e1197d141b6b21dc4b768e4aaf7b05465ea3e85 100755 (executable)
--- 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);
     }