diff --git a/ctrl/text.dat b/ctrl/text.dat index 7c26cb20573f113c9438f7f0124c7651b49b363f..21bb08f7a99889fe922e30d6bebf64eb56dd38fa 100644 --- a/ctrl/text.dat +++ b/ctrl/text.dat @@ -508,8 +508,8 @@ "UNUSED416" 416 Unused416 "UNUSED417" 417 Unused417 "\7\r\nNo user data defined.\r\n" 418 NoUserData -"\1r\1h\xAE\xAE\xAE \1iDELETED\1n\1r\1h \xAF\xAF\xAF\r\n" 419 Deleted -"\1b\1h\xAE\xAE\xAE \1iINACTIVE\1n\1b\1h \xAF\xAF\xAF\r\n" 420 Inactive +"\1r\1h\xAE\xAE\xAE \1iDELETED\1n\1r\1h \xAF\xAF\xAF\r\n" 419 DeletedUser +"\1b\1h\xAE\xAE\xAE \1iINACTIVE\1n\1b\1h \xAF\xAF\xAF\r\n" 420 InactiveUser "\1n\1cAlias : \1h%-30.30s \1n\1cPass \1h%s\1n\1c: "\ 421 UeditAliasPassword "\1h%s\r\n" "\1n\1cReal Name : \1h%-30.30s \1n\1cPhone number : "\ 422 UeditRealNamePhone @@ -1109,4 +1109,10 @@ "paging node %u for private chat" 922 NodeActivityPagingNode "retrieving file from device #%d" 923 NodeActivityRetrievingFile "performing custom activity" 924 NodeActivityCustom -"never" 925 Never \ No newline at end of file +"never" 925 Never +"Deleting" 926 Deleting +"\1[\1>" 927 DoneDeleting +"Deleted" 926 Deleted +"@Deleted@ %d %s" 928 DeletedNumberItems +"E-Mail" 929 E_Mail +"E-Mails" 930 E_Mails \ No newline at end of file diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp index 86b2da1046048cab1562d0c6e7eeda14cd68f389..88f40c18f270bd3e23fc0e457a5c5d1e46c3c86d 100644 --- a/src/sbbs3/con_out.cpp +++ b/src/sbbs3/con_out.cpp @@ -99,6 +99,7 @@ int sbbs_t::bputs(const char *str, int mode) } if(!(mode&P_NOATCODES) && str[l]=='@') { if(str==mnestr /* Mnemonic string or */ + || (mode&P_ATCODES) /* trusted parameters to formatted string */ || (str>=text[0] /* Straight out of TEXT.DAT */ && str<=text[TOTAL_TEXT-1])) { i=show_atcode(str+l); /* return 0 if not valid @ code */ diff --git a/src/sbbs3/mail.cpp b/src/sbbs3/mail.cpp index dfc3def5606c50a6a21df43936b1def07c775685..170fe9c60a46d0fa4e516c3116f3d11192c1f568 100644 --- a/src/sbbs3/mail.cpp +++ b/src/sbbs3/mail.cpp @@ -58,6 +58,7 @@ int sbbs_t::delmail(uint usernumber, int which) } smb_rewind(smb.sid_fp); for(l=0;l<smb.status.total_msgs;) { + progress(text[Deleting], l, smb.status.total_msgs); memset(&msg, 0, sizeof(msg)); if(smb_fread(&smb,&msg.idx,sizeof(idxrec_t),smb.sid_fp)!=sizeof(idxrec_t)) break; @@ -98,6 +99,7 @@ int sbbs_t::delmail(uint usernumber, int which) idxbuf[l]=msg.idx; l++; } + bputs(text[DoneDeleting]); smb_rewind(smb.sid_fp); for(i=0;i<l;i++) { if(smb_fwrite(&smb,&idxbuf[i],sizeof(idxrec_t),smb.sid_fp) != sizeof(idxrec_t)) { @@ -158,7 +160,7 @@ void sbbs_t::telluser(smbmsg_t* msg) /************************************************************************/ /* Deletes all mail waiting for user number 'usernumber' */ /************************************************************************/ -void sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) +int sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) { int i; int deleted=0; @@ -168,7 +170,7 @@ void sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) { errormsg(WHERE,ERR_OPEN,"MAIL",i); - return; + return 0; } snprintf(smb.file, sizeof smb.file, "%smail",cfg.data_dir); smb.retry_time=cfg.smb_retry_time; @@ -176,23 +178,24 @@ void sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) if((i=smb_open(&smb))!=0) { errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); smb_stack(&smb,SMB_STACK_POP); - return; + return 0; } mail=loadmail(&smb,&msgs,usernumber,which,lm_mode); if(!msgs) { smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); - return; + return 0; } if((i=smb_locksmbhdr(&smb))!=0) { /* Lock the base, so nobody */ smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); free(mail); errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); /* messes with the index */ - return; + return 0; } for(u=0;u<msgs;u++) { + progress(text[Deleting], u, msgs); msg.idx.offset=0; /* search by number */ if((mail[u].attr&MSG_PERMANENT) && !permanent) continue; @@ -208,6 +211,7 @@ void sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) smb_unlockmsghdr(&smb,&msg); } } + bputs(text[DoneDeleting]); if(msgs) free(mail); @@ -216,5 +220,5 @@ void sbbs_t::delallmail(uint usernumber, int which, bool permanent, int lm_mode) smb_unlocksmbhdr(&smb); smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); + return deleted; } - diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp index 48c2d7cb6798e298333ee2ccb5dcb5af104a7b12..d89c361697d72244a42359923c35d54136810e2b 100644 --- a/src/sbbs3/readmail.cpp +++ b/src/sbbs3/readmail.cpp @@ -416,7 +416,7 @@ int sbbs_t::readmail(uint usernumber, int which, int lm_mode) case 'K': /* Kill All Mail */ SAFEPRINTF(str,text[DeleteMailQ],"everyone"); if(!noyes(str)) - delallmail(usernumber, which, /* permanent: */false, lm_mode); + bprintf(P_ATCODES, text[DeletedNumberItems], delallmail(usernumber, which, /* permanent: */false, lm_mode), text[E_Mails]); domsg=false; break; case 'F': /* Forward last piece */ diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index ff073a5a5dc109d93070f631c2cb5bf766f28b55..078a9f1c079e236404a313fa5fbae4c67ff01a69 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -891,7 +891,7 @@ public: /* mail.cpp */ int delmail(uint usernumber,int which); void telluser(smbmsg_t* msg); - void delallmail(uint usernumber, int which, bool permanent=true, int lm_mode = 0); + int delallmail(uint usernumber, int which, bool permanent=true, int lm_mode = 0); /* getmsg.cpp */ int loadmsg(smbmsg_t *msg, uint number); diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h index 6beb9f8c67d2c00dbed1cb60afacd74671c3de25..9baf4e383425bf34d2dae2b88ebc471fd091d991 100644 --- a/src/sbbs3/sbbsdefs.h +++ b/src/sbbs3/sbbsdefs.h @@ -694,6 +694,7 @@ typedef enum { /* Values for xtrn_t.event */ #define P_HIDEMARKS (1<<17) /* Hide the mark-up characters */ #define P_REMOTE (1<<18) /* Only print when online == ON_REMOTE */ #define P_INDENT (1<<19) /* Indent lines to current cursor column */ +#define P_ATCODES (1<<20) /* Trusted @-codes in formatted string */ /* Bits in 'mode' for listfiles */ #define FL_ULTIME (1<<0) /* List files by upload time */ diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h index 82e0d8eee2fcb8d878e850ecdda70e40055cedf3..7f596c22fee464d23b00348a15f59f721852b989 100644 --- a/src/sbbs3/text.h +++ b/src/sbbs3/text.h @@ -435,8 +435,8 @@ enum text { ,Unused416 ,Unused417 ,NoUserData - ,Deleted - ,Inactive + ,DeletedUser + ,InactiveUser ,UeditAliasPassword ,UeditRealNamePhone ,UeditAddressBirthday @@ -942,6 +942,12 @@ enum text { ,NodeActivityRetrievingFile ,NodeActivityCustom ,Never + ,Deleting + ,DoneDeleting + ,Deleted + ,DeletedNumberItems + ,E_Mail + ,E_Mails ,TOTAL_TEXT }; diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c index 465beb7c6154c3a7c0b6371290c1f2ca22c115bb..7cb84a7f02bb6fd20b802824bb9b65973790710a 100644 --- a/src/sbbs3/text_defaults.c +++ b/src/sbbs3/text_defaults.c @@ -695,8 +695,8 @@ const char * const text_defaults[TOTAL_TEXT]={ ,"\x55\x4e\x55\x53\x45\x44\x34\x31\x36" // 416 Unused416 ,"\x55\x4e\x55\x53\x45\x44\x34\x31\x37" // 417 Unused417 ,"\x07\x0d\x0a\x4e\x6f\x20\x75\x73\x65\x72\x20\x64\x61\x74\x61\x20\x64\x65\x66\x69\x6e\x65\x64\x2e\x0d\x0a" // 418 NoUserData - ,"\x01\x72\x01\x68\xae\xae\xae\x20\x01\x69\x44\x45\x4c\x45\x54\x45\x44\x01\x6e\x01\x72\x01\x68\x20\xaf\xaf\xaf\x0d\x0a" // 419 Deleted - ,"\x01\x62\x01\x68\xae\xae\xae\x20\x01\x69\x49\x4e\x41\x43\x54\x49\x56\x45\x01\x6e\x01\x62\x01\x68\x20\xaf\xaf\xaf\x0d\x0a" // 420 Inactive + ,"\x01\x72\x01\x68\xae\xae\xae\x20\x01\x69\x44\x45\x4c\x45\x54\x45\x44\x01\x6e\x01\x72\x01\x68\x20\xaf\xaf\xaf\x0d\x0a" // 419 DeletedUser + ,"\x01\x62\x01\x68\xae\xae\xae\x20\x01\x69\x49\x4e\x41\x43\x54\x49\x56\x45\x01\x6e\x01\x62\x01\x68\x20\xaf\xaf\xaf\x0d\x0a" // 420 InactiveUser ,"\x01\x6e\x01\x63\x41\x6c\x69\x61\x73\x20\x20\x20\x20\x20\x3a\x20\x01\x68\x25\x2d\x33\x30\x2e\x33\x30\x73\x20\x20\x01\x6e\x01\x63" "\x50\x61\x73\x73\x20\x01\x68\x25\x73\x01\x6e\x01\x63\x3a\x20\x01\x68\x25\x73\x0d\x0a" // 421 UeditAliasPassword ,"\x01\x6e\x01\x63\x52\x65\x61\x6c\x20\x4e\x61\x6d\x65\x20\x3a\x20\x01\x68\x25\x2d\x33\x30\x2e\x33\x30\x73\x20\x20\x01\x6e\x01\x63" @@ -1488,4 +1488,10 @@ const char * const text_defaults[TOTAL_TEXT]={ ,"\x72\x65\x74\x72\x69\x65\x76\x69\x6e\x67\x20\x66\x69\x6c\x65\x20\x66\x72\x6f\x6d\x20\x64\x65\x76\x69\x63\x65\x20\x23\x25\x64" // 923 NodeActivityRetrievingFile ,"\x70\x65\x72\x66\x6f\x72\x6d\x69\x6e\x67\x20\x63\x75\x73\x74\x6f\x6d\x20\x61\x63\x74\x69\x76\x69\x74\x79" // 924 NodeActivityCustom ,"\x6e\x65\x76\x65\x72" // 925 Never + ,"\x44\x65\x6c\x65\x74\x69\x6e\x67" // 926 Deleting + ,"\x01\x5b\x01\x3e" // 927 DoneDeleting + ,"\x44\x65\x6c\x65\x74\x65\x64" // 926 Deleted + ,"\x40\x44\x65\x6c\x65\x74\x65\x64\x40\x20\x25\x64\x20\x25\x73" // 928 DeletedNumberItems + ,"\x45\x2d\x4d\x61\x69\x6c" // 929 E_Mail + ,"\x45\x2d\x4d\x61\x69\x6c\x73" // 930 E_Mails }; diff --git a/src/sbbs3/text_id.c b/src/sbbs3/text_id.c index 7b195f4f8775b6de5985b1f84f3883baffcd0e69..e397e235041ecfdb18bad974e7bcc516f4974d1c 100644 --- a/src/sbbs3/text_id.c +++ b/src/sbbs3/text_id.c @@ -419,8 +419,8 @@ const char* const text_id[]={ ,"Unused416" ,"Unused417" ,"NoUserData" - ,"Deleted" - ,"Inactive" + ,"DeletedUser" + ,"InactiveUser" ,"UeditAliasPassword" ,"UeditRealNamePhone" ,"UeditAddressBirthday" @@ -926,4 +926,10 @@ const char* const text_id[]={ ,"NodeActivityRetrievingFile" ,"NodeActivityCustom" ,"Never" + ,"Deleting" + ,"DoneDeleting" + ,"Deleted" + ,"DeletedNumberItems" + ,"E_Mail" + ,"E_Mails" }; diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp index 9bc3bc0d731273853c854fe23945c891d2ff8fef..726b87f9acdbe3e7b9ffac9f9d934f1328e70237 100644 --- a/src/sbbs3/useredit.cpp +++ b/src/sbbs3/useredit.cpp @@ -149,9 +149,9 @@ void sbbs_t::useredit(int usernumber) if(lncntr>=rows-2) lncntr=0; if(user.misc&DELETED) - center(text[Deleted]); + center(text[DeletedUser]); else if(user.misc&INACTIVE) - center(text[Inactive]); + center(text[InactiveUser]); else CRLF; l=lastuser(&cfg); @@ -1168,7 +1168,7 @@ void sbbs_t::purgeuser(int usernumber) getuserdat(&cfg,&user); SAFEPRINTF2(str,"Purged %s #%u",user.alias,usernumber); logentry("!*",str); - delallmail(usernumber, MAIL_ANY); + bprintf(P_ATCODES, text[DeletedNumberItems], delallmail(usernumber, MAIL_ANY), text[E_Mails]); putusername(&cfg,usernumber,nulstr); putusermisc(usernumber, user.misc | DELETED); }