int main() { // password checks using regex_match: CString pwd = "abcDEF---"; CString pwd_check = "(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}"; bool b = is_valid_password(pwd, pwd_check); assert(b); pwd = "abcD-"; b = is_valid_password(pwd, pwd_check); assert(!b); // filename extraction with regex_match: CString file = "abc.hpp"; file = get_filename(file); assert(file == "abc.hpp"); file = "c:\\a\\b\\c\\d.h"; file = get_filename(file); assert(file == "d.h"); // postcode extraction with regex_search: CString address = "Joe Bloke, 001 Somestreet, Somewhere,\nPL2 8AB"; CString postcode = extract_postcode(address); assert(postcode = "PL2 8NV"); // html link extraction with regex_iterator: CString text = "<dt><a href=\"syntax_perl.html\">Perl Regular Expressions</a></dt><dt><a href=\"syntax_extended.html\">POSIX-Extended Regular Expressions</a></dt><dt><a href=\"syntax_basic.html\">POSIX-Basic Regular Expressions</a></dt>"; enumerate_links(text); enumerate_links2(text); CString credit_card_number = "1234567887654321"; credit_card_number = human_readable_card_number(credit_card_number); assert(credit_card_number == "1234-5678-8765-4321"); return 0; }
std::string get_next_password(const std::string& password) { std::string tmp = password; do { tmp = increment_password(tmp); } while (!is_valid_password(tmp)); return tmp; }
int PromptForAccountInfo( ACCOUNT *acct, int for_self ) { PASSWD passcfm; char ans[4]; int lineno, userok = 0, passok, cfm = 1; memset(acct, 0, sizeof(*acct)); if (for_self) { prints("Welcome, new user! Enter a userid, 1-%d characters, no spaces.\n", NAMELEN); lineno = 0; } else lineno = 3; while (!userok) { if (getdata(lineno,0,"Userid: ",acct->userid,NAMELEN+1,DOECHO,1) == -1) return -1; switch (CheckUserid(acct->userid)) { case 0: userok = 1; break; case 1: if (!for_self) return -1; /* bail out */ break; case 2: bbperror(S_USEREXISTS, NULL); break; case 3: bbperror(S_BADUSERID, NULL); break; } } if (lineno) lineno++; while (cfm) { do { getdata(lineno,0,"Enter Passwd: ", acct->passwd, PASSLEN+1, NOECHO, 0); passok = is_valid_password(acct->passwd); if (!passok) bbperror(S_BADPASSWD, NULL); } while (!passok); getdata(lineno+1,0,"Confirm Passwd: ", passcfm, PASSLEN+1, NOECHO, 0); if (cfm = strcmp(acct->passwd, passcfm)) prints("\nPasswords did not match! Try again.\n"); } if (lineno) lineno++; getdata(lineno,0,"User Name: ", acct->username, UNAMELEN+1, DOECHO, 0); if (lineno) lineno++; getdata(lineno,0,"Terminal type (default=vt100): ", acct->terminal, TERMLEN+1, DOECHO, 0); getdata(lineno,0,"Charset (default=ascii): ", acct->charset, CSETLEN+1, DOECHO, 0); if (!for_self) { if (lineno) lineno++; getdata(lineno,0,"Real Name: ", acct->realname, RNAMELEN+1,DOECHO,0); if (lineno) lineno++; getdata(lineno,0,"Postal Address: ", acct->address, ADDRLEN+1,DOECHO,0); } if (lineno) lineno++; getdata(lineno,0,"E-mail address, if any: ",acct->email,MAILLEN+1,DOECHO,0); return 0; }
SetPasswd() { ACCOUNT acct; int rc; PASSWD passbuf, passcfm; move(3,0); clrtobot(); if ((rc = bbs_owninfo(&acct)) != S_OK) { move(4,0); prints("\n"); bbperror(rc, "Cannot fetch old password"); return PARTUPDATE; } if (getdata(3,0,"Old password: "******"\nSorry.\n"); return PARTUPDATE; } getdata(4,0,"New Password: "******"\nBad Password\n"); return PARTUPDATE; } getdata(5,0,"Confirm Password: "******"Error entering password.\n"); return PARTUPDATE; } rc = bbs_set_passwd(passbuf); if (rc == S_OK) prints("Password was changed.\n"); else bbperror(rc, "Password change failed"); return PARTUPDATE; }