|
|
1.1 ! root 1: #line 1 "MAIN_SEC.C" ! 2: ! 3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */ ! 4: ! 5: /******************************************************/ ! 6: /* This file contains the single function, main_sec() */ ! 7: /******************************************************/ ! 8: ! 9: #include "sbbs.h" ! 10: ! 11: extern void logoff(); ! 12: ! 13: void main_cfg_cmd(); ! 14: void main_ext_cmd(char ch); ! 15: void main_str_cmd(char *str); ! 16: void sysop_page(void); ! 17: ulong getposts(uint subnum); ! 18: ! 19: char no_rip_menu=0; ! 20: ! 21: void new_scan_ptr_cfg() ! 22: { ! 23: char str[128]; ! 24: long i,j,s; ! 25: ulong l; ! 26: time_t t,lt; ! 27: ! 28: while(online) { ! 29: bputs(text[CfgGrpLstHdr]); ! 30: for(i=0;i<usrgrps && online;i++) { ! 31: checkline(); ! 32: if(i<9) outchar(SP); ! 33: if(i<99) outchar(SP); ! 34: bprintf(text[CfgGrpLstFmt],i+1,grp[usrgrp[i]]->lname); } ! 35: SYNC; ! 36: mnemonics(text[WhichOrAll]); ! 37: s=getkeys("AQ",i); ! 38: if(!s || s==-1 || s=='Q') ! 39: break; ! 40: if(s=='A') { ! 41: mnemonics("\r\nEnter number of messages from end, ~Date, ~Quit, or" ! 42: " [Last Message]: "); ! 43: s=getkeys("DLQ",9999); ! 44: if(s==-1 || s=='Q') ! 45: continue; ! 46: if(s=='D') { ! 47: t=time(NULL); ! 48: if(inputnstime(&t) && !(sys_status&SS_ABORT)) { ! 49: bputs(text[LoadingMsgPtrs]); ! 50: for(i=0;i<usrgrps && online;i++) ! 51: for(j=0;j<usrsubs[i] && online;j++) { ! 52: checkline(); ! 53: sub[usrsub[i][j]]->ptr=getmsgnum(usrsub[i][j],t); } } ! 54: continue; } ! 55: if(s=='L') ! 56: s=0; ! 57: if(s) ! 58: s&=~0x80000000L; ! 59: bputs(text[LoadingMsgPtrs]); ! 60: for(i=0;i<usrgrps;i++) ! 61: for(j=0;j<usrsubs[i] && online;j++) { ! 62: checkline(); ! 63: getlastmsg(usrsub[i][j],&l,0); ! 64: if(s>l) ! 65: sub[usrsub[i][j]]->ptr=0; ! 66: else ! 67: sub[usrsub[i][j]]->ptr=l-s; } ! 68: continue; } ! 69: i=(s&~0x80000000L)-1; ! 70: while(online) { ! 71: l=0; ! 72: bprintf(text[CfgSubLstHdr],grp[usrgrp[i]]->lname); ! 73: for(j=0;j<usrsubs[i] && online;j++) { ! 74: checkline(); ! 75: if(j<9) outchar(SP); ! 76: if(j<99) outchar(SP); ! 77: t=getmsgtime(usrsub[i][j],sub[usrsub[i][j]]->ptr); ! 78: if(t>l) ! 79: l=t; ! 80: bprintf(text[SubPtrLstFmt],j+1,sub[usrsub[i][j]]->lname ! 81: ,timestr(&t),nulstr); } ! 82: SYNC; ! 83: mnemonics(text[WhichOrAll]); ! 84: s=getkeys("AQ",j); ! 85: if(sys_status&SS_ABORT) { ! 86: lncntr=0; ! 87: return; } ! 88: if(s==-1 || !s || s=='Q') ! 89: break; ! 90: if(s=='A') { /* The entire group */ ! 91: mnemonics("\r\nEnter number of messages from end, ~Date, ~Quit, or" ! 92: " [Last Message]: "); ! 93: s=getkeys("DLQ",9999); ! 94: if(s==-1 || s=='Q') ! 95: continue; ! 96: if(s=='D') { ! 97: t=l; ! 98: if(inputnstime(&t) && !(sys_status&SS_ABORT)) { ! 99: bputs(text[LoadingMsgPtrs]); ! 100: for(j=0;j<usrsubs[i] && online;j++) { ! 101: checkline(); ! 102: sub[usrsub[i][j]]->ptr=getmsgnum(usrsub[i][j],t); } } ! 103: continue; } ! 104: if(s=='L') ! 105: s=0; ! 106: if(s) ! 107: s&=~0x80000000L; ! 108: bputs(text[LoadingMsgPtrs]); ! 109: for(j=0;j<usrsubs[i] && online;j++) { ! 110: checkline(); ! 111: getlastmsg(usrsub[i][j],&l,0); ! 112: if(s>l) ! 113: sub[usrsub[i][j]]->ptr=0; ! 114: else ! 115: sub[usrsub[i][j]]->ptr=l-s; } ! 116: continue; } ! 117: else { ! 118: j=(s&~0x80000000L)-1; ! 119: mnemonics("\r\nEnter number of messages from end, ~Date, ~Quit, or" ! 120: " [Last Message]: "); ! 121: s=getkeys("DLQ",9999); ! 122: if(s==-1 || s=='Q') ! 123: continue; ! 124: if(s=='D') { ! 125: t=getmsgtime(usrsub[i][j],sub[usrsub[i][j]]->ptr); ! 126: if(inputnstime(&t) && !(sys_status&SS_ABORT)) { ! 127: bputs(text[LoadingMsgPtrs]); ! 128: sub[usrsub[i][j]]->ptr=getmsgnum(usrsub[i][j],t); } ! 129: continue; } ! 130: if(s=='L') ! 131: s=0; ! 132: if(s) ! 133: s&=~0x80000000L; ! 134: getlastmsg(usrsub[i][j],&l,0); ! 135: if(s>l) ! 136: sub[usrsub[i][j]]->ptr=0; ! 137: else ! 138: sub[usrsub[i][j]]->ptr=l-s; } ! 139: } } ! 140: } ! 141: ! 142: void new_scan_cfg(ulong misc) ! 143: { ! 144: long s; ! 145: ulong i,j; ! 146: ulong t; ! 147: ! 148: while(online) { ! 149: bputs(text[CfgGrpLstHdr]); ! 150: for(i=0;i<usrgrps && online;i++) { ! 151: checkline(); ! 152: if(i<9) outchar(SP); ! 153: if(i<99) outchar(SP); ! 154: bprintf(text[CfgGrpLstFmt],i+1,grp[usrgrp[i]]->lname); } ! 155: SYNC; ! 156: if(misc&SUB_NSCAN) ! 157: mnemonics(text[NScanCfgWhichGrp]); ! 158: else ! 159: mnemonics(text[SScanCfgWhichGrp]); ! 160: s=getnum(i); ! 161: if(s<1) ! 162: break; ! 163: i=s-1; ! 164: while(online) { ! 165: if(misc&SUB_NSCAN) ! 166: misc&=~SUB_YSCAN; ! 167: bprintf(text[CfgSubLstHdr],grp[usrgrp[i]]->lname); ! 168: for(j=0;j<usrsubs[i] && online;j++) { ! 169: checkline(); ! 170: if(j<9) outchar(SP); ! 171: if(j<99) outchar(SP); ! 172: bprintf(text[CfgSubLstFmt],j+1 ! 173: ,sub[usrsub[i][j]]->lname ! 174: ,sub[usrsub[i][j]]->misc&misc ? ! 175: (misc&SUB_NSCAN && sub[usrsub[i][j]]->misc&SUB_YSCAN) ? ! 176: "To You Only" : text[On] : text[Off]); ! 177: } ! 178: SYNC; ! 179: if(misc&SUB_NSCAN) ! 180: mnemonics(text[NScanCfgWhichSub]); ! 181: else ! 182: mnemonics(text[SScanCfgWhichSub]); ! 183: s=getkeys("AQ",j); ! 184: if(sys_status&SS_ABORT) { ! 185: lncntr=0; ! 186: return; } ! 187: if(!s || s==-1 || s=='Q') ! 188: break; ! 189: if(s=='A') { ! 190: t=sub[usrsub[i][0]]->misc&misc; ! 191: if(misc&SUB_NSCAN && !t) ! 192: if(!noyes("Messages to you only")) ! 193: misc|=SUB_YSCAN; ! 194: for(j=0;j<usrsubs[i] && online;j++) { ! 195: checkline(); ! 196: if(t) sub[usrsub[i][j]]->misc&=~misc; ! 197: else { ! 198: if(misc&SUB_NSCAN) ! 199: sub[usrsub[i][j]]->misc&=~SUB_YSCAN; ! 200: sub[usrsub[i][j]]->misc|=misc; } } ! 201: continue; } ! 202: j=(s&~0x80000000L)-1; ! 203: if(misc&SUB_NSCAN && !(sub[usrsub[i][j]]->misc&misc)) { ! 204: if(!noyes("Messages to you only")) ! 205: sub[usrsub[i][j]]->misc|=SUB_YSCAN; ! 206: else ! 207: sub[usrsub[i][j]]->misc&=~SUB_YSCAN; } ! 208: sub[usrsub[i][j]]->misc^=misc; } } ! 209: } ! 210: ! 211: /****************************************************************************/ ! 212: /* Performs a new message scan all all sub-boards */ ! 213: /****************************************************************************/ ! 214: void scanallsubs(char mode) ! 215: { ! 216: char str[256]; ! 217: int i,j,found=0; ! 218: ! 219: if(/* action==NODE_MAIN && */ mode&(SCAN_FIND|SCAN_TOYOU)) { ! 220: i=yesno(text[DisplayTitlesOnlyQ]); ! 221: if(mode&SCAN_FIND) { ! 222: bputs(text[SearchStringPrompt]); ! 223: if(!getstr(str,40,K_LINE|K_UPPER)) ! 224: return; ! 225: if(i) { /* if titles only */ ! 226: for(i=0;i<usrgrps;i++) { ! 227: for(j=0;j<usrsubs[i] && !msgabort();j++) ! 228: found=searchsub(usrsub[i][j],str); ! 229: if(j<usrsubs[i]) ! 230: break; } ! 231: if(!found) ! 232: CRLF; ! 233: sprintf(tmp,"Searched messages for '%s'",str); ! 234: logline(nulstr,tmp); ! 235: return; } } ! 236: else if(mode&SCAN_TOYOU && i) { ! 237: for(i=0;i<usrgrps;i++) { ! 238: for(j=0;j<usrsubs[i] && !msgabort();j++) ! 239: found=searchsub_toyou(usrsub[i][j]); ! 240: if(j<usrsubs[i]) ! 241: break; } ! 242: if(!found) ! 243: CRLF; ! 244: return; } } ! 245: ! 246: if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) { ! 247: menu("MSGSCAN"); } ! 248: for(i=0;i<usrgrps;i++) { ! 249: for(j=0;j<usrsubs[i] && !msgabort();j++) ! 250: if(((mode&SCAN_NEW && sub[usrsub[i][j]]->misc&(SUB_NSCAN|SUB_FORCED)) ! 251: || mode&SCAN_FIND ! 252: || (mode&SCAN_TOYOU && sub[usrsub[i][j]]->misc&SUB_SSCAN)) ! 253: && scanposts(usrsub[i][j],mode,str)) break; ! 254: if(j<usrsubs[i]) ! 255: break; } ! 256: bputs(text[MessageScan]); ! 257: if(i<usrgrps) { ! 258: bputs(text[MessageScanAborted]); ! 259: return; } ! 260: bputs(text[MessageScanComplete]); ! 261: if(mode&SCAN_NEW && !(mode&(SCAN_BACK|SCAN_TOYOU)) ! 262: && useron.misc&ANFSCAN && !(useron.rest&FLAG('T'))) { ! 263: xfer_cmds++; ! 264: scanalldirs(FL_ULTIME); } ! 265: } ! 266: ! 267: /****************************************************************************/ ! 268: /* Used to scan single or multiple sub-boards. 'mode' is the scan type. */ ! 269: /****************************************************************************/ ! 270: void scansubs(char mode) ! 271: { ! 272: char ch,str[256]; ! 273: int i=0,j,found=0; ! 274: ! 275: mnemonics(text[SubGroupOrAll]); ! 276: ch=getkeys("SGA\r",0); ! 277: if(sys_status&SS_ABORT || ch==CR) ! 278: return; ! 279: ! 280: if(ch!='A' && mode&(SCAN_FIND|SCAN_TOYOU)) { ! 281: if(yesno(text[DisplayTitlesOnlyQ])) i=1; ! 282: if(mode&SCAN_FIND) { ! 283: bputs(text[SearchStringPrompt]); ! 284: if(!getstr(str,40,K_LINE|K_UPPER)) ! 285: return; ! 286: if(i) { /* if titles only */ ! 287: if(ch=='S') ! 288: found=searchsub(usrsub[curgrp][cursub[curgrp]],str); ! 289: else if(ch=='G') ! 290: for(i=0;i<usrsubs[curgrp] && !msgabort();i++) ! 291: found=searchsub(usrsub[curgrp][i],str); ! 292: sprintf(tmp,"Searched messages for '%s'",str); ! 293: logline(nulstr,tmp); ! 294: if(!found) ! 295: CRLF; ! 296: return; } } ! 297: else if(mode&SCAN_TOYOU && i) { ! 298: if(ch=='S') ! 299: found=searchsub_toyou(usrsub[curgrp][cursub[curgrp]]); ! 300: else if(ch=='G') ! 301: for(i=0;i<usrsubs[curgrp] && !msgabort();i++) ! 302: found=searchsub_toyou(usrsub[curgrp][i]); ! 303: if(!found) ! 304: CRLF; ! 305: return; } } ! 306: ! 307: if(ch=='S') { ! 308: if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) { ! 309: menu("MSGSCAN"); } ! 310: i=scanposts(usrsub[curgrp][cursub[curgrp]],mode,str); ! 311: bputs(text[MessageScan]); ! 312: if(i) bputs(text[MessageScanAborted]); ! 313: else bputs(text[MessageScanComplete]); ! 314: return; } ! 315: if(ch=='G') { ! 316: if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) { ! 317: menu("MSGSCAN"); } ! 318: for(i=0;i<usrsubs[curgrp] && !msgabort();i++) ! 319: if(((mode&SCAN_NEW && ! 320: sub[usrsub[curgrp][i]]->misc&(SUB_NSCAN|SUB_FORCED)) ! 321: || (mode&SCAN_TOYOU && sub[usrsub[curgrp][i]]->misc&SUB_SSCAN) ! 322: || mode&SCAN_FIND) ! 323: && scanposts(usrsub[curgrp][i],mode,str)) break; ! 324: bputs(text[MessageScan]); ! 325: if(i==usrsubs[curgrp]) bputs(text[MessageScanComplete]); ! 326: else bputs(text[MessageScanAborted]); ! 327: return; } ! 328: ! 329: scanallsubs(mode); ! 330: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.