Annotation of sbbs/sbbs2/main_sec.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.