Random alpha-numeric username (6 characters)

This commit is contained in:
tokslaw7
2024-02-05 00:10:05 +00:00
parent 658e93c6ee
commit 29525b28e4
2 changed files with 31 additions and 2 deletions
+1
View File
@@ -11,6 +11,7 @@ void GetOfferCode( unsigned long offer_id, char * number, int sz );
void Confirmation( unsigned long payment_id, char * number, int sz );
void SetFamilyUsername( unsigned long family_id, char * number, int sz );
long WrenchLogRecent(CVars in, CVars &out);
void RandomAlphaNumeric( char * number, int sz, int seed );
#endif
+30 -2
View File
@@ -45,6 +45,32 @@ void GenerateConfirmationSeed( char * number, int sz, int seed )
number[i] = 0;
}
void RandomAlphaNumeric( char * number, int sz, int seed )
{
char chars[] = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n = sizeof(chars);
int i;
/*
time_t t;
time( &t );
pid_t pid = getpid();
srand(t+pid);
*/
srand((unsigned int)time((time_t *)NULL));
for ( i=0; i<10 && i<sz-1; i++ )
{
int k = seed%n;
if (seed>1 && k==i) {
number[i] = chars[n-k];
} else {
number[i] = chars[ (int) ( (n-1.0)*rand()/(RAND_MAX+1.0)) ];
}
}
number[i] = 0;
}
void Confirmation( unsigned long payment_id, char * number, int sz )
@@ -104,14 +130,16 @@ void GetOfferCode( unsigned long offer_id, char * number, int sz )
void SetFamilyUsername( unsigned long family_id, char * number, int sz )
{
SQLINTEGER rows;
char family_username[14];
char family_username[7]; // 6 characters + \0
bzero(family_username, sizeof(family_username));
// Lock table to prevent generation of two identical username
pgsql_exec("BEGIN; LOCK TABLE members_family;" );
int i = 0;
do
{
GenerateConfirmationSeed( family_username, sizeof(family_username), i++ );
//GenerateConfirmationSeed( family_username, sizeof(family_username), i++ );
RandomAlphaNumeric( family_username, sizeof(family_username), i++ );
//st.CloseCursor();
rows = 0;