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

1.1       root        1: #line 1 "EXECMSG.C"
                      2: 
                      3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
                      4: 
                      5: #include "sbbs.h"
                      6: #include "cmdshell.h"
                      7: 
                      8: int execmsg(csi_t *csi)
                      9: {
                     10:        uchar   str[256],tmp2[128],*path,ch,*p;
                     11:        int     s,file,x,y;
                     12:        long    i,j,k;          // Changes from ints - 03/25/96
                     13:        long    l;
                     14:        stats_t stats;
                     15:        node_t  node;
                     16:        file_t  f;
                     17:        time_t  t;
                     18:     csi_t   bin;
                     19: 
                     20: 
                     21: switch(*(csi->ip++)) {
                     22: 
                     23:        case CS_MSG_SELECT_AREA:
                     24:                csi->logic=LOGIC_FALSE;
                     25:                if(!usrgrps) return(0);
                     26:                while(online) {
                     27:                        j=0;
                     28:                        if(usrgrps>1) {
                     29:                                sprintf(str,"%sMENU\\GRPS.*",text_dir);
                     30:                                if(fexist(str))
                     31:                                        menu("GRPS");
                     32:                                else {
                     33:                                        bputs(text[CfgGrpLstHdr]);
                     34:                                        for(i=0;i<usrgrps && !msgabort();i++) {
                     35:                                                if(i==curgrp)
                     36:                                                        outchar('*');
                     37:                                                else outchar(SP);
                     38:                                                if(i<9) outchar(SP);
                     39:                                                if(i<99) outchar(SP);
                     40:                                                bprintf(text[CfgGrpLstFmt]
                     41:                                                        ,i+1,grp[usrgrp[i]]->lname); } }
                     42:                                sprintf(str,text[JoinWhichGrp],curgrp+1);
                     43:                                mnemonics(str);
                     44:                                j=getnum(usrgrps);
                     45:                                if((int)j==-1)
                     46:                                        return(0);
                     47:                                if(!j)
                     48:                                        j=curgrp;
                     49:                                else
                     50:                                        j--; }
                     51:                        sprintf(str,"%sMENU\\SUBS%u.*",text_dir,usrgrp[j]+1);
                     52:                        if(fexist(str)) {
                     53:                                sprintf(str,"SUBS%u",usrgrp[j]+1);
                     54:                                menu(str); }
                     55:                        else {
                     56:                                CLS;
                     57:                                bprintf(text[SubLstHdr],grp[usrgrp[j]]->lname);
                     58:                                for(i=0;i<usrsubs[j] && !msgabort();i++) {
                     59:                                        if(i==cursub[j]) outchar('*');
                     60:                                        else outchar(SP);
                     61:                                        sprintf(str,text[SubLstFmt],i+1
                     62:                                                ,sub[usrsub[j][i]]->lname,nulstr
                     63:                                                ,getposts(usrsub[j][i]));
                     64:                                        if(i<9) outchar(SP);
                     65:                                        if(i<99) outchar(SP);
                     66:                                        bputs(str); } }
                     67:                        sprintf(str,text[JoinWhichSub],cursub[j]+1);
                     68:                        mnemonics(str);
                     69:                        i=getnum(usrsubs[j]);
                     70:                        if((int)i==-1) {
                     71:                                if(usrgrps==1)
                     72:                                        return(0);
                     73:                                continue; }
                     74:                        if(!i)
                     75:                                i=cursub[j];
                     76:                        else
                     77:                                i--;
                     78:                        curgrp=j;
                     79:                        cursub[curgrp]=i;
                     80:                        csi->logic=LOGIC_TRUE;
                     81:                        return(0); }
                     82:                return(0);
                     83: 
                     84:        case CS_MSG_GET_SUB_NUM:
                     85: 
                     86:                if(useron.misc&COLDKEYS) {
                     87:                        i=atoi(csi->str);
                     88:                        if(i && usrgrps && i<=usrsubs[curgrp])
                     89:                                cursub[curgrp]=i-1;
                     90:                        return(0); }
                     91: 
                     92:                ch=getkey(K_UPPER);
                     93:                outchar(ch);
                     94:                if(usrgrps && (ch&0xf)*10<=usrsubs[curgrp] && (ch&0xf)) {
                     95:                        i=(ch&0xf)*10;
                     96:                        ch=getkey(K_UPPER);
                     97:                        if(!isdigit(ch) && ch!=CR) {
                     98:                                ungetkey(ch);
                     99:                                cursub[curgrp]=(i/10)-1;
                    100:                                return(0); }
                    101:                        outchar(ch);
                    102:                        if(ch==CR) {
                    103:                                cursub[curgrp]=(i/10)-1;
                    104:                                return(0); }
                    105:                        logch(ch,0);
                    106:                        i+=ch&0xf;
                    107:                        if(i*10<=usrsubs[curgrp]) {     /* 100+ subs */
                    108:                                i*=10;
                    109:                                ch=getkey(K_UPPER);
                    110:                                if(!isdigit(ch) && ch!=CR) {
                    111:                                        ungetkey(ch);
                    112:                                        cursub[curgrp]=(i/10)-1;
                    113:                                        return(0); }
                    114:                                outchar(ch);
                    115:                                if(ch==CR) {
                    116:                                        cursub[curgrp]=(i/10)-1;
                    117:                                        return(0); }
                    118:                                logch(ch,0);
                    119:                                i+=ch&0xf; }
                    120:                        if(i<=usrsubs[curgrp])
                    121:                                cursub[curgrp]=i-1;
                    122:                        return(0); }
                    123:                if((ch&0xf)<=usrsubs[curgrp] && (ch&0xf) && usrgrps)
                    124:                        cursub[curgrp]=(ch&0xf)-1;
                    125:                return(0);
                    126: 
                    127:        case CS_MSG_GET_GRP_NUM:
                    128: 
                    129:                if(useron.misc&COLDKEYS) {
                    130:                        i=atoi(csi->str);
                    131:                        if(i && i<=usrgrps)
                    132:                                curgrp=i-1;
                    133:                        return(0); }
                    134: 
                    135:                ch=getkey(K_UPPER);
                    136:                outchar(ch);
                    137:                if((ch&0xf)*10<=usrgrps && (ch&0xf)) {
                    138:                        i=(ch&0xf)*10;
                    139:                        ch=getkey(K_UPPER);
                    140:                        if(!isdigit(ch) && ch!=CR) {
                    141:                                ungetkey(ch);
                    142:                                curgrp=(i/10)-1;
                    143:                                return(0); }
                    144:                        outchar(ch);
                    145:                        if(ch==CR) {
                    146:                                curgrp=(i/10)-1;
                    147:                                return(0); }
                    148:                        logch(ch,0);
                    149:                        i+=ch&0xf;
                    150:                        if(i<=usrgrps)
                    151:                                curgrp=i-1;
                    152:                        return(0); }
                    153:                if((ch&0xf)<=usrgrps && (ch&0xf))
                    154:                        curgrp=(ch&0xf)-1;
                    155:                return(0);
                    156: 
                    157:        case CS_MSG_SET_GROUP:
                    158:                csi->logic=LOGIC_TRUE;
                    159:                for(i=0;i<usrgrps;i++)
                    160:                        if(!stricmp(grp[usrgrp[i]]->sname,csi->str))
                    161:                                break;
                    162:                if(i<usrgrps)
                    163:                        curgrp=i;
                    164:                else
                    165:                        csi->logic=LOGIC_FALSE;
                    166:                return(0);
                    167: 
                    168:        case CS_MSG_SHOW_GROUPS:
                    169:                if(!usrgrps) return(0);
                    170:                sprintf(str,"%sMENU\\GRPS.*",text_dir);
                    171:                if(fexist(str)) {
                    172:                        menu("GRPS");
                    173:                        return(0); }
                    174:                bputs(text[GrpLstHdr]);
                    175:                for(i=0;i<usrgrps && !msgabort();i++) {
                    176:                        if(i==curgrp)
                    177:                                outchar('*');
                    178:                        else outchar(SP);
                    179:                        if(i<9) outchar(SP);
                    180:                        bprintf(text[GrpLstFmt],i+1
                    181:                                ,grp[usrgrp[i]]->lname,nulstr,usrsubs[i]); }
                    182:                return(0);
                    183: 
                    184:        case CS_MSG_SHOW_SUBBOARDS:
                    185:                if(!usrgrps) return(0);
                    186:                sprintf(str,"%sMENU\\SUBS%u.*",text_dir,usrgrp[curgrp]+1);
                    187:                if(fexist(str)) {
                    188:                        sprintf(str,"SUBS%u",usrgrp[curgrp]+1);
                    189:                        menu(str);
                    190:                        return(0); }
                    191:                CRLF;
                    192:                bprintf(text[SubLstHdr],grp[usrgrp[curgrp]]->lname);
                    193:                for(i=0;i<usrsubs[curgrp] && !msgabort();i++) {
                    194:                        if(i==cursub[curgrp]) outchar('*');
                    195:                        else outchar(SP);
                    196:                        sprintf(str,text[SubLstFmt],i+1
                    197:                                ,sub[usrsub[curgrp][i]]->lname,nulstr
                    198:                                ,getposts(usrsub[curgrp][i]));
                    199:                        if(i<9) outchar(SP);
                    200:                        if(i<99) outchar(SP);
                    201:                        bputs(str); }
                    202:                return(0);
                    203: 
                    204:        case CS_MSG_GROUP_UP:
                    205:                curgrp++;
                    206:                if(curgrp>=usrgrps)
                    207:                        curgrp=0;
                    208:                return(0);
                    209:        case CS_MSG_GROUP_DOWN:
                    210:                if(!curgrp)
                    211:                        curgrp=usrgrps-1;
                    212:                else curgrp--;
                    213:                return(0);
                    214:        case CS_MSG_SUBBOARD_UP:
                    215:                if(!usrgrps) return(0);
                    216:                cursub[curgrp]++;
                    217:                if(cursub[curgrp]>=usrsubs[curgrp])
                    218:                        cursub[curgrp]=0;
                    219:                return(0);
                    220:        case CS_MSG_SUBBOARD_DOWN:
                    221:                if(!usrgrps) return(0);
                    222:                if(!cursub[curgrp])
                    223:                        cursub[curgrp]=usrsubs[curgrp]-1;
                    224:                else cursub[curgrp]--;
                    225:                return(0);
                    226:        case CS_MSG_SET_AREA:
                    227:                csi->logic=LOGIC_TRUE;
                    228:                for(i=0;i<usrgrps;i++)
                    229:                        for(j=0;j<usrsubs[i];j++)
                    230:                                if(!stricmp(csi->str,sub[usrsub[i][j]]->code)) {
                    231:                                        curgrp=i;
                    232:                                        cursub[i]=j;
                    233:                                        return(0); }
                    234:                csi->logic=LOGIC_FALSE;
                    235:                return(0);
                    236:        case CS_MSG_READ:
                    237:                if(!usrgrps) return(0);
                    238:                csi->logic=scanposts(usrsub[curgrp][cursub[curgrp]],0,nulstr);
                    239:                return(0);
                    240:        case CS_MSG_POST:
                    241:                if(!usrgrps) return(0);
                    242:                csi->logic=LOGIC_FALSE;
                    243:                if(!chk_ar(sub[usrsub[curgrp][cursub[curgrp]]]->post_ar,useron)) {
                    244:                        bputs(text[CantPostOnSub]);
                    245:                        return(0); }
                    246:                csi->logic=!postmsg(usrsub[curgrp][cursub[curgrp]],0,0);
                    247:                return(0);
                    248:        case CS_MSG_QWK:
                    249:                qwk_sec();
                    250:                return(0);
                    251:        case CS_MSG_PTRS_CFG:
                    252:                new_scan_ptr_cfg();
                    253:                return(0);
                    254:        case CS_MSG_PTRS_REINIT:
                    255:                for(i=0;i<total_subs;i++) {
                    256:                        sub[i]->ptr=sub_ptr[i];
                    257:                        sub[i]->last=sub_last[i]; }
                    258:                bputs(text[MsgPtrsInitialized]);
                    259:                return(0);
                    260:        case CS_MSG_NEW_SCAN_CFG:
                    261:                new_scan_cfg(SUB_NSCAN);
                    262:                return(0);
                    263:        case CS_MSG_NEW_SCAN:
                    264:                scansubs(SCAN_NEW);
                    265:                return(0);
                    266:        case CS_MSG_NEW_SCAN_SUB:
                    267:                csi->logic=scanposts(usrsub[curgrp][cursub[curgrp]],SCAN_NEW,nulstr);
                    268:                return(0);
                    269:        case CS_MSG_NEW_SCAN_ALL:
                    270:                scanallsubs(SCAN_NEW);
                    271:                return(0);
                    272:        case CS_MSG_CONT_SCAN:
                    273:                scansubs(SCAN_NEW|SCAN_CONST);
                    274:                return(0);
                    275:        case CS_MSG_CONT_SCAN_ALL:
                    276:                scanallsubs(SCAN_NEW|SCAN_CONST);
                    277:                return(0);
                    278:        case CS_MSG_BROWSE_SCAN:
                    279:                scansubs(SCAN_NEW|SCAN_BACK);
                    280:                return(0);
                    281:        case CS_MSG_BROWSE_SCAN_ALL:
                    282:                scanallsubs(SCAN_BACK|SCAN_NEW);
                    283:                return(0);
                    284:        case CS_MSG_FIND_TEXT:
                    285:                scansubs(SCAN_FIND);
                    286:                return(0);
                    287:        case CS_MSG_FIND_TEXT_ALL:
                    288:                scanallsubs(SCAN_FIND);
                    289:                return(0);
                    290:        case CS_MSG_YOUR_SCAN_CFG:
                    291:                new_scan_cfg(SUB_SSCAN);
                    292:                return(0);
                    293:        case CS_MSG_YOUR_SCAN:
                    294:                scansubs(SCAN_TOYOU);
                    295:                return(0);
                    296:        case CS_MSG_YOUR_SCAN_ALL:
                    297:                scanallsubs(SCAN_TOYOU);
                    298:                return(0); }
                    299: errormsg(WHERE,ERR_CHK,"shell function",*(csi->ip-1));
                    300: return(0);
                    301: }

unix.superglobalmegacorp.com

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