Commit fd5b39c3 authored by rswindell's avatar rswindell
Browse files

Delete the old hard-coded External Program Section (xtrn_sec) implementation....

Delete the old hard-coded External Program Section (xtrn_sec) implementation. The system must use an external program module (e.g. xtrn_sec.js) now or this function will just display/log an error and exit.
parent 890264cb
......@@ -44,157 +44,15 @@
int sbbs_t::xtrn_sec(const char* section)
{
char str[MAX_PATH+1];
int xsec;
uint i,j,k,*usrxtrn,usrxtrns,*usrxsec,usrxsecs;
long l;
if(cfg.xtrnsec_mod[0] != '\0') {
SAFEPRINTF2(str, "%s %s", cfg.xtrnsec_mod, section);
return exec_bin(str, &main_csi);
if(cfg.xtrnsec_mod[0] == '\0') {
errormsg(WHERE, ERR_CHK, "xtrnsec_mod", 0);
return 1;
}
if(useron.rest&FLAG('X')) {
bputs(text[R_ExternalPrograms]);
return(1);
}
if(!cfg.total_xtrns || !cfg.total_xtrnsecs) {
bputs(text[NoXtrnPrograms]);
return(1);
}
if((usrxtrn=(uint *)malloc(cfg.total_xtrns*sizeof(int)))==NULL) {
errormsg(WHERE,ERR_ALLOC,nulstr,cfg.total_xtrns);
return(1);
}
if((usrxsec=(uint *)malloc(cfg.total_xtrnsecs*sizeof(int)))==NULL) {
errormsg(WHERE,ERR_ALLOC,nulstr,cfg.total_xtrnsecs);
free(usrxtrn);
return(1);
}
while(online) {
for(i=0,usrxsecs=0;i<cfg.total_xtrnsecs;i++)
if(chk_ar(cfg.xtrnsec[i]->ar,&useron,&client))
usrxsec[usrxsecs++]=i;
if(!usrxsecs) {
bputs(text[NoXtrnPrograms]);
free(usrxtrn);
free(usrxsec);
return(1);
}
if(usrxsecs>1) {
if(menu_exists("xtrn_sec")) {
menu("xtrn_sec");
xsec=getnum(usrxsecs);
if(xsec<=0)
break;
xsec--;
xsec=usrxsec[xsec];
}
else {
for(i=0;i<cfg.total_xtrnsecs;i++)
uselect(1,i,"External Program Section"
,cfg.xtrnsec[i]->name,cfg.xtrnsec[i]->ar);
xsec=uselect(0,0,0,0,0);
}
if(xsec==-1)
break;
}
else
xsec=0;
while(!chk_ar(cfg.xtrnsec[xsec]->ar,&useron,&client))
xsec++;
if(xsec>=cfg.total_xtrnsecs) {
bputs(text[NoXtrnPrograms]);
free(usrxtrn);
free(usrxsec);
return(1);
}
while(online) {
for(i=0,usrxtrns=0;i<cfg.total_xtrns; i++) {
if(cfg.xtrn[i]->sec!=xsec)
continue;
if(cfg.xtrn[i]->event && cfg.xtrn[i]->misc&EVENTONLY)
continue;
if(!chk_ar(cfg.xtrn[i]->ar,&useron,&client))
continue;
usrxtrn[usrxtrns++]=i;
}
if(!usrxtrns) {
bputs(text[NoXtrnPrograms]);
pause();
break;
}
sprintf(str,"xtrn%u",xsec+1);
if(menu_exists(str)) {
menu(str);
}
else {
bprintf(text[XtrnProgLstHdr],cfg.xtrnsec[xsec]->name);
bputs(text[XtrnProgLstTitles]);
if(usrxtrns>=10) {
bputs(" ");
bputs(text[XtrnProgLstTitles]);
}
CRLF;
bputs(text[XtrnProgLstUnderline]);
if(usrxtrns>=10) {
bputs(" ");
bputs(text[XtrnProgLstUnderline]);
}
CRLF;
if(usrxtrns>=10)
j=(usrxtrns/2)+(usrxtrns&1);
else
j=usrxtrns;
for(i=0;i<j && !msgabort();i++) {
bprintf(text[XtrnProgLstFmt],i+1
,cfg.xtrn[usrxtrn[i]]->name,cfg.xtrn[usrxtrn[i]]->cost);
if(usrxtrns>=10) {
k=(usrxtrns/2)+i+(usrxtrns&1);
if(k<usrxtrns) {
bputs(" ");
bprintf(text[XtrnProgLstFmt],k+1
,cfg.xtrn[usrxtrn[k]]->name
,cfg.xtrn[usrxtrn[k]]->cost);
}
}
CRLF;
}
ASYNC;
mnemonics(text[WhichXtrnProg]);
}
getnodedat(cfg.node_num,&thisnode,1);
thisnode.aux=0; /* aux is 0, only if at menu */
putnodedat(cfg.node_num,&thisnode);
action=NODE_XTRN;
SYNC;
if((l=getnum(usrxtrns))<1)
break;
l--;
sprintf(str,"xtrn/%s",cfg.xtrn[usrxtrn[l]]->code);
if(menu_exists(str)) {
menu(str);
lncntr=0;
}
exec_xtrn(usrxtrn[l]);
if(cfg.xtrn[usrxtrn[l]]->misc&XTRN_PAUSE)
lncntr=2; /* force a pause before CLS */
}
if(usrxsecs<2)
break;
}
free(usrxtrn);
free(usrxsec);
return(0);
SAFEPRINTF2(str, "%s %s", cfg.xtrnsec_mod, section);
return exec_bin(str, &main_csi);
}
const char *hungupstr="\1n\1h%s\1n hung up on \1h%s\1n %s\r\n";
/****************************************************************************/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment