From 27bac7a9c7f06cd78ac48aa04c7260f4543c9473 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Wed, 11 Jul 2012 22:25:46 +0000 Subject: [PATCH] Add a warning whenever a moderator is reading a message past the first unmoderated message in a sub. --- src/sbbs3/pack_qwk.cpp | 2 +- src/sbbs3/pack_rep.cpp | 2 +- src/sbbs3/readmsgs.cpp | 29 +++++++++++++++++++---------- src/sbbs3/sbbs.h | 2 +- src/sbbs3/text.h | 1 + src/sbbs3/text_defaults.c | 8 +++++--- 6 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/sbbs3/pack_qwk.cpp b/src/sbbs3/pack_qwk.cpp index f45b931c58..4aa377136a 100644 --- a/src/sbbs3/pack_qwk.cpp +++ b/src/sbbs3/pack_qwk.cpp @@ -449,7 +449,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) k|=LP_BYSELF; if(useron.rest&FLAG('Q') || !(subscan[usrsub[i][j]].cfg&SUB_CFG_YSCAN)) k|=LP_OTHERS; - post=loadposts(&posts,usrsub[i][j],subscan[usrsub[i][j]].ptr,k); + post=loadposts(&posts,usrsub[i][j],subscan[usrsub[i][j]].ptr,k,NULL); bprintf(text[NScanStatusFmt] ,cfg.grp[cfg.sub[usrsub[i][j]]->grp]->sname diff --git a/src/sbbs3/pack_rep.cpp b/src/sbbs3/pack_rep.cpp index 8d16182885..677a825f5b 100644 --- a/src/sbbs3/pack_rep.cpp +++ b/src/sbbs3/pack_rep.cpp @@ -177,7 +177,7 @@ bool sbbs_t::pack_rep(uint hubnum) continue; } - post=loadposts(&posts,j,subscan[j].ptr,LP_BYSELF|LP_OTHERS|LP_PRIVATE|LP_REP); + post=loadposts(&posts,j,subscan[j].ptr,LP_BYSELF|LP_OTHERS|LP_PRIVATE|LP_REP,NULL); eprintf(LOG_INFO,remove_ctrl_a(text[NScanStatusFmt],tmp) ,cfg.grp[cfg.sub[j]->grp]->sname ,cfg.sub[j]->lname,posts,msgs); diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp index 1024db5e81..583581dffd 100644 --- a/src/sbbs3/readmsgs.cpp +++ b/src/sbbs3/readmsgs.cpp @@ -175,7 +175,7 @@ void sbbs_t::msghdr(smbmsg_t* msg) /****************************************************************************/ /****************************************************************************/ -post_t * sbbs_t::loadposts(int32_t *posts, uint subnum, ulong ptr, long mode) +post_t * sbbs_t::loadposts(int32_t *posts, uint subnum, ulong ptr, long mode, ulong *unvalidated_num) { char name[128]; ushort aliascrc,namecrc,sysop; @@ -222,6 +222,10 @@ post_t * sbbs_t::loadposts(int32_t *posts, uint subnum, ulong ptr, long mode) errormsg(WHERE,ERR_ALLOC,smb.file,sizeof(post_t *)*cfg.sub[subnum]->maxmsgs); return(NULL); } + + if(unvalidated_num) + *unvalidated_num=ULONG_MAX; + while(!feof(smb.sid_fp)) { skip=0; if(smb_fread(&smb, &idx,sizeof(idx),smb.sid_fp) != sizeof(idx)) @@ -249,9 +253,12 @@ post_t * sbbs_t::loadposts(int32_t *posts, uint subnum, ulong ptr, long mode) continue; } - if(idx.attr&MSG_MODERATED && !(idx.attr&MSG_VALIDATED) - && (mode&LP_REP || !sub_op(subnum))) - break; + if(idx.attr&MSG_MODERATED && !(idx.attr&MSG_VALIDATED)) { + if(mode&LP_REP || !sub_op(subnum)) + break; + if(unvalidated_num && *unvalidated_num > idx.number) + *unvalidated_num=idx.number; + } if(idx.attr&MSG_PRIVATE && !(mode&LP_PRIVATE) && !sub_op(subnum) && !(useron.rest&FLAG('Q'))) { @@ -356,7 +363,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) uint usub,ugrp,reads=0; uint lp=0; long org_mode=mode; - ulong msgs,l; + ulong msgs,l,unvalidated; uint32_t last; post_t *post; smbmsg_t msg; @@ -406,7 +413,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) lp=LP_BYSELF|LP_OTHERS; if(mode&SCAN_TOYOU) lp|=LP_UNREAD; - post=loadposts(&smb.msgs,subnum,0,lp); + post=loadposts(&smb.msgs,subnum,0,lp,&unvalidated); if(mode&SCAN_NEW) { /* Scanning for new messages */ for(smb.curmsg=0;smb.curmsg<smb.msgs;smb.curmsg++) if(subscan[subnum].ptr<post[smb.curmsg].number) @@ -492,7 +499,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) break; if(post==NULL) /* Been unloaded */ - post=loadposts(&smb.msgs,subnum,0,lp); /* So re-load */ + post=loadposts(&smb.msgs,subnum,0,lp,&unvalidated); /* So re-load */ if(!smb.msgs) { done=1; @@ -532,7 +539,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) if(post) { free((void *)post); } - post=loadposts(&smb.msgs,subnum,0,lp); /* So re-load */ + post=loadposts(&smb.msgs,subnum,0,lp,&unvalidated); /* So re-load */ if(!smb.msgs) break; for(smb.curmsg=0;smb.curmsg<smb.msgs;smb.curmsg++) @@ -554,7 +561,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) } if(post) free(post); - post=loadposts(&smb.msgs,subnum,0,lp); + post=loadposts(&smb.msgs,subnum,0,lp,&unvalidated); if(!smb.msgs) break; if(smb.curmsg>(smb.msgs-1)) @@ -681,6 +688,8 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) if(useron.misc&WIP) menu("msgscan"); ASYNC; + if(unvalidated < smb.curmsg+1) + bprintf(text[UnvalidatedWarning],unvalidated); bprintf(text[ReadingSub],ugrp,cfg.grp[cfg.sub[subnum]->grp]->sname ,usub,cfg.sub[subnum]->sname,smb.curmsg+1,smb.msgs); sprintf(str,"ABCDEFILMPQRTY?<>[]{}-+.,"); @@ -1187,7 +1196,7 @@ long sbbs_t::listsub(uint subnum, long mode, long start, const char* search) smb_stack(&smb,SMB_STACK_POP); return(0); } - post=loadposts(&posts,subnum,0,LP_BYSELF|LP_OTHERS); + post=loadposts(&posts,subnum,0,LP_BYSELF|LP_OTHERS,NULL); bprintf(text[SearchSubFmt] ,cfg.grp[cfg.sub[subnum]->grp]->sname,cfg.sub[subnum]->lname,posts /* total? */); if(mode&SCAN_FIND) diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 63799aea93..d9d5d8ca06 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -534,7 +534,7 @@ public: void delallmail(uint usernumber, int which, bool permanent=true); /* getmsg.cpp */ - post_t* loadposts(int32_t *posts, uint subnum, ulong ptr, long mode); + post_t* loadposts(int32_t *posts, uint subnum, ulong ptr, long mode, ulong *unvalidated_num); /* readmail.cpp */ void readmail(uint usernumber, int sent); diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h index ebe84a54f5..447d6ecb7e 100644 --- a/src/sbbs3/text.h +++ b/src/sbbs3/text.h @@ -806,6 +806,7 @@ enum { ,CantPostMsg ,OperatorPrompt ,AddSubToNewScanQ + ,UnvalidatedWarning ,TOTAL_TEXT }; diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c index 70cd5bd096..cd47db35d2 100644 --- a/src/sbbs3/text_defaults.c +++ b/src/sbbs3/text_defaults.c @@ -48,9 +48,8 @@ const char * const text_defaults[TOTAL_TEXT]={ "\x67\x20\x62\x79\x74\x65\x73\x20\x6d\x61\x78\x29\x2e\x20\x01\x68\x43\x74\x72\x6c\x2d\x5a\x01\x6e\x01\x67\x20\x74\x6f\x20\x73\x61" "\x76\x65\x2c\x20\x01\x68\x43\x74\x72\x6c\x2d\x43\x01\x6e\x01\x67\x20\x74\x6f\x20\x61\x62\x6f\x72\x74\x2e\x01\x6e\x0d\x0a\x0d\x0a" "" - ,"\x4e\x6f\x20\x6d\x6f\x72\x65\x20\x6c\x69\x6e\x65\x73\x2e\x20\x54\x79\x70\x65\x20\x2f\x3f\x20\x66\x6f\x72\x20\x6d\x65\x6e\x75\x2e" - "\x0d\x0a" - ,"\x4f\x6e\x6c\x79\x20\x25\x64\x20\x6c\x69\x6e\x65\x73\x20\x6c\x65\x66\x74\x2e\x0d\x0a" + ,"\x4c\x69\x6e\x65\x20\x6c\x69\x6d\x69\x74\x20\x28\x25\x75\x29\x20\x72\x65\x61\x63\x68\x65\x64\x2e\x0d\x0a" + ,"\x4f\x6e\x6c\x79\x20\x25\x75\x20\x6c\x69\x6e\x65\x73\x20\x6c\x65\x66\x74\x2e\x0d\x0a" ,"\x0d\x0a\x0d\x0a\x01\x6e\x01\x72\x01\x68\x01\x69\x4f\x75\x74\x20\x6f\x66\x20\x62\x79\x74\x65\x73\x2e\x01\x6e\x0d\x0a" ,"\x49\x6e\x76\x61\x6c\x69\x64\x20\x6c\x69\x6e\x65\x20\x6e\x75\x6d\x62\x65\x72\x0d\x0a" ,"\x01\x6e\x4d\x65\x73\x73\x61\x67\x65\x20\x63\x6c\x65\x61\x72\x65\x64\x2e\x0d\x0a" @@ -1227,4 +1226,7 @@ const char * const text_defaults[TOTAL_TEXT]={ ,"\x0d\x0a\x01\x79\x01\x68\x4f\x70\x65\x72\x61\x74\x6f\x72\x3a\x20\x01\x77" ,"\x41\x64\x64\x20\x74\x68\x69\x73\x20\x73\x75\x62\x2d\x62\x6f\x61\x72\x64\x20\x74\x6f\x20\x79\x6f\x75\x72\x20\x6e\x65\x77\x2d\x73" "\x63\x61\x6e\x20\x6c\x69\x73\x74" + ,"\x01\x6e\x01\x72\x01\x69\x57\x41\x52\x4e\x49\x4e\x47\x3a\x20\x59\x6f\x75\x20\x61\x72\x65\x20\x72\x65\x61\x64\x69\x6e\x67\x20\x6d" + "\x65\x73\x73\x61\x67\x65\x73\x20\x70\x61\x73\x74\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x75\x6e\x76\x61\x6c\x69\x64\x61\x74\x65" + "\x64\x20\x6d\x65\x73\x73\x61\x67\x65\x20\x28\x25\x75\x29" }; -- GitLab