at Pasi's request add option to change email address.

git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@224 db0b04b0-f4d1-0310-9a6d-de3e77497b0e
This commit is contained in:
Joshua Kwan 2004-02-05 19:38:17 +00:00
parent 09b7c71f72
commit 7f0a010f23
2 changed files with 65 additions and 6 deletions

View File

@ -354,7 +354,7 @@ loadbanner (struct dg_banner *ban)
memset (buf, 0, 80); memset (buf, 0, 80);
if (ban->len == 12) /* menu itself needs 12 lines, 24 - 12 */ if (ban->len == 11) /* menu itself needs 13 lines, 24 - 11 */
break; break;
} }
@ -562,6 +562,58 @@ inprogressmenu ()
/* ************************************************************* */ /* ************************************************************* */
void
change_email ()
{
char buf[81];
clear();
while (true)
{
drawbanner(1,1);
mvprintw(3, 1, "Your current email is: %s", me->email);
mvaddstr(4, 1, "Please enter a new one (max 80 chars; blank line aborts)");
mvaddstr(6, 1, "=> ");
mygetnstr (buf, 80, 1);
if (buf && *buf == '\0')
return;
else if (!strcmp(me->email, buf))
{
clear();
mvaddstr (8, 1, "That's the same one as before. Try again?");
move(1,1);
}
/* rudimentary check for validity */
else if (strchr(buf, '@') < strrchr(buf, '.'))
{
mvprintw (8, 1, "Changing email address to '%s'. Confirm (y/n): ", buf);
if (getch() == 'y')
{
free(me->email);
me->email = strdup(buf);
writefile(0);
return;
}
else
{
mvaddstr(9, 1, "No changes made. Press any key to continue...");
getch();
return;
}
}
else
{
clear();
mvaddstr (8, 1, "That doesn't look like an email address to me.");
move(1,1);
}
}
}
int int
changepw () changepw ()
{ {
@ -616,6 +668,7 @@ changepw ()
error = 1; error = 1;
} }
free(me->password);
me->password = strdup (crypt (buf, buf)); me->password = strdup (crypt (buf, buf));
writefile (0); writefile (0);
@ -725,11 +778,12 @@ drawmenu ()
{ {
mvprintw (banner.len + 2, 1, "Logged in as: %s", me->username); mvprintw (banner.len + 2, 1, "Logged in as: %s", me->username);
mvaddstr (banner.len + 4, 1, "c) Change password"); mvaddstr (banner.len + 4, 1, "c) Change password");
mvaddstr (banner.len + 5, 1, "o) Edit option file"); mvaddstr (banner.len + 5, 1, "e) Change email address");
mvaddstr (banner.len + 6, 1, "w) Watch games in progress"); mvaddstr (banner.len + 6, 1, "o) Edit option file");
mvaddstr (banner.len + 7, 1, "p) Play nethack!"); mvaddstr (banner.len + 7, 1, "w) Watch games in progress");
mvaddstr (banner.len + 8, 1, "q) Quit"); mvaddstr (banner.len + 8, 1, "p) Play nethack!");
mvaddstr (banner.len + 10, 1, "=> "); mvaddstr (banner.len + 9, 1, "q) Quit");
mvaddstr (banner.len + 11, 1, "=> ");
} }
else else
{ {
@ -1454,6 +1508,10 @@ menuloop (void)
if (loggedin) if (loggedin)
changepw (); changepw ();
break; break;
case 'e':
if (loggedin)
change_email();
break;
case 'w': case 'w':
inprogressmenu (); inprogressmenu ();
break; break;

View File

@ -72,6 +72,7 @@ extern void loadbanner(struct dg_banner *ban);
extern void drawbanner(unsigned int start_line, unsigned int howmany); extern void drawbanner(unsigned int start_line, unsigned int howmany);
extern struct dg_game **populate_games(int *l); extern struct dg_game **populate_games(int *l);
extern void inprogressmenu(void); extern void inprogressmenu(void);
extern void change_email(void);
extern int changepw(void); extern int changepw(void);
extern void domailuser(char *username); extern void domailuser(char *username);
extern void drawmenu(void); extern void drawmenu(void);