RE: Questions about FORK.

"Mark Roberts" <[email protected]> Tue, 15 Aug 2006 19:49:13 +0000
Newsgroups gmane.games.devel.mud.rom
Message-ID <[email protected]>
Hey,

There are a number of reasons to have things validated by email address. =
 The best reason is so that all the different characters someone makes ar=
e all under the same umbrella, and someone doesn't just forget they have =
200 alternate characters.

Of course, whether someone is allowed to have those extra characters at a=
ll is purely a matter of rules of your particular MUD.

Mark


>  -------Original Message-------
>  From: Rainer Roomet <[email protected]>
>  Subject: RE: Questions about FORK.
>  Sent: 15 Aug '06 19:31
> =20
>  Hello!
> =20
>  My mail is quite offtopic and it's not including any kind of solution =
but I
>  have one question - why you building that kind of feature?
> =20
>  Hmm.. prolly to avoid multi-account but in the muds there are two diff=
erent
>  type players - cheaters and no cheaters :) And if anyone wanna cheat
>  (multiplay, spying for example) he just creating a new account and he =
would
>  be very foul player, if he start using same email as his/her original
>  account have.
> =20
>  My MUD having account system and not any kind of change needed - if an=
yone
>  multi-accounting (even account without any character) and we catch him=
/her -
>  then all of his characters and accounts will be nuked.
> =20
> =20
>  Rainer Roomet
>  Phone: (+372) 58133281
>  Mail/MSN: [email protected]
> =20
> =20
> =20
> =20
> =20
>  >From: "Valnir" <[email protected]>
>  >To: <[email protected]>
>  >Subject: Questions about FORK.
>  >Date: Tue, 15 Aug 2006 12:35:56 -0400
>  >
>  >Ok.. I'm working on an account system, and want to make sure that no =
two
>  >accounts have the same email address. Don't want users having duplica=
te
>  >accounts. The issue I'm having is that during account creation I'm sc=
anning
>  >all the existing user accounts to see if any have the same address. I=
'm
>  >using fork() so that I don't have the entire mud come to a screeching=
 halt
>  >while it scans, but for some reason, although everything in the fork(=
)
>  >seems to be working fine, it doesn't set the d->connected correctly o=
r
>  >process the nanny function again at the end the way I'm wanting it to=
.
>  >Ideas? Thansk!
>  >
>  >- Valnir
>  >
>  >/* Code snippet */
>  >
>  >void check_dup_email ( DESCRIPTOR_DATA *d, char *email )
>  >{
>  >=C2=A0=C2=A0=C2=A0=C2=A0DIR *user_dir;
>  >=C2=A0=C2=A0=C2=A0=C2=A0struct dirent *users;
>  >=C2=A0=C2=A0=C2=A0=C2=A0USER_DATA *usr;
>  >=C2=A0=C2=A0=C2=A0=C2=A0char name[MIL];
>  >=C2=A0=C2=A0=C2=A0=C2=A0char buf[MSL];
>  >=C2=A0=C2=A0=C2=A0=C2=A0bool duplicate =3D FALSE;
>  >=C2=A0=C2=A0=C2=A0=C2=A0int f;
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0if ( ( f =3D fork() ) =3D=3D (-1) )
>  >=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, "=
\n\r\n\r", 0 );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, "=
An error occured while trying to validate your
>  >email address!\n\r", 0 );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, "=
You will not be able to complete continue
>  >creating your account\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0"until this problem is solved. The staff has been
>  >contacted.\n\r\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0"Please check back soon!\n\r\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0"^e[^fPress Return to Disconnect^e]^0\n\r", 0 );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0d->connected =3D CON_=
USER_DISCONNECT;
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0bug( "fork() failed i=
n check_dup_email.", 0 );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0do_bug( NULL, "fork()=
 failed in check_dup_email." );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return;
>  >=C2=A0=C2=A0=C2=A0=C2=A0}
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0if ( !f )
>  >=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, "=
Please wait while we scan for duplicate
>  >accounts.", 0 );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0process_output( d, FA=
LSE );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( ( user_dir =3D o=
pendir(USER_DIR) ) !=3D NULL )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0while ( ( users =3D readdir(user_dir) ) !=3D NULL )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, ".", 0 );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( !str_cmp( users->d_name, "." )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0|| !str_cmp( users->d_name, ".." ) )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0continue;
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( !strstr( users->d_name, ".usr" ) )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0continue;
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0/* get name from file filename - still need to=
 parse the
>  >'.usr' off the filename */
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( ( usr =3D load_account( NULL, name ) ) !=3D=
 NULL )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( !str_cmp( usr->em=
ail, email ) )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
sprintf( buf, "Attempt to use duplicate email
>  >address detected. "
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0"Same as '%s'.", usr->name );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
log_string( buf );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
duplicate =3D TRUE;
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0}
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0unload_account( NULL, usr);
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0process_output( d, FALSE );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( duplicate )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0break;
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0}
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0else
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0bug( "Could not open USER_DIR!", 0 );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0closedir( user_dir );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0write_to_buffer( d, "=
\n\r\n\r", 0 );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if ( duplicate )
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0write_to_buffer( d, "Duplicate email found! We do not allow
>  >multiple accounts\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0"per player. If you have forgotten your accoun=
t name,
>  >please contact\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0"the staff at http://www.legendofthenobles.com=
/?page=3Demail
>  >to request\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0"your account name.\n\r\n\r"
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0"^e[^fPress Return to Disconnect^e]^0\n\r", 0 =
);
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0process_output( d, TRUE );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0d->connected =3D CON_USER_DISCONNECT;
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0else
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0write_to_buffer( d, "No duplicate found.\n\r", 0 );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0process_output( d, TRUE );
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0d->connected =3D CON_CONFIRM_EMAIL;
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0nanny( d, email );
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0exit(0);
>  >=C2=A0=C2=A0=C2=A0=C2=A0}
>  >
>  >=C2=A0=C2=A0=C2=A0=C2=A0return;
>  >}
>  >
>  >--
>  >ROM mailing list
>  >[email protected]
>  >Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
> =20
>  _________________________________________________________________
>  Express yourself instantly with MSN Messenger! Download today it's FRE=
E!
>  http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> =20
>  --
>  ROM mailing list
>  [email protected]
>  Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom
> =20
--=20
ROM mailing list
[email protected]
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom