From 7f0a010f2378e4ae56b2d39d6467b84c672e74ea Mon Sep 17 00:00:00 2001 From: Joshua Kwan Date: Thu, 5 Feb 2004 19:38:17 +0000 Subject: [PATCH] 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 --- dgamelaunch.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++----- dgamelaunch.h | 1 + 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/dgamelaunch.c b/dgamelaunch.c index 98ce648..adb650c 100644 --- a/dgamelaunch.c +++ b/dgamelaunch.c @@ -354,7 +354,7 @@ loadbanner (struct dg_banner *ban) 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; } @@ -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 changepw () { @@ -616,6 +668,7 @@ changepw () error = 1; } + free(me->password); me->password = strdup (crypt (buf, buf)); writefile (0); @@ -725,11 +778,12 @@ drawmenu () { mvprintw (banner.len + 2, 1, "Logged in as: %s", me->username); mvaddstr (banner.len + 4, 1, "c) Change password"); - mvaddstr (banner.len + 5, 1, "o) Edit option file"); - mvaddstr (banner.len + 6, 1, "w) Watch games in progress"); - mvaddstr (banner.len + 7, 1, "p) Play nethack!"); - mvaddstr (banner.len + 8, 1, "q) Quit"); - mvaddstr (banner.len + 10, 1, "=> "); + mvaddstr (banner.len + 5, 1, "e) Change email address"); + mvaddstr (banner.len + 6, 1, "o) Edit option file"); + mvaddstr (banner.len + 7, 1, "w) Watch games in progress"); + mvaddstr (banner.len + 8, 1, "p) Play nethack!"); + mvaddstr (banner.len + 9, 1, "q) Quit"); + mvaddstr (banner.len + 11, 1, "=> "); } else { @@ -1454,6 +1508,10 @@ menuloop (void) if (loggedin) changepw (); break; + case 'e': + if (loggedin) + change_email(); + break; case 'w': inprogressmenu (); break; diff --git a/dgamelaunch.h b/dgamelaunch.h index a7f3541..ec61825 100644 --- a/dgamelaunch.h +++ b/dgamelaunch.h @@ -72,6 +72,7 @@ extern void loadbanner(struct dg_banner *ban); extern void drawbanner(unsigned int start_line, unsigned int howmany); extern struct dg_game **populate_games(int *l); extern void inprogressmenu(void); +extern void change_email(void); extern int changepw(void); extern void domailuser(char *username); extern void drawmenu(void);