|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.