diff --git a/wrenchboard/src/include/common_tool.h b/wrenchboard/src/include/common_tool.h index 1acc6a91..00a2fdf4 100644 --- a/wrenchboard/src/include/common_tool.h +++ b/wrenchboard/src/include/common_tool.h @@ -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 diff --git a/wrenchboard/src/shared_tool/common_tool.cc b/wrenchboard/src/shared_tool/common_tool.cc index 7396e00f..cbff75dc 100644 --- a/wrenchboard/src/shared_tool/common_tool.cc +++ b/wrenchboard/src/shared_tool/common_tool.cc @@ -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 && i1 && 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;