diff --git a/src/sbbs3/pack_qwk.cpp b/src/sbbs3/pack_qwk.cpp index f45b931c585fdd720d18a8bf61d2c8e6ceeae151..4aa377136a9c6577ab91d984a69b78a20e203c7d 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 8d161828858f813c6715f71ef5852250c9904629..677a825f5bbd659afe4530c83d7d6858d34223f4 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 1024db5e818a0d852bfdc6774bf255ffc3b6d911..583581dffda8016e38ef4eba404e655451be3c2d 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 63799aea939c8f503eb9a4f74f5a94359ab46854..d9d5d8ca06c3103b4ce57422e6f3b461ab10517a 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 ebe84a54f5ddad1a5887e5a05b4d6c5f6b38a256..447d6ecb7e8500df6de30b6e2108d31235001f13 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 70cd5bd096f0649c06c2b179b4008cde121c5b48..cd47db35d2438a7a827e83201a86a68fd348ceb3 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" };