+=cut
+
+#false laziness w/agent::generate_reg_codes
+sub generate {
+ my( $num, $type, $hashref ) = @_;
+
+ my @codeset = ();
+ push @codeset, ( 'A'..'Z' ) if $type =~ /alpha/;
+ push @codeset, ( '1'..'9' ) if $type =~ /numeric/;
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
+ my $condup = 0; #don't retry forever
+
+ my @cards = ();
+ for ( 1 ... $num ) {
+
+ my $identifier = join('', map($codeset[int(rand $#codeset)], (0..7) ) );