diff --git a/src/sbbs3/ars.c b/src/sbbs3/ars.c index 60e049e54cce78062292acaf3dd6aaa48ca3049b..96394f3d62aaeca7d643ba96bf4bf1b4385944e3 100644 --- a/src/sbbs3/ars.c +++ b/src/sbbs3/ars.c @@ -78,23 +78,28 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) ar[j++]=AR_NOT; not=equal=0; ar[j++]=AR_BEGNEST; - continue; } + continue; + } if(str[i]==')') { ar[j++]=AR_ENDNEST; - continue; } + continue; + } if(str[i]=='|') { ar[j++]=AR_OR; - continue; } + continue; + } if(str[i]=='!') { not=1; - continue; } + continue; + } if(str[i]=='=') { equal=1; - continue; } + continue; + } if(str[i]=='&') continue; @@ -106,30 +111,37 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) if(n==2 && !strnicmp(p,"OR",2)) { ar[j++]=AR_OR; i++; - continue; } + continue; + } if(n==3 && !strnicmp(p,"AND",3)) { /* AND is ignored */ i+=2; - continue; } + continue; + } if(n==3 && !strnicmp(p,"NOT",3)) { not=1; i+=2; - continue; } + continue; + } if(n==2 && equal && !strnicmp(p,"TO",2)) { /* EQUAL TO */ i++; - continue; } + continue; + } if(n==5 && !strnicmp(p,"EQUAL",5)) { equal=1; i+=4; - continue; } + continue; + } if(n==6 && !strnicmp(p,"EQUALS",6)) { equal=1; i+=5; - continue; } } + continue; + } + } if(str[i]=='$') { arg_expected=TRUE; @@ -242,64 +254,84 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) n=i; if(!strnicmp(str+i,"AGE",3)) { artype=AR_AGE; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"BPS",3)) { artype=AR_BPS; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"PCR",3)) { artype=AR_PCR; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"SEX",3)) { artype=AR_SEX; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"UDR",3)) { artype=AR_UDR; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"ULS",3)) { artype=AR_ULS; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"ULK",3)) { artype=AR_ULK; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"ULM",3)) { artype=AR_ULM; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DLS",3)) { artype=AR_DLS; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DLK",3)) { artype=AR_DLK; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DLM",3)) { artype=AR_DLM; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DAY",3)) { artype=AR_DAY; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"RIP",3)) { artype=AR_RIP; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"WIP",3)) { artype=AR_WIP; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"OS2",3)) { artype=AR_OS2; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DOS",3)) { artype=AR_DOS; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"WIN32",5)) { artype=AR_WIN32; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"UNIX",4)) { artype=AR_UNIX; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"LINUX",5)) { artype=AR_LINUX; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"PROT",4)) { artype=AR_PROT; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"HOST",4)) { artype=AR_HOST; i+=3; @@ -310,109 +342,144 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) } else if(!strnicmp(str+i,"SUBCODE",7)) { artype=AR_SUBCODE; - i+=6; } + i+=6; + } else if(!strnicmp(str+i,"SUB",3)) { artype=AR_SUB; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"LIB",3)) { artype=AR_LIB; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"DIRCODE",7)) { artype=AR_DIRCODE; - i+=6; } + i+=6; + } else if(!strnicmp(str+i,"DIR",3)) { artype=AR_DIR; - i+=2; } + i+=2; + } else if(!strnicmp(str+i,"ANSI",4)) { artype=AR_ANSI; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"UDFR",4)) { artype=AR_UDFR; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"FLAG",4)) { artype=AR_FLAG1; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"NODE",4)) { artype=AR_NODE; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"NULL",4)) { artype=AR_NULL; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"USER",4)) { artype=AR_USER; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"TIME",4)) { artype=AR_TIME; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"REST",4)) { artype=AR_REST; - i+=3; } + i+=3; + } else if(!strnicmp(str+i,"LEVEL",5)) { artype=AR_LEVEL; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"TLEFT",5)) { artype=AR_TLEFT; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"TUSED",5)) { artype=AR_TUSED; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"LOCAL",5)) { artype=AR_LOCAL; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"GROUP",5)) { artype=AR_GROUP; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"EXPIRE",6)) { artype=AR_EXPIRE; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"ACTIVE",6)) { artype=AR_ACTIVE; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"INACTIVE",8)) { artype=AR_INACTIVE; - i+=7; } + i+=7; + } else if(!strnicmp(str+i,"DELETED",7)) { artype=AR_DELETED; - i+=6; } + i+=6; + } else if(!strnicmp(str+i,"EXPERT",6)) { artype=AR_EXPERT; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"SYSOP",5)) { artype=AR_SYSOP; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"GUEST",5)) { artype=AR_GUEST; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"QNODE",5)) { artype=AR_QNODE; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"QUIET",5)) { artype=AR_QUIET; - i+=4; } + i+=4; + } else if(!strnicmp(str+i,"EXEMPT",6)) { artype=AR_EXEMPT; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"RANDOM",6)) { artype=AR_RANDOM; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"LASTON",6)) { artype=AR_LASTON; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"LOGONS",6)) { artype=AR_LOGONS; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"CREDIT",6)) { artype=AR_CREDIT; - i+=5; } + i+=5; + } else if(!strnicmp(str+i,"MAIN_CMDS",9)) { artype=AR_MAIN_CMDS; - i+=8; } + i+=8; + } else if(!strnicmp(str+i,"FILE_CMDS",9)) { artype=AR_FILE_CMDS; - i+=8; } + i+=8; + } else if(!strnicmp(str+i,"SHELL",5)) { artype=AR_SHELL; - i+=4; } + i+=4; + } if(n!=i) /* one of the above */ { @@ -463,8 +530,10 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) break; case '4': artype=AR_FLAG4; - break; } - continue; } + break; + } + continue; + } arg_expected=FALSE; @@ -485,7 +554,8 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) *((short *)(ar+j))=n; j+=2; while(isdigit(str[i+1]) || str[i+1]==':') i++; - continue; } + continue; + } n=atoi(str+i); switch(artype) { case AR_DAY: @@ -531,9 +601,11 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) break; default: /* invalid numeric AR type */ j--; - break; } + break; + } while(isdigit(str[i+1])) i++; - continue; } + continue; + } maxlen=128; switch(artype) { case AR_SUBCODE: @@ -572,7 +644,8 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) break; if(n<(uint)cfg->total_subs) { *((short *)(ar+j))=n; - j+=2; } + j+=2; + } else /* Unknown sub-board */ j--; while(isalpha(str[i+1])) i++; @@ -583,7 +656,8 @@ uchar* arstr(ushort* count, char* str, scfg_t* cfg) break; if(n<(uint)cfg->total_dirs) { *((short *)(ar+j))=n; - j+=2; } + j+=2; + } else /* Unknown directory */ j--; while(isalpha(str[i+1])) i++; diff --git a/src/sbbs3/bat_xfer.cpp b/src/sbbs3/bat_xfer.cpp index d2db1bb2018177a9d3f375a037d4e258ce66cc9c..71d9c1865dbb1a8773737bee6636d508743a7a44 100644 --- a/src/sbbs3/bat_xfer.cpp +++ b/src/sbbs3/bat_xfer.cpp @@ -124,7 +124,8 @@ void sbbs_t::batchmenu() for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->bicmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(tmp2,tmp); } + strcat(tmp2,tmp); + } ungetkey(useron.prot); ch=(char)getkeys(tmp2,0); if(ch=='Q') @@ -174,7 +175,8 @@ void sbbs_t::batchmenu() if(cfg.dir[batdn_dir[i]]->seqdev) { unpadfname(batdn_name[i],tmp); sprintf(tmp2,"%s%s",cfg.temp_dir,tmp); - remove(tmp2); } + remove(tmp2); + } batch_upload(); batch_download(xfrprot); if(batdn_total) /* files still in queue, not xfered */ @@ -196,7 +198,8 @@ void sbbs_t::batchmenu() f.datoffset=batdn_offset[i]; f.size=batdn_size[i]; strcpy(f.name,batdn_name[i]); - closefile(&f); } + closefile(&f); + } batdn_total=0; bputs(text[DownloadQueueCleared]); } @@ -210,7 +213,8 @@ void sbbs_t::batchmenu() bputs(text[UploadQueueLstHdr]); for(i=0;i<batup_total;i++) bprintf(text[UploadQueueLstFmt],i+1,batup_name[i] - ,batup_desc[i]); } + ,batup_desc[i]); + } if(batdn_total) { bputs(text[DownloadQueueLstHdr]); for(i=0,totalcdt=0,totalsize=0;i<batdn_total;i++) { @@ -221,11 +225,13 @@ void sbbs_t::batchmenu() ? sectostr(batdn_size[i]/(ulong)cur_cps,tmp2) : "??:??:??"); totalsize+=batdn_size[i]; - totalcdt+=batdn_cdt[i]; } + totalcdt+=batdn_cdt[i]; + } bprintf(text[DownloadQueueTotals] ,ultoac(totalcdt,tmp),ultoac(totalsize,str),cur_cps ? sectostr(totalsize/(ulong)cur_cps,tmp2) - : "??:??:??"); } + : "??:??:??"); + } break; /* Questionable line ^^^, see note above function */ case 'R': if(batup_total) { @@ -240,7 +246,8 @@ void sbbs_t::batchmenu() batup_alt[n]=batup_alt[n+1]; strcpy(batup_name[n],batup_name[n+1]); strcpy(batup_desc[n],batup_desc[n+1]); - n++; } + n++; + } if(!batup_total) bputs(text[UploadQueueCleared]); } diff --git a/src/sbbs3/chat.cpp b/src/sbbs3/chat.cpp index 1d77e6c86d1b6d0fd923b6734689f1a13efcee4e..aa250f241b3da14da08d4504cd64245b79b7afeb 100644 --- a/src/sbbs3/chat.cpp +++ b/src/sbbs3/chat.cpp @@ -78,20 +78,24 @@ void sbbs_t::multinodechat(int channel) bprintf(text[WelcomeToChannelN],channel,cfg.chan[channel-1]->name); if(gurubuf) { free(gurubuf); - gurubuf=NULL; } + gurubuf=NULL; + } if(cfg.chan[channel-1]->misc&CHAN_GURU && cfg.chan[channel-1]->guru<cfg.total_gurus && chk_ar(cfg.guru[cfg.chan[channel-1]->guru]->ar,&useron,&client)) { sprintf(str,"%s%s.dat",cfg.ctrl_dir,cfg.guru[cfg.chan[channel-1]->guru]->code); if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return; } + return; + } if((gurubuf=(char *)malloc(filelength(file)+1))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,filelength(file)+1); - return; } + return; + } read(file,gurubuf,filelength(file)); gurubuf[filelength(file)]=0; - close(file); } + close(file); + } usrs=0; for(i=1;i<=cfg.sys_nodes && i<=cfg.sys_lastnode;i++) { if(i==cfg.node_num) @@ -102,7 +106,8 @@ void sbbs_t::multinodechat(int channel) if(node.aux && (node.aux&0xff)!=channel) continue; printnodedat(i,&node); - preusr[usrs]=usr[usrs++]=(char)i; } + preusr[usrs]=usr[usrs++]=(char)i; + } preusrs=usrs; if(gurubuf) bprintf(text[NodeInMultiChatLocally] @@ -124,7 +129,8 @@ void sbbs_t::multinodechat(int channel) if(node.status==NODE_QUIET) qusr[qusrs++]=(char)i; else if(node.status==NODE_INUSE) - usr[usrs++]=(char)i; } + usr[usrs++]=(char)i; + } if(preusrs>usrs) { if(!usrs && channel && cfg.chan[channel-1]->misc&CHAN_GURU && cfg.chan[channel-1]->guru<cfg.total_gurus) @@ -143,7 +149,10 @@ void sbbs_t::multinodechat(int channel) else username(&cfg,node.useron,str); bprintf(text[NodeLeftMultiChat] - ,preusr[i],str,channel); } } } + ,preusr[i],str,channel); + } + } + } else if(preusrs<usrs) { if(!preusrs && channel && cfg.chan[channel-1]->misc&CHAN_GURU && cfg.chan[channel-1]->guru<cfg.total_gurus) @@ -162,7 +171,10 @@ void sbbs_t::multinodechat(int channel) else username(&cfg,node.useron,str); bprintf(text[NodeJoinedMultiChat] - ,usr[i],str,channel); } } } + ,usr[i],str,channel); + } + } + } preusrs=usrs; for(i=0;i<usrs;i++) preusr[i]=usr[i]; @@ -206,13 +218,16 @@ void sbbs_t::multinodechat(int channel) if(strcmp(str,unpackchatpass(tmp,&node))) break; bputs(text[CorrectPassword]); } - preusr[usrs]=usr[usrs++]=(char)i; } + preusr[usrs]=usr[usrs++]=(char)i; + } if(i<=cfg.sys_nodes) { /* failed password */ bputs(text[WrongPassword]); - continue; } + continue; + } if(gurubuf) { free(gurubuf); - gurubuf=NULL; } + gurubuf=NULL; + } if(cfg.chan[savch-1]->misc&CHAN_GURU && cfg.chan[savch-1]->guru<cfg.total_gurus && chk_ar(cfg.guru[cfg.chan[savch-1]->guru]->ar,&useron,&client @@ -221,15 +236,18 @@ void sbbs_t::multinodechat(int channel) ,cfg.guru[cfg.chan[savch-1]->guru]->code); if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - break; } + break; + } if((gurubuf=(char *)malloc(filelength(file)+1))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str ,filelength(file)+1); - break; } + break; + } read(file,gurubuf,filelength(file)); gurubuf[filelength(file)]=0; - close(file); } + close(file); + } preusrs=usrs; if(gurubuf) bprintf(text[NodeInMultiChatLocally] @@ -243,18 +261,23 @@ void sbbs_t::multinodechat(int channel) if(getstr(str,8,K_UPPER|K_ALPHA|K_LINE)) { getnodedat(cfg.node_num,&thisnode,true); thisnode.aux=channel; - packchatpass(str,&thisnode); } + packchatpass(str,&thisnode); + } else { getnodedat(cfg.node_num,&thisnode,true); - thisnode.aux=channel; } } + thisnode.aux=channel; + } + } else { getnodedat(cfg.node_num,&thisnode,true); - thisnode.aux=channel; } + thisnode.aux=channel; + } putnodedat(cfg.node_num,&thisnode); bputs(text[YoureOnTheAir]); if(cfg.chan[channel-1]->cost && !(useron.exempt&FLAG('J'))) - subtract_cdt(&cfg,&useron,cfg.chan[channel-1]->cost); } + subtract_cdt(&cfg,&useron,cfg.chan[channel-1]->cost); + } else switch(i) { /* other command */ case '0': /* Global channel */ if(!SYSOP) @@ -268,7 +291,8 @@ void sbbs_t::multinodechat(int channel) || node.status!=NODE_INUSE) continue; printnodedat(i,&node); - preusr[usrs]=usr[usrs++]=(char)i; } + preusr[usrs]=usr[usrs++]=(char)i; + } preusrs=usrs; if(getnodedat(cfg.node_num,&thisnode,true)==0) { thisnode.aux=channel=0; @@ -292,9 +316,11 @@ void sbbs_t::multinodechat(int channel) bprintf("%-*.*s",LEN_CHATACTCMD ,LEN_CHATACTCMD,cfg.chatact[i]->cmd); if(!((i+1)%8)) { - CRLF; } + CRLF; + } else - bputs(" "); } + bputs(" "); + } CRLF; break; case 'E': /* Toggle echo */ @@ -309,7 +335,8 @@ void sbbs_t::multinodechat(int channel) CRLF; for(i=1;i<=cfg.sys_nodes && i<=cfg.sys_lastnode;i++) { getnodedat(i,&node,0); - printnodedat(i,&node); } + printnodedat(i,&node); + } CRLF; break; case 'W': /* page node(s) */ @@ -321,7 +348,8 @@ void sbbs_t::multinodechat(int channel) break; if(i>=usrs) { bputs(text[UserNotFound]); - break; } + break; + } bputs(text[NodeMsgPrompt]); if(!getstr(line,66,K_LINE|K_MSG)) @@ -349,12 +377,14 @@ void sbbs_t::multinodechat(int channel) bputs(text[ChatChanLstTitles]); if(cfg.total_chans>=10) { bputs(" "); - bputs(text[ChatChanLstTitles]); } + bputs(text[ChatChanLstTitles]); + } CRLF; bputs(text[ChatChanLstUnderline]); if(cfg.total_chans>=10) { bputs(" "); - bputs(text[ChatChanLstUnderline]); } + bputs(text[ChatChanLstUnderline]); + } CRLF; if(cfg.total_chans>=10) j=(cfg.total_chans/2)+(cfg.total_chans&1); @@ -372,9 +402,13 @@ void sbbs_t::multinodechat(int channel) bprintf(text[ChatChanLstFmt] ,k+1 ,cfg.chan[k]->name - ,cfg.chan[k]->cost); } } - CRLF; } - CRLF; } + ,cfg.chan[k]->cost); + } + } + CRLF; + } + CRLF; + } break; case '?': /* menu */ menu("multchat"); @@ -394,12 +428,14 @@ void sbbs_t::multinodechat(int channel) : useron.handle ,cfg.node_num,':',nulstr); sprintf(tmp,"%*s",bstrlen(str),nulstr); - strcat(pgraph,tmp); } + strcat(pgraph,tmp); + } strcat(pgraph,line); strcat(pgraph,crlf); if(!wordwrap[0]) break; - j++; } + j++; + } if(pgraph[0]) { if(channel && useron.chat&CHAT_ACTION) { for(i=0;i<cfg.total_chatacts;i++) { @@ -413,7 +449,8 @@ void sbbs_t::multinodechat(int channel) ,LEN_CHATACTCMD+2,pgraph); str[strlen(str)-2]=0; if(!stricmp(cfg.chatact[i]->cmd,str)) - break; } + break; + } if(i<cfg.total_chatacts) { p=pgraph+strlen(str); @@ -425,14 +462,16 @@ void sbbs_t::multinodechat(int channel) if(n) { if(usr[j]==n) break; - continue; } + continue; + } username(&cfg,node.useron,str); if(!strnicmp(str,p,strlen(str))) break; getuserrec(&cfg,node.useron,U_HANDLE ,LEN_HANDLE,str); if(!strnicmp(str,p,strlen(str))) - break; } + break; + } if(!usrs && cfg.chan[channel-1]->guru<cfg.total_gurus) strcpy(str @@ -458,7 +497,8 @@ void sbbs_t::multinodechat(int channel) ? text[UNKNOWN_USER] : useron.alias ,"you"); strcat(buf,crlf); - putnmsg(&cfg,usr[j],buf); } + putnmsg(&cfg,usr[j],buf); + } /* Display to all other users */ @@ -472,11 +512,15 @@ void sbbs_t::multinodechat(int channel) if(i==j) continue; getnodedat(usr[i],&node,0); - putnmsg(&cfg,usr[i],buf); } + putnmsg(&cfg,usr[i],buf); + } for(i=0;i<qusrs;i++) { getnodedat(qusr[i],&node,0); - putnmsg(&cfg,qusr[i],buf); } - continue; } } + putnmsg(&cfg,qusr[i],buf); + } + continue; + } + } sprintf(buf,text[ChatLineFmt] ,thisnode.misc&NODE_ANON @@ -617,7 +661,8 @@ void sbbs_t::chatsection() if(cfg.total_gurus && chk_ar(cfg.guru[0]->ar,&useron,&client)) { sprintf(str,text[ChatWithGuruInsteadQ],cfg.guru[0]->name); if(!yesno(str)) - break; } + break; + } else break; /* FALL-THROUGH */ @@ -633,14 +678,16 @@ void sbbs_t::chatsection() lncntr=0; // if(gurubuf) // free(gurubuf); - return; } + return; + } action=NODE_CHAT; if(!(useron.misc&EXPERT) || useron.misc&(WIP|HTML) || (useron.misc&RIP && !no_rip_menu)) { menu("chat"); } ASYNC; - bputs(text[ChatPrompt]); } + bputs(text[ChatPrompt]); + } // if(gurubuf) // free(gurubuf); } @@ -671,14 +718,17 @@ bool sbbs_t::sysop_page(void) bprintf(text[PagingGuru],cfg.sys_op); external(cmdstr(cfg.page[i]->cmd,nulstr,nulstr,NULL) ,cfg.page[i]->misc&IO_INTS ? EX_OUTL|EX_OUTR|EX_INR - : EX_OUTL); } + : EX_OUTL); + } else if(cfg.sys_misc&SM_SHRTPAGE) { bprintf(text[PagingGuru],cfg.sys_op); for(i=0;i<10 && !lkbrd(1);i++) { sbbs_beep(1000,200); mswait(200); - outchar('.'); } - CRLF; } + outchar('.'); + } + CRLF; + } else { sys_status^=SS_SYSPAGE; bprintf(text[SysopPageIsNow] @@ -702,10 +752,12 @@ bool sbbs_t::chan_access(uint cnum) if(!cfg.total_chans || cnum>=cfg.total_chans || !chk_ar(cfg.chan[cnum]->ar,&useron,&client)) { bputs(text[CantAccessThatChannel]); - return(false); } + return(false); + } if(!(useron.exempt&FLAG('J')) && cfg.chan[cnum]->cost>useron.cdt+useron.freecdt) { bputs(text[NotEnoughCredits]); - return(false); } + return(false); + } return(true); } @@ -742,16 +794,19 @@ void sbbs_t::privchat(bool local) return; if(n==cfg.node_num) { bputs(text[NoNeedToPageSelf]); - return; } + return; + } getnodedat(n,&node,0); if(node.action==NODE_PCHT && node.aux!=cfg.node_num) { bprintf(text[NodeNAlreadyInPChat],n); - return; } + return; + } if((node.action!=NODE_PAGE || node.aux!=cfg.node_num) && node.misc&NODE_POFF && !SYSOP) { bprintf(text[CantPageNode],node.misc&NODE_ANON ? text[UNKNOWN_USER] : username(&cfg,node.useron,tmp)); - return; } + return; + } if(node.action!=NODE_PAGE) { bprintf(text[PagingUser] ,node.misc&NODE_ANON ? text[UNKNOWN_USER] : username(&cfg,node.useron,tmp) @@ -762,7 +817,8 @@ void sbbs_t::privchat(bool local) putnmsg(&cfg,n,str); sprintf(str,"%s paged %s on node %d to private chat" ,useron.alias,username(&cfg,node.useron,tmp),n); - logline("C",str); } + logline("C",str); + } if(getnodedat(cfg.node_num,&thisnode,true)==0) { thisnode.action=action=NODE_PAGE; @@ -834,13 +890,15 @@ void sbbs_t::privchat(bool local) if((in=sopen(inpath,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO,DEFFILEMODE))==-1) { close(out); errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_DENYNONE|O_CREAT); - return; } + return; + } if((p=(char *)malloc(PCHAT_LEN))==NULL) { close(in); close(out); errormsg(WHERE,ERR_ALLOC,str,PCHAT_LEN); - return; } + return; + } memset(p,0,PCHAT_LEN); write(in,p,PCHAT_LEN); write(out,p,PCHAT_LEN); @@ -889,7 +947,8 @@ void sbbs_t::privchat(bool local) ,sectostr(timeleft,tmp) ,thisnode.misc&NODE_NMSG ? 'M':' '); CRLF; - local_y=14; } + local_y=14; + } while(online && (local || !(sys_status&SS_ABORT))) { lncntr=0; @@ -907,7 +966,9 @@ void sbbs_t::privchat(bool local) if(echo) backspace(); localchar--; - localbuf[localline][localchar]=0; } } + localbuf[localline][localchar]=0; + } + } else if(ch==TAB) { if(echo) outchar(' '); @@ -916,7 +977,9 @@ void sbbs_t::privchat(bool local) while(localchar<78 && localchar%8) { if(echo) outchar(' '); - localbuf[localline][localchar++]=' '; } } + localbuf[localline][localchar++]=' '; + } + } else if(ch==CTRL_R) { if(sys_status&SS_SPLITP) { CLS; @@ -951,7 +1014,8 @@ void sbbs_t::privchat(bool local) if(ch!=CR) { if(echo) outchar(ch); - localbuf[localline][localchar]=ch; } + localbuf[localline][localchar]=ch; + } if(ch==CR || (localchar>68 && ch==' ') || ++localchar>78) { @@ -968,9 +1032,11 @@ void sbbs_t::privchat(bool local) for(x=13,y=0;x<rows;x++,y++) { rprintf("\x1b[%d;1H\x1b[K",x+1); if(y<=localline) - bprintf("%s\r\n",localbuf[y]); } + bprintf("%s\r\n",localbuf[y]); + } ansi_gotoxy(1,local_y=(15+localline)); - localline=0; } + localline=0; + } else { if(localline>=4) for(i=0;i<4;i++) @@ -1027,18 +1093,23 @@ void sbbs_t::privchat(bool local) if(remotechar) { backspace(); remotechar--; - remotebuf[remoteline][remotechar]=0; } } + remotebuf[remoteline][remotechar]=0; + } + } else if(ch==TAB) { outchar(' '); remotebuf[remoteline][remotechar]=' '; remotechar++; while(remotechar<78 && remotechar%8) { outchar(' '); - remotebuf[remoteline][remotechar++]=' '; } } + remotebuf[remoteline][remotechar++]=' '; + } + } else if(ch>=' ' || ch==CR) { if(ch!=CR) { outchar(ch); - remotebuf[remoteline][remotechar]=ch; } + remotebuf[remoteline][remotechar]=ch; + } if(ch==CR || (remotechar>68 && ch==' ') || ++remotechar>78) { @@ -1055,9 +1126,11 @@ void sbbs_t::privchat(bool local) for(i=0;i<12;i++) { bprintf("\x1b[%d;1H\x1b[K",i+1); if(i<=remoteline) - bprintf("%s\r\n",remotebuf[i]); } + bprintf("%s\r\n",remotebuf[i]); + } remoteline=0; - ansi_gotoxy(1, remote_y=6); } + ansi_gotoxy(1, remote_y=6); + } else { if(remoteline>=4) for(i=0;i<4;i++) @@ -1155,7 +1228,8 @@ int sbbs_t::getnodetopage(int all, int telegram) if(lastnodemsg) { getnodedat(lastnodemsg,&node,0); if(node.status!=NODE_INUSE && !SYSOP) - lastnodemsg=1; } + lastnodemsg=1; + } for(j=0,i=1;i<=cfg.sys_nodes && i<=cfg.sys_lastnode;i++) { getnodedat(i,&node,0); if(i==cfg.node_num) @@ -1163,14 +1237,17 @@ int sbbs_t::getnodetopage(int all, int telegram) if(node.status==NODE_INUSE || (SYSOP && node.status==NODE_QUIET)) { if(!lastnodemsg) lastnodemsg=i; - j++; } } + j++; + } + } if(!lastnodemsguser[0]) sprintf(lastnodemsguser,"%u",lastnodemsg); if(!j && !telegram) { bputs(text[NoOtherActiveNodes]); - return(0); } + return(0); + } if(all) sprintf(str,text[NodeToSendMsgTo],lastnodemsg); @@ -1190,15 +1267,18 @@ int sbbs_t::getnodetopage(int all, int telegram) getnodedat(j,&node,0); if(node.status!=NODE_INUSE && !SYSOP) { bprintf(text[NodeNIsNotInUse],j); - return(0); } + return(0); + } if(telegram && node.misc&(NODE_POFF|NODE_ANON) && !SYSOP) { bprintf(text[CantPageNode],node.misc&NODE_ANON ? text[UNKNOWN_USER] : username(&cfg,node.useron,tmp)); - return(0); } + return(0); + } strcpy(lastnodemsguser,str); if(telegram) return(node.useron); - return(j); } + return(j); + } if(all && !stricmp(str,"ALL")) return(-1); @@ -1206,7 +1286,9 @@ int sbbs_t::getnodetopage(int all, int telegram) j=userdatdupe(0,U_HANDLE,LEN_HANDLE,str+1,0); if(!j) { bputs(text[UnknownUser]); - return(0); } } + return(0); + } + } else if(str[0]=='#') j=atoi(str+1); else @@ -1219,7 +1301,8 @@ int sbbs_t::getnodetopage(int all, int telegram) l=ahtoul(tmp); if(l&(DELETED|INACTIVE)) { /* Deleted or Inactive User */ bputs(text[UnknownUser]); - return(0); } + return(0); + } for(i=1;i<=cfg.sys_nodes && i<=cfg.sys_lastnode;i++) { getnodedat(i,&node,0); @@ -1228,14 +1311,18 @@ int sbbs_t::getnodetopage(int all, int telegram) if(telegram && node.misc&NODE_POFF && !SYSOP) { bprintf(text[CantPageNode],node.misc&NODE_ANON ? text[UNKNOWN_USER] : username(&cfg,node.useron,tmp)); - return(0); } + return(0); + } if(telegram) return(j); strcpy(lastnodemsguser,str); - return(i); } } + return(i); + } + } if(telegram) { strcpy(lastnodemsguser,str); - return(j); } + return(j); + } bputs(text[UserNotFound]); return(0); } @@ -1281,7 +1368,8 @@ void sbbs_t::nodemsg() if(thisnode.misc&NODE_MSGW) getsmsg(useron.number); CRLF; - RESTORELINE; } + RESTORELINE; + } else nodesync(); } @@ -1303,10 +1391,12 @@ void sbbs_t::nodemsg() if(usernumber==1 && useron.rest&FLAG('S')) { /* ! val fback */ bprintf(text[R_Feedback],cfg.sys_op); - break; } + break; + } if(usernumber!=1 && useron.rest&FLAG('E')) { bputs(text[R_Email]); - break; } + break; + } now=time(NULL); bprintf(text[SendingTelegramToUser] ,username(&cfg,usernumber,tmp),usernumber); @@ -1326,12 +1416,14 @@ void sbbs_t::nodemsg() strcat(logbuf," "); strcat(logbuf,line); } - i++; } + i++; + } if(!i) break; if(sys_status&SS_ABORT) { CRLF; - break; } + break; + } putsmsg(&cfg,usernumber,buf); sprintf(str,"%s sent telegram to %s #%u" ,useron.alias,username(&cfg,usernumber,tmp),usernumber); @@ -1369,7 +1461,9 @@ void sbbs_t::nodemsg() sprintf(str,"%s sent message to %s on node %d:" ,useron.alias,username(&cfg,usernumber,tmp),i); logline("C",str); - logline(nulstr,line); } } + logline(nulstr,line); + } + } else { /* ALL */ bputs(text[NodeMsgPrompt]); if(!getstr(line,70,K_LINE)) @@ -1384,7 +1478,8 @@ void sbbs_t::nodemsg() if((node.status==NODE_INUSE || (SYSOP && node.status==NODE_QUIET)) && (SYSOP || !(node.misc&NODE_POFF))) - putnmsg(&cfg,i,buf); } + putnmsg(&cfg,i,buf); + } sprintf(str,"%s sent message to all nodes",useron.alias); logline("C",str); logline(nulstr,line); @@ -1394,14 +1489,17 @@ void sbbs_t::nodemsg() bputs("Chat\r\n"); if(action==NODE_PCHT) { /* already in pchat */ done=1; - break; } + break; + } privchat(); action=savenode.action; break; default: bputs("Quit\r\n"); done=1; - break; } } + break; + } + } nodemsg_inside--; if(!nodemsg_inside) sys_status&=~SS_IN_CTRLP; @@ -1434,9 +1532,12 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) errormsg(WHERE,ERR_ALLOC,nulstr,512); while(i) { i--; - free(answer[i]); } + free(answer[i]); + } sys_status&=~SS_GURUCHAT; - return; } } + return; + } + } ptr=gurubuf; len=strlen(gurubuf); strupr(line); @@ -1449,17 +1550,20 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) continue; if(!isalnum(line[i]) && line[i+1]=='?') /* fix "WHAT ?" */ continue; - cstr[k++]=line[i]; } + cstr[k++]=line[i]; + } cstr[k]=0; while(k) { k--; if(!isalnum(cstr[k])) continue; - break; } + break; + } if(k<1) { for(i=0;i<100;i++) free(answer[i]); - return; } + return; + } if(cstr[k+1]=='?') k++; cstr[k+1]=0; @@ -1469,7 +1573,9 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) if(!guruexp(&ptr,cstr)) { while(*ptr && *ptr!='(' && ptr<gurubuf+len) ptr++; - continue; } } + continue; + } + } else { while(*ptr && *ptr!=LF && ptr<gurubuf+len) /* skip LF after ')' */ ptr++; @@ -1486,13 +1592,17 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) ptr++; /* skip \ */ while(*ptr && *ptr<' ') ptr++; /* skip [CR]LF */ answer[answers][i++]=CR; - answer[answers][i++]=LF; } } + answer[answers][i++]=LF; + } + } answer[answers][i]=0; if(!strlen(answer[answers]) || answer[answers][0]=='(') { ptr-=strlen(answer[answers]); - break; } + break; + } while(*ptr && *ptr<' ') ptr++; /* skip [CR]LF */ - answers++; } + answers++; + } if(answers==100) while(*ptr && *ptr!='(' && ptr<gurubuf+len) ptr++; @@ -1622,10 +1732,13 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) break; case '_': mswait(500); - break; } - k=strlen(theanswer); } + break; + } + k=strlen(theanswer); + } else - theanswer[k++]=answer[i][j]; } + theanswer[k++]=answer[i][j]; + } theanswer[k]=0; mswait(500+sbbs_random(1000)); /* thinking time */ if(action!=NODE_MCHT) { @@ -1639,13 +1752,17 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) while(j) { outchar(97+sbbs_random(26)); mswait(25+sbbs_random(150)); - j--; } + j--; + } if(sbbs_random(100)) { mswait(100+sbbs_random(300)); while(c) { backspace(); mswait(50+sbbs_random(50)); - c--; } } } + c--; + } + } + } outchar(theanswer[i]); if(theanswer[i]==theanswer[i+1]) mswait(25+sbbs_random(50)); @@ -1653,11 +1770,13 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) mswait(25+sbbs_random(150)); if(theanswer[i]==' ') mswait(sbbs_random(50)); - } } + } + } else { mswait(strlen(theanswer)*100); bprintf(text[ChatLineFmt],cfg.guru[gurunum]->name - ,cfg.sys_nodes+1,':',theanswer); } + ,cfg.sys_nodes+1,':',theanswer); + } CRLF; sprintf(str,"%sguru.log",cfg.logs_dir); if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) @@ -1665,7 +1784,8 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) else { if(action==NODE_MCHT) { sprintf(str,"[Multi] "); - write(file,str,strlen(str)); } + write(file,str,strlen(str)); + } sprintf(str,"%s:\r\n",sys_status&SS_USERON ? useron.alias : "UNKNOWN"); write(file,str,strlen(str)); @@ -1676,10 +1796,13 @@ void sbbs_t::guruchat(char* line, char* gurubuf, int gurunum, char* last_answer) write(file,str,strlen(str)); write(file,theanswer,strlen(theanswer)); write(file,crlf,2); - close(file); } + close(file); + } if(hu) hangup(); - break; } } + break; + } + } for(i=0;i<100;i++) free(answer[i]); } @@ -1697,7 +1820,8 @@ bool sbbs_t::guruexp(char **ptrptr, char *line) if((**ptrptr)==')') { /* expressions of () are always result */ (*ptrptr)++; - return(true); } + return(true); + } while((**ptrptr)!=')' && (**ptrptr)) { if((**ptrptr)=='[') { (*ptrptr)++; @@ -1713,24 +1837,30 @@ bool sbbs_t::guruexp(char **ptrptr, char *line) free(ar); if(!c && _and) { result=false; - break; } + break; + } if(c && _or) { result=true; - break; } + break; + } if(c) result=true; - continue; } + continue; + } if((**ptrptr)=='(') { (*ptrptr)++; c=guruexp(&(*ptrptr),line); if(!c && _and) { result=false; - break; } + break; + } if(c && _or) { result=true; - break; } + break; + } if(c) - result=true; } + result=true; + } if((**ptrptr)==')') break; c=0; @@ -1738,52 +1868,64 @@ bool sbbs_t::guruexp(char **ptrptr, char *line) (*ptrptr)++; while((**ptrptr)!='|' && (**ptrptr)!='&' && (**ptrptr)!=')' &&(**ptrptr)) { str[c++]=(**ptrptr); - (*ptrptr)++; } + (*ptrptr)++; + } str[c]=0; if((**ptrptr)=='|') { if(!c && result) break; _and=false; - _or=true; } + _or=true; + } else if((**ptrptr)=='&') { if(!c && !result) break; _and=true; - _or=false; } + _or=false; + } if(!c) { /* support ((exp)op(exp)) */ (*ptrptr)++; - continue; } + continue; + } if((**ptrptr)!=')') (*ptrptr)++; c=0; /* c now used for start line flag */ if(str[strlen(str)-1]=='^') { /* ^signifies start of line only */ str[strlen(str)-1]=0; - c=true; } + c=true; + } if(str[strlen(str)-1]=='~') { /* ~signifies non-isolated word */ str[strlen(str)-1]=0; cp=strstr(line,str); if(c && cp!=line) - cp=0; } + cp=0; + } else { cp=strstr(line,str); if(cp && c) { if(cp!=line || isalnum(*(cp+strlen(str)))) - cp=0; } + cp=0; + } else { /* must be isolated word */ while(cp) if((cp!=line && isalnum(*(cp-1))) || isalnum(*(cp+strlen(str)))) cp=strstr(cp+strlen(str),str); else - break; } } + break; + } + } if(!cp && _and) { result=false; - break; } + break; + } if(cp && _or) { result=true; - break; } + break; + } if(cp) - result=true; } + result=true; + } nest=0; while((**ptrptr)!=')' && (**ptrptr)) { /* handle nested exp */ if((**ptrptr)=='(') /* (TRUE|(IGNORE)) */ @@ -1791,7 +1933,9 @@ bool sbbs_t::guruexp(char **ptrptr, char *line) (*ptrptr)++; while((**ptrptr)==')' && nest && (**ptrptr)) { nest--; - (*ptrptr)++; } } + (*ptrptr)++; + } + } (*ptrptr)++; /* skip over ')' */ return(result); } @@ -1815,7 +1959,9 @@ void sbbs_t::localguru(char *gurubuf, int gurunum) ch=sbbs_random(25)+25; while(ch--) { mswait(200); - outchar('.'); } } + outchar('.'); + } + } bprintf(text[SysopIsHere],cfg.guru[gurunum]->name); if(getnodedat(cfg.node_num,&thisnode,true)==0) { thisnode.aux=gurunum; diff --git a/src/sbbs3/chk_ar.cpp b/src/sbbs3/chk_ar.cpp index 2fe3cef1992a4f10cf8a325e98027e059c8ba91f..b6881a4e09a720c42b1f538502cbd2bd274fd054 100644 --- a/src/sbbs3/chk_ar.cpp +++ b/src/sbbs3/chk_ar.cpp @@ -56,15 +56,18 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) if((**ptrptr)==AR_OR) { _or=true; - (*ptrptr)++; } + (*ptrptr)++; + } if((**ptrptr)==AR_NOT) { _not=true; - (*ptrptr)++; } + (*ptrptr)++; + } if((**ptrptr)==AR_EQUAL) { equal=true; - (*ptrptr)++; } + (*ptrptr)++; + } if((result && _or) || (!result && !_or)) break; @@ -79,7 +82,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!(**ptrptr)) break; - continue; } + continue; + } artype=(**ptrptr); switch(artype) { @@ -100,7 +104,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) break; default: (*ptrptr)++; - break; } + break; + } n=(**ptrptr); i=(*(short *)*ptrptr); @@ -112,7 +117,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessLevel]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_AGE: age=getage(&cfg,user->birth); @@ -122,7 +128,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessAge]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_BPS: if((equal && cur_rate!=i) || (!equal && cur_rate<i)) @@ -132,7 +139,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessBPS]; - noaccess_val=i; } + noaccess_val=i; + } break; case AR_ANSI: if(!(user->misc&ANSI)) @@ -235,7 +243,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessDay]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_CREDIT: l=(ulong)i*1024UL; @@ -247,7 +256,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessCredit]; - noaccess_val=l; } + noaccess_val=l; + } break; case AR_NODE: if((equal && cfg.node_num!=n) || (!equal && cfg.node_num<n)) @@ -256,7 +266,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessNode]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_USER: if((equal && user->number!=i) || (!equal && user->number<i)) @@ -266,7 +277,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessUser]; - noaccess_val=i; } + noaccess_val=i; + } break; case AR_GROUP: if((equal @@ -280,7 +292,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessGroup]; - noaccess_val=i+1; } + noaccess_val=i+1; + } break; case AR_SUB: if((equal && cursubnum!=i) || (!equal && cursubnum<i)) @@ -290,7 +303,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessSub]; - noaccess_val=i+1; } + noaccess_val=i+1; + } break; case AR_SUBCODE: if(cursubnum>=cfg.total_subs @@ -315,7 +329,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessLib]; - noaccess_val=i+1; } + noaccess_val=i+1; + } break; case AR_DIR: if((equal && curdirnum!=i) || (!equal && curdirnum<i)) @@ -325,7 +340,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessDir]; - noaccess_val=i+1; } + noaccess_val=i+1; + } break; case AR_DIRCODE: if(curdirnum>=cfg.total_dirs @@ -347,7 +363,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessExpire]; - noaccess_val=i; } + noaccess_val=i; + } break; case AR_RANDOM: n=sbbs_random(i+1); @@ -393,7 +410,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessTimeLeft]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_TUSED: if((time(NULL)-logontime)/60<(long)n) @@ -402,7 +420,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessTimeUsed]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_TIME: now=time(NULL); @@ -414,7 +433,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) (*ptrptr)++; if(!result) { noaccess_str=text[NoAccessTime]; - noaccess_val=i; } + noaccess_val=i; + } break; case AR_PCR: /* post/call ratio (by percentage) */ if(user->logons>user->posts @@ -424,7 +444,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessPCR]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_UDR: /* up/download byte ratio (by percentage) */ l=user->dlb; @@ -436,7 +457,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessUDR]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_UDFR: /* up/download file ratio (in percentage) */ i=user->dls; @@ -448,7 +470,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessUDFR]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_ULS: if((equal && user->uls!=i) || (!equal && user->uls<i)) @@ -500,7 +523,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessFlag1]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_FLAG2: if((!equal && !(user->flags2&FLAG(n))) @@ -510,7 +534,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessFlag2]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_FLAG3: if((!equal && !(user->flags3&FLAG(n))) @@ -520,7 +545,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessFlag3]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_FLAG4: if((!equal && !(user->flags4&FLAG(n))) @@ -530,7 +556,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessFlag4]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_REST: if((!equal && !(user->rest&FLAG(n))) @@ -540,7 +567,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessRest]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_EXEMPT: if((!equal && !(user->exempt&FLAG(n))) @@ -550,7 +578,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessExempt]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_SEX: if(user->sex!=n) @@ -559,7 +588,8 @@ bool sbbs_t::ar_exp(const uchar **ptrptr, user_t* user, client_t* client) result=!_not; if(!result) { noaccess_str=text[NoAccessSex]; - noaccess_val=n; } + noaccess_val=n; + } break; case AR_SHELL: if(user->shell>=cfg.total_shells @@ -670,7 +700,8 @@ void sbbs_t::getusrdirs() if(cfg.dir[l]->lib!=i) continue; if(!chk_ar(cfg.dir[l]->ar,&useron,&client)) continue; - usrdir[j][k++]=l; } + usrdir[j][k++]=l; + } usrdirs[j]=k; if(!k) /* No dirs accessible in lib */ continue; diff --git a/src/sbbs3/con_hi.cpp b/src/sbbs3/con_hi.cpp index c0e5f35dc64c0db61d68e11eb87f99b044ce6232..04949788fa1b1647fb60fc3ef3e03258c541c3ec 100644 --- a/src/sbbs3/con_hi.cpp +++ b/src/sbbs3/con_hi.cpp @@ -69,7 +69,8 @@ int sbbs_t::uselect(int add, uint n, const char *title, const char *item, const bprintf(text[SelectItemHdr],title); uselect_num[uselect_total++]=n; bprintf(text[SelectItemFmt],uselect_total,item); - return(0); } + return(0); + } if(!uselect_total) return(-1); @@ -92,7 +93,8 @@ int sbbs_t::uselect(int add, uint n, const char *title, const char *item, const return(uselect_num[u]); if(n<t) return(uselect_num[n]); - return(-1); } + return(-1); + } return(uselect_num[i-1]); } diff --git a/src/sbbs3/data.cpp b/src/sbbs3/data.cpp index 42b1363f01da40606911fb41cfcb84fafba4e31e..5942fb039cb1d4ccc585d1f76cbd816376b6e826 100644 --- a/src/sbbs3/data.cpp +++ b/src/sbbs3/data.cpp @@ -58,7 +58,8 @@ uint sbbs_t::finduser(char *instr) if(i>0) { username(&cfg, i,str2); if(str2[0] && strcmp(str2,"DELETED USER")) - return(i); } + return(i); + } strcpy(str,instr); strupr(str); SAFEPRINTF(str3,"%suser/name.dat",cfg.data_dir); @@ -66,7 +67,8 @@ uint sbbs_t::finduser(char *instr) return(0); if((stream=fnopen(&file,str3,O_RDONLY))==NULL) { errormsg(WHERE,ERR_OPEN,str3,O_RDONLY); - return(0); } + return(0); + } SAFEPRINTF(ynq,"%.2s",text[YN]); ynq[2]='Q'; ynq[3]=0; @@ -85,21 +87,28 @@ uint sbbs_t::finduser(char *instr) strupr(str2); if(pass==1 && !strcmp(str,str2)) { fclose(stream); - return((l/(LEN_ALIAS+2))+1); } + return((l/(LEN_ALIAS+2))+1); + } if(pass==2 && strstr(str2,str)) { bprintf(text[DoYouMeanThisUserQ],str3 ,(uint)(l/(LEN_ALIAS+2))+1); c=(char)getkeys(ynq,0); if(sys_status&SS_ABORT) { fclose(stream); - return(0); } + return(0); + } if(c==text[YN][0]) { fclose(stream); - return((l/(LEN_ALIAS+2))+1); } + return((l/(LEN_ALIAS+2))+1); + } if(c=='Q') { fclose(stream); - return(0); } } } - pass++; } + return(0); + } + } + } + pass++; + } bputs(text[UnknownUser]); fclose(stream); return(0); @@ -120,10 +129,12 @@ int sbbs_t::getuserxfers(int fromuser, int destuser, char *fname) return(0); if(!flength(str)) { remove(str); - return(0); } + return(0); + } if((stream=fnopen(&file,str,O_RDONLY))==NULL) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return(0); } + return(0); + } while(!ferror(stream)) { if(!fgets(str,81,stream)) break; @@ -133,7 +144,8 @@ int sbbs_t::getuserxfers(int fromuser, int destuser, char *fname) else if(fromuser && atoi(str+18)==fromuser) found++; else if(destuser && atoi(str)==destuser) - found++; } + found++; + } fclose(stream); return(found); } @@ -273,7 +285,8 @@ ulong sbbs_t::gettimeleft(bool handle_out_of_time) +(cfg.val_expire[cfg.level_expireto[useron.level]]*24*60*60); else useron.expire=0; - useron.level=cfg.val_level[cfg.level_expireto[useron.level]]; } + useron.level=cfg.val_level[cfg.level_expireto[useron.level]]; + } else { if(cfg.level_misc[useron.level]&LEVEL_EXPTOLVL) useron.level=cfg.level_expireto[useron.level]; diff --git a/src/sbbs3/date_str.c b/src/sbbs3/date_str.c index 492703ce290278e3850c09b9c51f64ff10eb04ac..bf419999d24253be6e43bb160e5e99bbfa27f177 100644 --- a/src/sbbs3/date_str.c +++ b/src/sbbs3/date_str.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -80,10 +80,12 @@ time_t DLLCALL dstrtounix(scfg_t* cfg, char *instr) tm.tm_year+=100; if(cfg->sys_misc&SM_EURODATE) { tm.tm_mon=((p[3]&0xf)*10)+(p[4]&0xf); - tm.tm_mday=((p[0]&0xf)*10)+(p[1]&0xf); } + tm.tm_mday=((p[0]&0xf)*10)+(p[1]&0xf); + } else { tm.tm_mon=((p[0]&0xf)*10)+(p[1]&0xf); - tm.tm_mday=((p[3]&0xf)*10)+(p[4]&0xf); } + tm.tm_mday=((p[3]&0xf)*10)+(p[4]&0xf); + } if (tm.tm_mon) tm.tm_mon--; /* zero-based month field */ tm.tm_isdst=-1; /* Do not adjust for DST */ @@ -106,7 +108,8 @@ char* DLLCALL unixtodstr(scfg_t* cfg, time_t unix_time, char *str) } if(tm.tm_mon>11) { /* DOS leap year bug */ tm.tm_mon=0; - tm.tm_year++; } + tm.tm_year++; + } if(tm.tm_mday>31) tm.tm_mday=1; if(cfg->sys_misc&SM_EURODATE) @@ -114,7 +117,8 @@ char* DLLCALL unixtodstr(scfg_t* cfg, time_t unix_time, char *str) ,TM_YEAR(tm.tm_year)); else sprintf(str,"%02u/%02u/%02u",tm.tm_mon+1,tm.tm_mday - ,TM_YEAR(tm.tm_year)); } + ,TM_YEAR(tm.tm_year)); + } return(str); } diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp index 91036db2053755fc77112f70d0ca0529d37b1fb2..7fb194fb2584dc2c73dafb93109efd4edb68bda1 100644 --- a/src/sbbs3/email.cpp +++ b/src/sbbs3/email.cpp @@ -62,24 +62,29 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) if(useron.etoday>=cfg.level_emailperday[useron.level] && !SYSOP) { bputs(text[TooManyEmailsToday]); - return(false); } + return(false); + } if(usernumber==1 && useron.rest&FLAG('S') && (cfg.node_valuser!=1 || useron.fbacks || useron.emails)) { /* ! val fback */ bprintf(text[R_Feedback],cfg.sys_op); - return(false); } + return(false); + } if(usernumber!=1 && useron.rest&FLAG('E') && (cfg.node_valuser!=usernumber || useron.fbacks || useron.emails)) { bputs(text[R_Email]); - return(false); } + return(false); + } if(!usernumber) { bputs(text[UnknownUser]); - return(false); } + return(false); + } getuserrec(&cfg,usernumber,U_MISC,8,str); l=ahtoul(str); if(l&(DELETED|INACTIVE)) { /* Deleted or Inactive User */ bputs(text[UnknownUser]); - return(false); } + return(false); + } if(l&NETMAIL && cfg.sys_misc&SM_FWDTONET) { getuserrec(&cfg,usernumber,U_NETMAIL,LEN_NETMAIL,str); bprintf(text[UserNetMail],str); @@ -94,7 +99,8 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) if(usernumber==1 && useron.fbacks && fexist(str)) { exec_bin("feedback",&main_csi); if(main_csi.logic!=LOGIC_TRUE) - return(false); } + return(false); + } if(cfg.sys_misc&SM_ANON_EM && useron.exempt&FLAG('A') && !noyes(text[AnonymousQ])) @@ -121,7 +127,8 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) if(fexistcase(str2)) { bputs(text[FileAlreadyThere]); remove(msgpath); - return(false); } + return(false); + } { /* Remote */ xfer_prot_menu(XFER_UPLOAD); mnemonics(text[ProtocolOrQuit]); @@ -129,12 +136,14 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) for(x=0;x<cfg.total_prots;x++) if(cfg.prot[x]->ulcmd[0] && chk_ar(cfg.prot[x]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[x]->mnemonic); - strcat(str,tmp); } + strcat(str,tmp); + } ch=(char)getkeys(str,0); if(ch=='Q' || sys_status&SS_ABORT) { bputs(text[Aborted]); remove(msgpath); - return(false); } + return(false); + } for(x=0;x<cfg.total_prots;x++) if(cfg.prot[x]->ulcmd[0] && cfg.prot[x]->mnemonic==ch && chk_ar(cfg.prot[x]->ar,&useron,&client)) @@ -151,20 +160,24 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) else { bprintf(text[FileNotReceived],title); remove(msgpath); - return(false); } } + return(false); + } + } bputs(text[WritingIndx]); if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) { errormsg(WHERE,ERR_OPEN,"MAIL",i); - return(false); } + return(false); + } sprintf(smb.file,"%smail", cfg.data_dir); smb.retry_time=cfg.smb_retry_time; smb.subnum=INVALID_SUB; if((i=smb_open(&smb))!=0) { smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return(false); } + return(false); + } if(smb_fgetlength(smb.shd_fp)<1) { /* Create it if it doesn't exist */ smb.status.max_crcs=cfg.mail_maxcrcs; @@ -175,13 +188,16 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_CREATE,smb.file,i,smb.last_error); - return(false); } } + return(false); + } + } if((i=smb_locksmbhdr(&smb))!=0) { smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); - return(false); } + return(false); + } length=flength(msgpath)+2; /* +2 for translation string */ @@ -190,14 +206,16 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_LEN,msgpath,length); - return(false); } + return(false); + } if((i=smb_open_da(&smb))!=0) { smb_unlocksmbhdr(&smb); smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return(false); } + return(false); + } if(cfg.sys_misc&SM_FASTMAIL) offset=smb_fallocdat(&smb,length,1); else @@ -211,7 +229,8 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_OPEN,msgpath,O_RDONLY|O_BINARY); - return(false); } + return(false); + } setvbuf(instream,NULL,_IOFBF,2*1024); smb_fseek(smb.sdt_fp,offset,SEEK_SET); @@ -227,9 +246,11 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) buf[j-1]=buf[j-2]=0; if(cfg.mail_maxcrcs) { for(i=0;i<j;i++) - crc=ucrc32(buf[i],crc); } + crc=ucrc32(buf[i],crc); + } smb_fwrite(&smb,buf,j,smb.sdt_fp); - x=SDT_BLOCK_LEN; } + x=SDT_BLOCK_LEN; + } smb_fflush(smb.sdt_fp); fclose(instream); crc=~crc; @@ -314,9 +335,12 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode) && (node.status==NODE_INUSE || node.status==NODE_QUIET)) { sprintf(str,text[EmailNodeMsg],cfg.node_num,useron.alias); putnmsg(&cfg,i,str); - break; } } + break; + } + } if(i>cfg.sys_nodes) { /* User wasn't online, so leave short msg */ sprintf(str,text[UserSentYouMail],useron.alias); - putsmsg(&cfg,usernumber,str); } + putsmsg(&cfg,usernumber,str); + } return(true); } diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp index ef30d6c6f73de3f0244f216a0dcc666044dacb3a..abee3dbc8b356603454d1dfdb24c56cf8b13a435 100644 --- a/src/sbbs3/exec.cpp +++ b/src/sbbs3/exec.cpp @@ -118,7 +118,8 @@ char ** sbbs_t::getstrvar(csi_t *bin, int32_t name) for(i=0;i<global_str_vars;i++) if(global_str_var_name[i]==name) return(&(global_str_var[i])); - return(NULL); } + return(NULL); + } return((char **)&sysvar_p[sysvar_pi++]); } @@ -450,7 +451,8 @@ int32_t * sbbs_t::getintvar(csi_t *bin, int32_t name) for(i=0;i<global_int_vars;i++) if(global_int_var_name[i]==name) return(&global_int_var[i]); - return(NULL); } + return(NULL); +} return(&sysvar_l[sysvar_li++]); } @@ -524,7 +526,9 @@ char * sbbs_t::copystrvar(csi_t *csi, char *p, char *str) if((np=(char*)realloc(p,strlen(str)+1))==NULL) errormsg(WHERE,ERR_ALLOC,"variable",strlen(str)+1); else - p=np; } } + p=np; + } + } if(p) strcpy(p,str); return(p); @@ -768,7 +772,8 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) csi->ip++; skipto(csi,CS_ENDIF); csi->ip++; - continue; } + continue; + } if(inst==CS_ELSEORENDIF && (*csi->ip==CS_ELSE || *csi->ip==CS_ENDIF)) @@ -784,29 +789,34 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) csi->ip+=4; /* Skip variable name */ skipto(csi,CS_END_SWITCH); csi->ip++; - continue; } + continue; + } if(*csi->ip==CS_CASE) { csi->ip++; csi->ip+=4; /* Skip value */ skipto(csi,CS_NEXTCASE); - continue; } + continue; + } if(*csi->ip==CS_CMDKEY || *csi->ip==CS_CMDCHAR) { csi->ip+=2; skipto(csi,CS_END_CMD); csi->ip++; - continue; } + continue; + } if(*csi->ip==CS_CMDSTR || *csi->ip==CS_CMDKEYS) { csi->ip++; /* skip inst */ while(*(csi->ip++)); /* skip string */ skipto(csi,CS_END_CMD); csi->ip++; - continue; } + continue; + } if(*csi->ip>=CS_FUNCTIONS) { csi->ip++; - continue; } + continue; + } if(*csi->ip>=CS_MISC) { switch(*csi->ip) { @@ -883,7 +893,8 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) csi->ip++; /* Skip length */ default: csi->ip+=8; /* Skip two variable names or var & val */ - continue; } + continue; + } case CS_FIO_FUNCTION: csi->ip++; @@ -932,7 +943,8 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) default: csi->ip+=4; /* File handle */ csi->ip+=4; /* Variable */ - continue; } + continue; + } case CS_NET_FUNCTION: csi->ip++; @@ -975,7 +987,8 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) default: csi->ip+=4; /* socket */ - continue; } + continue; + } case CS_COMPARE_ARS: csi->ip++; @@ -998,8 +1011,10 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) csi->ip+=7; // inst, var, offset, len break; default: - csi->ip++; } - continue; } + csi->ip++; + } + continue; + } if(*csi->ip==CS_ONE_MORE_BYTE) { if(inst==CS_END_LOOP && *(csi->ip+1)==CS_END_LOOP) @@ -1013,40 +1028,48 @@ void sbbs_t::skipto(csi_t *csi, uchar inst) csi->ip+=2; } - continue; } + continue; + } if(*csi->ip==CS_TWO_MORE_BYTES) { csi->ip++; /* skip extension */ csi->ip++; /* skip instruction */ csi->ip++; /* skip argument */ - continue; } + continue; + } if(*csi->ip==CS_THREE_MORE_BYTES) { csi->ip++; /* skip extension */ csi->ip++; /* skip instruction */ csi->ip+=2; /* skip argument */ - continue; } + continue; + } if(*csi->ip==CS_STR_FUNCTION) { csi->ip++; /* skip extension */ csi->ip++; /* skip instruction */ while(*(csi->ip++)); /* skip string */ - continue; } + continue; + } if(*csi->ip>=CS_ASCIIZ) { csi->ip++; /* skip inst */ while(*(csi->ip++)); /* skip string */ - continue; } + continue; + } if(*csi->ip>=CS_THREE_BYTE) { csi->ip+=3; - continue; } + continue; + } if(*csi->ip>=CS_TWO_BYTE) { csi->ip+=2; - continue; } + continue; + } - csi->ip++; } + csi->ip++; + } } @@ -1065,10 +1088,12 @@ int sbbs_t::exec(csi_t *csi) cursubnum=INVALID_SUB; if(usrlibs) { curdirnum=usrdir[curlib][curdir[curlib]]; /* Used for ARS */ - path=cfg.dir[usrdir[curlib][curdir[curlib]]]->path; } + path=cfg.dir[usrdir[curlib][curdir[curlib]]]->path; + } else { curdirnum=INVALID_DIR; - path=nulstr; } + path=nulstr; + } now=time(NULL); if(csi->ip>=csi->cs+csi->length) @@ -1101,32 +1126,40 @@ int sbbs_t::exec(csi_t *csi) if(text[i]!=text_sav[i]) { if(text[i]!=nulstr) free(text[i]); - text[i]=text_sav[i]; } + text[i]=text_sav[i]; + } SAFEPRINTF2(str,"%s%s.dat" ,cfg.ctrl_dir,cmdstr((char*)csi->ip,path,csi->str,(char*)buf)); if((stream=fnopen(&file,str,O_RDONLY))==NULL) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - break; } + break; + } for(i=0;i<TOTAL_TEXT && !feof(stream);i++) { if((text[i]=readtext((long *)NULL,stream,i))==NULL) { i--; - continue; } + continue; + } if(!strcmp(text[i],text_sav[i])) { /* If identical */ free(text[i]); /* Don't alloc */ - text[i]=text_sav[i]; } + text[i]=text_sav[i]; + } else if(text[i][0]==0) { free(text[i]); - text[i]=nulstr; } } + text[i]=nulstr; + } + } if(i<TOTAL_TEXT) { fclose(stream); errormsg(WHERE,ERR_READ,str,TOTAL_TEXT); - break; } + break; + } fclose(stream); csi->logic=LOGIC_TRUE; break; default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - break; } + break; + } while(*(csi->ip++)); /* Find NULL */ return(0); case CS_LOG: @@ -1142,7 +1175,8 @@ int sbbs_t::exec(csi_t *csi) while(*(csi->ip++)); /* Find NULL */ skipto(csi,CS_END_CMD); csi->ip++; - return(0); } + return(0); + } break; case CS_CMDKEYS: for(i=0;csi->ip[i];i++) @@ -1152,7 +1186,8 @@ int sbbs_t::exec(csi_t *csi) while(*(csi->ip++)); /* Find NULL */ skipto(csi,CS_END_CMD); csi->ip++; - return(0); } + return(0); + } break; case CS_GET_TEMPLATE: gettmplt(csi->str,(char*)csi->ip,K_LINE); @@ -1255,9 +1290,11 @@ int sbbs_t::exec(csi_t *csi) break; default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - break; } + break; + } while(*(csi->ip++)); /* Find NULL */ - return(0); } + return(0); + } if(*csi->ip>=CS_THREE_BYTE) { switch(*(csi->ip++)) { @@ -1312,10 +1349,12 @@ int sbbs_t::exec(csi_t *csi) l=getnum(i); if(l<=0) { csi->str[0]=0; - csi->logic=LOGIC_FALSE; } + csi->logic=LOGIC_FALSE; + } else { sprintf(csi->str,"%lu",l); - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } return(0); case CS_TOGGLE_USER_FLAG: @@ -1354,7 +1393,8 @@ int sbbs_t::exec(csi_t *csi) break; default: errormsg(WHERE,ERR_CHK,"user flag type",*(csi->ip-2)); - return(0); } + return(0); + } return(0); case CS_REVERT_TEXT: i=*(ushort *)csi->ip; @@ -1363,19 +1403,24 @@ int sbbs_t::exec(csi_t *csi) for(i=0;i<TOTAL_TEXT;i++) { if(text[i]!=text_sav[i] && text[i]!=nulstr) free(text[i]); - text[i]=text_sav[i]; } - return(0); } + text[i]=text_sav[i]; + } + return(0); + } i--; if(i>=TOTAL_TEXT) { errormsg(WHERE,ERR_CHK,"revert text #",i); - return(0); } + return(0); + } if(text[i]!=text_sav[i] && text[i]!=nulstr) free(text[i]); text[i]=text_sav[i]; return(0); default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - return(0); } } + return(0); + } + } if(*csi->ip>=CS_TWO_BYTE) { switch(*(csi->ip++)) { @@ -1395,16 +1440,19 @@ int sbbs_t::exec(csi_t *csi) || ((*csi->ip)==CS_EDIGIT && csi->cmd&0x80 && isdigit(csi->cmd&0x7f))) { csi->ip++; - return(0); } + return(0); + } if(csi->cmd!=*csi->ip) { csi->ip++; - skipto(csi,CS_END_CMD); } /* skip code */ + skipto(csi,CS_END_CMD); /* skip code */ + } csi->ip++; /* skip key */ return(0); case CS_CMDCHAR: if(csi->cmd!=*csi->ip) { csi->ip++; - skipto(csi,CS_END_CMD); } /* skip code */ + skipto(csi,CS_END_CMD); /* skip code */ + } csi->ip++; /* skip key */ return(0); case CS_NODE_ACTION: @@ -1425,7 +1473,8 @@ int sbbs_t::exec(csi_t *csi) getstr(csi->str,*csi->ip++,0); if(sys_status&SS_ABORT) { csi->str[0]=0; - csi->logic=LOGIC_FALSE; } + csi->logic=LOGIC_FALSE; + } if(csi->str[0]=='/' && csi->str[1]) csi->cmd=csi->str[1]|0x80; else @@ -1467,12 +1516,14 @@ int sbbs_t::exec(csi_t *csi) || ((*csi->ip)==CS_EDIGIT && csi->cmd&0x80 && isdigit(csi->cmd&0x7f))) { csi->ip++; - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } else { if(csi->cmd==*(csi->ip++)) csi->logic=LOGIC_TRUE; else - csi->logic=LOGIC_FALSE; } + csi->logic=LOGIC_FALSE; + } return(0); case CS_COMPARE_CHAR: if(csi->cmd==*(csi->ip++)) @@ -1488,7 +1539,8 @@ int sbbs_t::exec(csi_t *csi) csi->logic=LOGIC_FALSE; if(!csi->str[0]) { csi->ip++; - return(0); } + return(0); + } switch(*(csi->ip++)) { case USER_STRING_ALIAS: if(!isalpha(csi->str[0]) || trashcan(csi->str,"name")) @@ -1597,11 +1649,14 @@ int sbbs_t::exec(csi_t *csi) break; default: errormsg(WHERE,ERR_CHK,"user string type",*(csi->ip-1)); - return(0); } + return(0); + } return(0); default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - return(0); } } + return(0); + } + } /*********************************/ @@ -1653,7 +1708,8 @@ int sbbs_t::exec(csi_t *csi) default: errormsg(WHERE,ERR_CHK,"one byte extended function" ,*(csi->ip-1)); - return(0); } + return(0); + } case CS_CRLF: CRLF; return(0); @@ -1727,7 +1783,8 @@ int sbbs_t::exec(csi_t *csi) if(csi->cmd=='/') { outchar('/'); csi->cmd=getkey(K_UPPER); - csi->cmd|=0x80; } + csi->cmd|=0x80; + } return(0); case CS_GETFILESPEC: if(getfilespec(csi->str)) @@ -1752,7 +1809,8 @@ int sbbs_t::exec(csi_t *csi) break; if(i<cfg.total_shells) { useron.shell=i; - putuserrec(&cfg,useron.number,U_SHELL,8,cfg.shell[i]->code); } + putuserrec(&cfg,useron.number,U_SHELL,8,cfg.shell[i]->code); + } else csi->logic=LOGIC_FALSE; return(0); @@ -1768,7 +1826,8 @@ int sbbs_t::exec(csi_t *csi) break; if(i<cfg.total_xedits) { useron.xedit=i+1; - putuserrec(&cfg,useron.number,U_XEDIT,8,cfg.xedit[i]->code); } + putuserrec(&cfg,useron.number,U_XEDIT,8,cfg.xedit[i]->code); + } else csi->logic=LOGIC_FALSE; return(0); @@ -1780,7 +1839,8 @@ int sbbs_t::exec(csi_t *csi) i=finduser(csi->str); if(i) { csi->logic=LOGIC_TRUE; - username(&cfg,i,csi->str); } + username(&cfg,i,csi->str); + } else csi->logic=LOGIC_FALSE; return(0); @@ -1814,32 +1874,38 @@ int sbbs_t::exec(csi_t *csi) case CS_IF_TRUE: if(csi->logic!=LOGIC_TRUE) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_IF_GREATER: if(csi->logic!=LOGIC_GREATER) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_IF_GREATER_OR_EQUAL: if(csi->logic!=LOGIC_GREATER && csi->logic!=LOGIC_EQUAL) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_IF_LESS: if(csi->logic!=LOGIC_LESS) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_IF_LESS_OR_EQUAL: if(csi->logic!=LOGIC_LESS && csi->logic!=LOGIC_EQUAL) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_IF_FALSE: if(csi->logic==LOGIC_TRUE) { skipto(csi,CS_ELSEORENDIF); - csi->ip++; } + csi->ip++; + } return(0); case CS_ELSE: skipto(csi,CS_ENDIF); @@ -1858,7 +1924,8 @@ int sbbs_t::exec(csi_t *csi) return(0); default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - return(0); } + return(0); + } } bool sbbs_t::select_shell(void) diff --git a/src/sbbs3/execfile.cpp b/src/sbbs3/execfile.cpp index 893ac6ecc3212f48da7129fda60efef3bc77504a..921c8f68893807bf4f2f7290c8abf7c7ea7e6b9c 100644 --- a/src/sbbs3/execfile.cpp +++ b/src/sbbs3/execfile.cpp @@ -65,7 +65,9 @@ int sbbs_t::exec_file(csi_t *csi) if(i<9) outchar(' '); if(i<99) outchar(' '); bprintf(text[CfgLibLstFmt] - ,i+1,cfg.lib[usrlib[i]]->lname); } } + ,i+1,cfg.lib[usrlib[i]]->lname); + } + } sprintf(str,text[JoinWhichLib],curlib+1); mnemonics(str); j=getnum(usrlibs); @@ -74,11 +76,13 @@ int sbbs_t::exec_file(csi_t *csi) if(!j) j=curlib; else - j--; } + j--; + } sprintf(str,"%smenu/dirs%u.*", cfg.text_dir, usrlib[j]+1); if(fexist(str)) { sprintf(str,"dirs%u",usrlib[j]+1); - menu(str); } + menu(str); + } else { CLS; bprintf(text[DirLstHdr], cfg.lib[usrlib[j]]->lname); @@ -90,14 +94,17 @@ int sbbs_t::exec_file(csi_t *csi) ,getfiles(&cfg,usrdir[j][i])); if(i<9) outchar(' '); if(i<99) outchar(' '); - bputs(str); } } + bputs(str); + } + } sprintf(str,text[JoinWhichDir],curdir[j]+1); mnemonics(str); i=getnum(usrdirs[j]); if((int)i==-1) { if(usrlibs==1) return(0); - continue; } + continue; + } if(!i) i=curdir[j]; else @@ -105,7 +112,8 @@ int sbbs_t::exec_file(csi_t *csi) curlib=j; curdir[curlib]=i; csi->logic=LOGIC_TRUE; - return(0); } + return(0); + } return(0); case CS_FILE_GET_DIR_NUM: @@ -114,7 +122,8 @@ int sbbs_t::exec_file(csi_t *csi) i=atoi(csi->str); if(i && i<=usrdirs[curlib] && usrlibs) curdir[curlib]=i-1; - return(0); } + return(0); + } ch=getkey(K_UPPER); outchar(ch); @@ -124,11 +133,13 @@ int sbbs_t::exec_file(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); curdir[curlib]=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { curdir[curlib]=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); i+=ch&0xf; if(i*10<=usrdirs[curlib]) { /* 100+ dirs */ @@ -137,16 +148,20 @@ int sbbs_t::exec_file(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); curdir[curlib]=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { curdir[curlib]=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); - i+=ch&0xf; } + i+=ch&0xf; + } if(i<=usrdirs[curlib]) curdir[curlib]=i-1; - return(0); } + return(0); + } if((ch&0xf)<=(int)usrdirs[curlib] && (ch&0xf) && usrlibs) curdir[curlib]=(ch&0xf)-1; return(0); @@ -157,7 +172,8 @@ int sbbs_t::exec_file(csi_t *csi) i=atoi(csi->str); if(i && i<=usrlibs) curlib=i-1; - return(0); } + return(0); + } ch=getkey(K_UPPER); outchar(ch); @@ -167,16 +183,19 @@ int sbbs_t::exec_file(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); curlib=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { curlib=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); i+=ch&0xf; if(i<=usrlibs) curlib=i-1; - return(0); } + return(0); + } if((ch&0xf)<=(int)usrlibs && (ch&0xf)) curlib=(ch&0xf)-1; return(0); @@ -186,7 +205,8 @@ int sbbs_t::exec_file(csi_t *csi) sprintf(str,"%smenu/libs.*", cfg.text_dir); if(fexist(str)) { menu("libs"); - return(0); } + return(0); + } bputs(text[LibLstHdr]); for(i=0;i<usrlibs && !msgabort();i++) { if(i==curlib) @@ -194,7 +214,8 @@ int sbbs_t::exec_file(csi_t *csi) else outchar(' '); if(i<9) outchar(' '); bprintf(text[LibLstFmt],i+1 - ,cfg.lib[usrlib[i]]->lname,nulstr,usrdirs[i]); } + ,cfg.lib[usrlib[i]]->lname,nulstr,usrdirs[i]); + } return(0); case CS_FILE_SHOW_DIRECTORIES: @@ -203,7 +224,8 @@ int sbbs_t::exec_file(csi_t *csi) if(fexist(str)) { sprintf(str,"dirs%u",usrlib[curlib]+1); menu(str); - return(0); } + return(0); + } CRLF; bprintf(text[DirLstHdr],cfg.lib[usrlib[curlib]]->lname); for(i=0;i<usrdirs[curlib] && !msgabort();i++) { @@ -214,7 +236,8 @@ int sbbs_t::exec_file(csi_t *csi) ,getfiles(&cfg,usrdir[curlib][i])); if(i<9) outchar(' '); if(i<99) outchar(' '); - bputs(str); } + bputs(str); + } return(0); case CS_FILE_LIBRARY_UP: @@ -246,7 +269,8 @@ int sbbs_t::exec_file(csi_t *csi) if(!stricmp(csi->str,cfg.dir[usrdir[i][j]]->code)) { curlib=i; curdir[i]=j; - return(0); } + return(0); + } csi->logic=LOGIC_FALSE; return(0); case CS_FILE_SET_LIBRARY: @@ -291,7 +315,8 @@ int sbbs_t::exec_file(csi_t *csi) if(!usrlibs) return(0); if(useron.rest&FLAG('D')) { bputs(text[R_Download]); - return(0); } + return(0); + } padfname(csi->str,str); strupr(str); if(!listfileinfo(usrdir[curlib][curdir[curlib]],str,FI_DOWNLOAD)) { @@ -307,16 +332,20 @@ int sbbs_t::exec_file(csi_t *csi) for(j=0;j<usrdirs[i];j++) if((s=listfileinfo(usrdir[i][j],str,FI_DOWNLOAD))!=0) if(s==-1 || (!strchr(str,'?') && !strchr(str,'*'))) - return(0); } } + return(0); + } + } return(0); case CS_FILE_DOWNLOAD_USER: /* Download from user dir */ csi->logic=LOGIC_FALSE; if(cfg.user_dir==INVALID_DIR) { bputs(text[NoUserDir]); - return(0); } + return(0); + } if(useron.rest&FLAG('D')) { bputs(text[R_Download]); - return(0); } + return(0); + } CRLF; if(!listfileinfo(cfg.user_dir,nulstr,FI_USERXFER)) bputs(text[NoFilesForYou]); @@ -326,7 +355,8 @@ int sbbs_t::exec_file(csi_t *csi) case CS_FILE_DOWNLOAD_BATCH: if(batdn_total && yesno(text[DownloadBatchQ])) { start_batch_download(); - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } else csi->logic=LOGIC_FALSE; return(0); @@ -343,7 +373,8 @@ int sbbs_t::exec_file(csi_t *csi) if(findfile(&cfg,usrdir[x][y],f.name)) break; if(y<usrdirs[x]) - break; } + break; + } if(x>=usrlibs) return(0); f.dir=usrdir[x][y]; @@ -356,14 +387,16 @@ int sbbs_t::exec_file(csi_t *csi) case CS_FILE_BATCH_CLEAR: if(!batdn_total) { csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } csi->logic=LOGIC_TRUE; for(i=0;i<batdn_total;i++) { f.dir=batdn_dir[i]; f.datoffset=batdn_offset[i]; f.size=batdn_size[i]; strcpy(f.name,batdn_name[i]); - closefile(&f); } + closefile(&f); + } batdn_total=0; return(0); @@ -378,7 +411,8 @@ int sbbs_t::exec_file(csi_t *csi) for(i=0;i<usrdirs[curlib];i++) { if(i==curdir[curlib]) continue; if(listfiles(usrdir[curlib][i],str,0,FL_VIEW)) - break; } + break; + } if(i<usrdirs[curlib]) return(0); bputs(text[SearchingAllLibs]); @@ -386,7 +420,8 @@ int sbbs_t::exec_file(csi_t *csi) if(i==curlib) continue; for(j=0;j<usrdirs[i];j++) if(listfiles(usrdir[i][j],str,0,FL_VIEW)) - return(0); } + return(0); + } csi->logic=LOGIC_FALSE; bputs(text[FileNotFound]); return(0); @@ -395,12 +430,14 @@ int sbbs_t::exec_file(csi_t *csi) csi->logic=LOGIC_FALSE; if(!getfiles(&cfg,usrdir[curlib][curdir[curlib]])) { bputs(text[EmptyDir]); - return(0); } + return(0); + } padfname(csi->str,str); strupr(str); s=listfiles(usrdir[curlib][curdir[curlib]],str,0,0); if(s>1) { - bprintf(text[NFilesListed],s); } + bprintf(text[NFilesListed],s); + } csi->logic=!s; return(0); case CS_FILE_LIST_EXTENDED: /* Extended Information on files */ @@ -420,7 +457,9 @@ int sbbs_t::exec_file(csi_t *csi) for(j=0;j<usrdirs[i];j++) if((s=listfileinfo(usrdir[i][j],str,FI_INFO))!=0) if(s==-1 || (!strchr(str,'?') && !strchr(str,'*'))) - return(0); } } + return(0); + } + } return(0); case CS_FILE_FIND_TEXT: /* Find text in descriptions */ scandirs(FL_FINDDESC); @@ -453,7 +492,8 @@ int sbbs_t::exec_file(csi_t *csi) if(!usrlibs) return(0); if(useron.rest&FLAG('R')) { bputs(text[R_RemoveFiles]); - return(0); } + return(0); + } padfname(csi->str,str); strupr(str); if(!listfileinfo(usrdir[curlib][curdir[curlib]],str,FI_REMOVE)) { @@ -474,7 +514,9 @@ int sbbs_t::exec_file(csi_t *csi) for(j=0;j<usrdirs[i]; j++) if((s=listfileinfo(usrdir[i][j],str,FI_REMOVE))!=0) if(s==-1 || (!strchr(str,'?') && !strchr(str,'*'))) - return(0); } } + return(0); + } + } return(0); } diff --git a/src/sbbs3/execfunc.cpp b/src/sbbs3/execfunc.cpp index 94b7e262c7ff81b14d987f2adbb3597ccc60c854..8378f18a9c88ea582840b2d4360a6dd8e42c7a39 100644 --- a/src/sbbs3/execfunc.cpp +++ b/src/sbbs3/execfunc.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -116,7 +116,8 @@ int sbbs_t::exec_function(csi_t *csi) user_event(EVENT_LOGOFF); menu("logoff"); SYNC; - hangup(); } + hangup(); + } return(0); case CS_LOGOFF_FAST: SYNC; @@ -180,7 +181,8 @@ int sbbs_t::exec_function(csi_t *csi) case CS_MAIL_SEND: /* Send E-mail */ if(strchr(csi->str,'@')) { i=1; - netmail(csi->str,nulstr,0); } + netmail(csi->str,nulstr,0); + } else if((i=finduser(csi->str))!=0 || (cfg.msg_misc&MM_REALNAME && (i=userdatdupe(0,U_NAME,LEN_NAME,csi->str,false))!=0)) email(i,nulstr,nulstr,WM_EMAIL); @@ -195,7 +197,8 @@ int sbbs_t::exec_function(csi_t *csi) bputs(text[EnterNetMailAddress]); if(getstr(str,60,K_LINE)) { netmail(str,nulstr,0); - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } else csi->logic=LOGIC_FALSE; return(0); @@ -204,7 +207,8 @@ int sbbs_t::exec_function(csi_t *csi) bputs(text[EnterNetMailAddress]); if(getstr(str,60,K_LINE)) { netmail(str,nulstr,WM_FILE); - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } else csi->logic=LOGIC_FALSE; return(0); @@ -212,7 +216,8 @@ int sbbs_t::exec_function(csi_t *csi) case CS_MAIL_SEND_FILE: /* Upload Attached File to E-mail */ if(strchr(csi->str,'@')) { i=1; - netmail(csi->str,nulstr,WM_FILE); } + netmail(csi->str,nulstr,WM_FILE); + } else if((i=finduser(csi->str))!=0 || (cfg.msg_misc&MM_REALNAME && (i=userdatdupe(0,U_NAME,LEN_NAME,csi->str,false))!=0)) email(i,nulstr,nulstr,WM_EMAIL|WM_FILE); @@ -272,13 +277,15 @@ int sbbs_t::exec_function(csi_t *csi) bputs(text[ErrorLogHdr]); printfile(str,0); if(!noyes(text[DeleteErrorLogQ])) - remove(str); } + remove(str); + } else bprintf(text[FileDoesNotExist],str); for(i=1;i<=cfg.sys_nodes;i++) { getnodedat(i,&node,0); if(node.errors) - break; } + break; + } if(i<=cfg.sys_nodes || criterrs) { if(!noyes(text[ClearErrCounter])) { for(i=1;i<=cfg.sys_nodes;i++) { @@ -316,7 +323,8 @@ int sbbs_t::exec_function(csi_t *csi) printfile(str,0); CRLF; if(!noyes(text[DeleteGuruLogQ])) - remove(str); } + remove(str); + } return(0); case CS_FILE_SET_ALT_PATH: altul=atoi(csi->str); @@ -330,28 +338,33 @@ int sbbs_t::exec_function(csi_t *csi) getnodedat(i,&node,0); if(node.status==NODE_INUSE || node.status==NODE_QUIET) - break; } + break; + } if(i<=cfg.sys_nodes) { bputs(text[ResortWarning]); - return(0); } + return(0); + } if(!stricmp(csi->str,"ALL")) { /* all libraries */ for(i=0;i<usrlibs;i++) for(j=0;j<usrdirs[i];j++) resort(usrdir[i][j]); - return(0); } + return(0); + } if(!stricmp(csi->str,"LIB")) { /* current library */ for(i=0;i<usrdirs[curlib];i++) resort(usrdir[curlib][i]); - return(0); } + return(0); + } resort(usrdir[curlib][curdir[curlib]]); return(0); case CS_FILE_GET: if(!fexist(csi->str)) { bputs(text[FileNotFound]); - return(0); } + return(0); + } if(!chksyspass()) return(0); @@ -378,15 +391,19 @@ int sbbs_t::exec_function(csi_t *csi) for(j=0;j<usrdirs[i];j++) { if(cfg.lib[i]->offline_dir==usrdir[i][j]) continue; - if(bulkupload(usrdir[i][j])) return(0); } - return(0); } + if(bulkupload(usrdir[i][j])) return(0); + } + return(0); + } if(!stricmp(csi->str,"LIB")) { /* current library */ for(i=0;i<usrdirs[curlib];i++) { if(cfg.lib[usrlib[curlib]]->offline_dir ==usrdir[curlib][i]) continue; - if(bulkupload(usrdir[curlib][i])) return(0); } - return(0); } + if(bulkupload(usrdir[curlib][i])) return(0); + } + return(0); + } bulkupload(usrdir[curlib][curdir[curlib]]); /* current dir */ return(0); @@ -409,16 +426,20 @@ int sbbs_t::exec_function(csi_t *csi) bputs(" for files "); if(*(csi->ip-1)==CS_FILE_FIND_OLD_UPLOADS) { l=FI_OLDUL; - bprintf("uploaded before %s\r\n",timestr(ns_time)); } + bprintf("uploaded before %s\r\n",timestr(ns_time)); + } else if(*(csi->ip-1)==CS_FILE_FIND_OLD) { /* go by download date */ l=FI_OLD; - bprintf("not downloaded since %s\r\n",timestr(ns_time)); } + bprintf("not downloaded since %s\r\n",timestr(ns_time)); + } else if(*(csi->ip-1)==CS_FILE_FIND_OFFLINE) { l=FI_OFFLINE; - bputs("not online...\r\n"); } + bputs("not online...\r\n"); + } else { l=FI_CLOSE; - bputs("currently open...\r\n"); } + bputs("currently open...\r\n"); + } if(!stricmp(csi->str,"ALL")) { for(i=0;i<usrlibs;i++) for(j=0;j<usrdirs[i];j++) { @@ -426,30 +447,39 @@ int sbbs_t::exec_function(csi_t *csi) continue; if((s=listfileinfo(usrdir[i][j],str,(char)l))==-1) return(0); - else k+=s; } } + else k+=s; + } + } else if(!stricmp(csi->str,"LIB")) { for(i=0;i<usrdirs[curlib];i++) { if(cfg.lib[usrlib[curlib]]->offline_dir==usrdir[curlib][i]) continue; if((s=listfileinfo(usrdir[curlib][i],str,(char)l))==-1) return(0); - else k+=s; } } + else k+=s; + } + } else { s=listfileinfo(usrdir[curlib][curdir[curlib]],str,(char)l); if(s==-1) return(0); - k=s; } + k=s; + } if(k>1) { - bprintf(text[NFilesListed],k); } - return(0); } + bprintf(text[NFilesListed],k); + } + return(0); + } if(*(csi->ip-1)>=CS_MSG_SET_AREA && *(csi->ip-1)<=CS_MSG_UNUSED1) { csi->ip--; - return(exec_msg(csi)); } + return(exec_msg(csi)); + } if(*(csi->ip-1)>=CS_FILE_SET_AREA && *(csi->ip-1)<=CS_FILE_RECEIVE) { csi->ip--; - return(exec_file(csi)); } + return(exec_file(csi)); + } errormsg(WHERE,ERR_CHK,"shell function",*(csi->ip-1)); return(0); diff --git a/src/sbbs3/execmisc.cpp b/src/sbbs3/execmisc.cpp index 3aa205d8b45cd45aa20f19e51d53f71d301dcc51..8e7686d4a883c80dc0994f2af107c5296277efc3 100644 --- a/src/sbbs3/execmisc.cpp +++ b/src/sbbs3/execmisc.cpp @@ -85,7 +85,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(!pp || !*pp) { lp=getintvar(csi,*(int32_t *)csi->ip); if(lp) - bprintf("%ld",*lp); } + bprintf("%ld",*lp); + } else putmsg(cmdstr(*pp,path,csi->str,buf) ,P_SAVEATR|P_NOABORT|P_NOATCODES); @@ -132,7 +133,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) case DEFINE_STR_VAR: if(getstrvar(csi,*(int32_t *)csi->ip)) { csi->ip+=4; - return(0); } + return(0); + } csi->str_vars++; csi->str_var=(char **)realloc(csi->str_var ,sizeof(char *)*csi->str_vars); @@ -144,20 +146,25 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) ,sizeof(char *)*csi->str_vars); if(csi->str_var_name) { free(csi->str_var_name); - csi->str_var_name=0; } + csi->str_var_name=0; + } if(csi->str_var) { free(csi->str_var); - csi->str_var=0; } - csi->str_vars=0; } + csi->str_var=0; + } + csi->str_vars=0; + } else { csi->str_var_name[csi->str_vars-1]=*(int32_t *)csi->ip; - csi->str_var[csi->str_vars-1]=0; } + csi->str_var[csi->str_vars-1]=0; + } csi->ip+=4; /* Skip variable name */ return(0); case DEFINE_INT_VAR: if(getintvar(csi,*(int32_t *)csi->ip)) { csi->ip+=4; - return(0); } + return(0); + } csi->int_vars++; csi->int_var=(int32_t *)realloc(csi->int_var ,sizeof(char *)*csi->int_vars); @@ -169,20 +176,25 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) ,sizeof(char *)*csi->int_vars); if(csi->int_var_name) { free(csi->int_var_name); - csi->int_var_name=0; } + csi->int_var_name=0; + } if(csi->int_var) { free(csi->int_var); - csi->int_var=0; } - csi->int_vars=0; } + csi->int_var=0; + } + csi->int_vars=0; + } else { csi->int_var_name[csi->int_vars-1]=*(int32_t *)csi->ip; - csi->int_var[csi->int_vars-1]=0; } + csi->int_var[csi->int_vars-1]=0; + } csi->ip+=4; /* Skip variable name */ return(0); case DEFINE_GLOBAL_STR_VAR: if(getstrvar(csi,*(int32_t *)csi->ip)) { csi->ip+=4; - return(0); } + return(0); + } global_str_vars++; global_str_var=(char **)realloc(global_str_var ,sizeof(char *)*global_str_vars); @@ -194,21 +206,26 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) ,sizeof(char *)*global_str_vars); if(global_str_var_name) { free(global_str_var_name); - global_str_var_name=0; } + global_str_var_name=0; + } if(global_str_var) { free(global_str_var); - global_str_var=0; } - global_str_vars=0; } + global_str_var=0; + } + global_str_vars=0; + } else { global_str_var_name[global_str_vars-1]= *(int32_t *)csi->ip; - global_str_var[global_str_vars-1]=0; } + global_str_var[global_str_vars-1]=0; + } csi->ip+=4; /* Skip variable name */ return(0); case DEFINE_GLOBAL_INT_VAR: if(getintvar(csi,*(int32_t *)csi->ip)) { csi->ip+=4; - return(0); } + return(0); + } global_int_vars++; global_int_var=(int32_t *)realloc(global_int_var ,sizeof(char *)*global_int_vars); @@ -220,15 +237,19 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) ,sizeof(char *)*global_int_vars); if(global_int_var_name) { free(global_int_var_name); - global_int_var_name=0; } + global_int_var_name=0; + } if(global_int_var) { free(global_int_var); - global_int_var=0; } - global_int_vars=0; } + global_int_var=0; + } + global_int_vars=0; + } else { global_int_var_name[global_int_vars-1] =*(int32_t *)csi->ip; - global_int_var[global_int_vars-1]=0; } + global_int_var[global_int_vars-1]=0; + } csi->ip+=4; /* Skip variable name */ return(0); @@ -257,7 +278,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(*(csi->ip)==0) /* Blank static str */ csi->logic=LOGIC_TRUE; else - csi->logic=LOGIC_FALSE; } + csi->logic=LOGIC_FALSE; + } while(*(csi->ip++)); /* Find NULL */ return(0); case STRSTR_VAR: @@ -309,7 +331,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; /* Skip static value */ if(!lp) { /* Unknown variable */ csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } if(*lp>l) csi->logic=LOGIC_GREATER; else if(*lp<l) @@ -334,15 +357,18 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->logic=LOGIC_TRUE; else csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } if(pp1) { /* ASCII */ if(!pp2) { ultoa(*lp2,tmp,10); - csi->logic=stricmp(*pp1,tmp); } + csi->logic=stricmp(*pp1,tmp); + } else csi->logic=stricmp(*pp1,*pp2); - return(0); } + return(0); + } /* Binary */ if(!lp2) { @@ -353,7 +379,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->logic=LOGIC_LESS; else csi->logic=LOGIC_EQUAL; - return(0); } + return(0); + } if(*lp1>*lp2) csi->logic=LOGIC_GREATER; else if(*lp1<*lp2) @@ -375,7 +402,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if((!pp1 && !lp1) || ((!pp2 || !*pp2) && !lp2)) { csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } csi->logic=LOGIC_TRUE; if(pp1) { /* ASCII */ @@ -384,7 +412,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) else strcpy(tmp,*pp2); *pp1=copystrvar(csi,*pp1,tmp); - return(0); } + return(0); + } if(!lp2) *lp1=strtol(*pp2,0,0); else @@ -404,7 +433,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(((!pp1 || !*pp1) && !lp1) || ((!pp2 || !*pp2) && !lp2)) { csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } csi->logic=LOGIC_TRUE; @@ -412,32 +442,41 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(!pp2) { if(!strnicmp(*pp2,"0x",2)) { l=strtol((*pp1)+2,0,16); - ultoa(*lp2,tmp,16); } + ultoa(*lp2,tmp,16); + } else { l=atol(*pp1); - ultoa(*lp2,tmp,10); } + ultoa(*lp2,tmp,10); + } *pp1=copystrvar(csi,*pp1,tmp); - *lp2=l; } + *lp2=l; + } else { p=*pp1; *pp1=*pp2; - *pp2=p; } - return(0); } + *pp2=p; + } + return(0); + } /* Binary */ if(!lp2) { if(!strnicmp(*pp2,"0x",2)) { l=strtol((*pp2)+2,0,16); - ultoa(*lp1,tmp,16); } + ultoa(*lp1,tmp,16); + } else { l=atol(*pp2); - ultoa(*lp1,tmp,10); } + ultoa(*lp1,tmp,10); + } *pp2=copystrvar(csi,*pp2,tmp); - *lp1=l; } + *lp1=l; + } else { l=*lp1; *lp1=*lp2; - *lp2=l; } + *lp2=l; + } return(0); case CAT_STR_VAR: pp=getstrvar(csi,*(int32_t *)csi->ip); @@ -452,7 +491,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(*pp) *pp=(char *)realloc(*pp,strlen(*pp)+strlen(tmp)+1); else - *pp=(char *)realloc(*pp,strlen(tmp)+1); } + *pp=(char *)realloc(*pp,strlen(tmp)+1); + } if(pp && *pp) strcat(*pp,tmp); return(0); @@ -480,7 +520,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(*pp) *pp=(char *)realloc(*pp,strlen(*pp)+strlen(tmp)+1); else - *pp=(char *)realloc(*pp,strlen(tmp)+1); } + *pp=(char *)realloc(*pp,strlen(tmp)+1); + } if(pp && *pp) strcat(*pp,tmp); return(0); @@ -488,7 +529,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(!pp1 || !pp2 || !*pp2) { csi->logic=LOGIC_FALSE; - return(0); } + return(0); + } csi->logic=LOGIC_TRUE; if(*pp1) for(i=0;i<MAX_SYSVARS;i++) @@ -498,7 +540,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(*pp1) *pp1=(char *)realloc(*pp1,strlen(*pp1)+strlen(*pp2)+1); else - *pp1=(char *)realloc(*pp1,strlen(*pp2)+1); } + *pp1=(char *)realloc(*pp1,strlen(*pp2)+1); + } strcat(*pp1,*pp2); return(0); case FORMAT_STR_VAR: @@ -533,7 +576,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; /* Skip int variable name */ if(pp && lp) { strcpy(str,timestr(*lp)); - *pp=copystrvar(csi,*pp,str); } + *pp=copystrvar(csi,*pp,str); + } return(0); case DATE_STR: pp=getstrvar(csi,*(int32_t *)csi->ip); @@ -542,7 +586,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; /* Skip int variable name */ if(pp && lp) { unixtodstr(&cfg,*lp,str); - *pp=copystrvar(csi,*pp,str); } + *pp=copystrvar(csi,*pp,str); + } return(0); case SECOND_STR: pp=getstrvar(csi,*(int32_t *)csi->ip); @@ -551,7 +596,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; /* Skip int variable name */ if(pp && lp) { sectostr(*lp,str); - *pp=copystrvar(csi,*pp,str); } + *pp=copystrvar(csi,*pp,str); + } return(0); case STRUPR_VAR: pp=getstrvar(csi,*(int32_t *)csi->ip); @@ -621,7 +667,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) break; case XOR_INT_VAR: *lp^=l; - break; } + break; + } return(0); case COMPARE_ANY_BITS: case COMPARE_ALL_BITS: @@ -659,7 +706,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) pp=getstrvar(csi,*(int32_t *)csi->ip); if(!pp || !*pp) return(0); - l=strtol(*pp,0,0); } + l=strtol(*pp,0,0); + } else l=*lp2; csi->ip+=4; @@ -692,7 +740,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) break; case XOR_INT_VARS: *lp1^=l; - break; } + break; + } return(0); case RANDOM_INT_VAR: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -725,7 +774,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=strlen(*pp); else - *lp=0; } + *lp=0; + } return(0); case CRC16_TO_INT: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -736,7 +786,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=crc16(*pp,0); else - *lp=0; } + *lp=0; + } return(0); case CRC32_TO_INT: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -747,7 +798,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=crc32(*pp,0); else - *lp=0; } + *lp=0; + } return(0); case CHKSUM_TO_INT: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -759,7 +811,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) { i=0; while(*((*pp)+i)) - *lp+=(uchar)*((*pp)+(i++)); } } + *lp+=(uchar)*((*pp)+(i++)); } + } return(0); case FLENGTH_TO_INT: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -770,7 +823,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=flength(*pp); else - *lp=0; } + *lp=0; + } return(0); case FTIME_TO_INT: lp=getintvar(csi,*(int32_t *)csi->ip); @@ -781,7 +835,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=fdate(*pp); else - *lp=0; } + *lp=0; + } return(0); case CHARVAL_TO_INT: case COPY_FIRST_CHAR: // duplicate functionality - doh! @@ -793,7 +848,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) *lp=**pp; else - *lp=0; } + *lp=0; + } return(0); case GETSTR_VAR: case GETLINE_VAR: @@ -821,16 +877,19 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(pp && *pp) strcpy(buf,*pp); else - buf[0]=0; } + buf[0]=0; + } getstr(buf,i,l); break; default: - getstr(buf,i,0); } + getstr(buf,i,0); + } if(sys_status&SS_ABORT) return(0); if(pp) { *pp=copystrvar(csi,*pp,buf); - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } return(0); case GETNUM_VAR: pp=getstrvar(csi,*(int32_t *)csi->ip); @@ -850,10 +909,12 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) ultoa(l,str,10); *pp=copystrvar(csi,*pp,str); csi->logic=LOGIC_TRUE; - return(0); } + return(0); + } if(lp) { *lp=l; - csi->logic=LOGIC_TRUE; } + csi->logic=LOGIC_TRUE; + } return(0); case SHIFT_STR_VAR: @@ -1006,7 +1067,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) default: errormsg(WHERE,ERR_CHK,"var sub-instruction",*(csi->ip-1)); - return(0); } + return(0); + } case CS_FIO_FUNCTION: switch(*(csi->ip++)) { /* sub-op-code stored as next byte */ @@ -1019,13 +1081,15 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->logic=LOGIC_FALSE; if(*(csi->ip-7)==FIO_OPEN) { cmdstr((char *)csi->ip,path,csi->str,str); - while(*(csi->ip++)); } /* skip filename */ + while(*(csi->ip++)); /* skip filename */ + } else { pp=getstrvar(csi,*(int32_t *)csi->ip); csi->ip+=4; if(!pp || !*pp) return(0); - strcpy(str,*pp); } + strcpy(str,*pp); + } if(csi->files>=MAX_FOPENS) return(0); if(lp) { @@ -1089,7 +1153,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; if(!vp) return(0); - i=*(short *)vp; } + i=*(short *)vp; + } if(i>sizeof(buf)-1) i=sizeof(buf)-1; if(!lp1 || (uint)*lp1>=csi->files || (!pp && !lp2)) @@ -1099,13 +1164,15 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(*pp && **pp) i=strlen(*pp); else - i=128; } + i=128; + } if((j=fread(buf,1,i,csi->file[*lp1]))==i) csi->logic=LOGIC_TRUE; buf[j]=0; if(csi->etx) { p=strchr(buf,csi->etx); - if(p) *p=0; } + if(p) *p=0; + } *pp=copystrvar(csi,*pp,buf); } else { @@ -1137,7 +1204,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) buf[i]=0; if(csi->etx) { p=strchr(buf,csi->etx); - if(p) *p=0; } + if(p) *p=0; + } if(pp) *pp=copystrvar(csi,*pp,buf); else @@ -1160,7 +1228,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; if(!vp) return(0); - i=*(short *)vp; } + i=*(short *)vp; + } if(i>sizeof(buf)-1) i=sizeof(buf)-1; if(!lp1 || (uint)*lp1>=csi->files || (!pp && !lp2) || (pp && !*pp)) @@ -1208,7 +1277,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) #if 0 /* ftime */ if(lp1 && (uint)*lp1<csi->files && lp2) { ft=unixtoftime(*lp2); - setftime(fileno(csi->file[*lp1),&ft); } + setftime(fileno(csi->file[*lp1),&ft); + } #endif return(0); case FIO_EOF: @@ -1234,14 +1304,17 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->logic=LOGIC_FALSE; if(*(csi->ip-5)==FIO_SEEK) { l=*(int32_t *)csi->ip; - csi->ip+=4; } + csi->ip+=4; + } else { lp2=getintvar(csi,*(int32_t *)csi->ip); csi->ip+=4; if(!lp2) { csi->ip+=2; - return(0); } - l=*lp2; } + return(0); + } + l=*lp2; + } i=*(short *)csi->ip; csi->ip+=2; if(lp1 && (uint)*lp1<csi->files) @@ -1301,7 +1374,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; if(!lp2) return(0); - l=*lp2; } + l=*lp2; + } if(lp1 && (uint)*lp1<csi->files) csi->logic=chsize(fileno(csi->file[*lp1]),l); return(0); @@ -1343,7 +1417,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) break; case MOVE_FILE: csi->logic=mv(*pp1,*pp2,0); - break; } + break; + } else csi->logic=LOGIC_FALSE; return(0); @@ -1375,7 +1450,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) break; case CHANGE_DIR: csi->logic=chdir(*pp); - break; } + break; + } else csi->logic=LOGIC_FALSE; return(0); @@ -1450,10 +1526,12 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) csi->ip+=4; if(!lp) { skipto(csi,CS_END_SWITCH); - csi->ip++; } + csi->ip++; + } else { csi->misc|=CS_IN_SWITCH; - csi->switch_val=*lp; } + csi->switch_val=*lp; + } return(0); case CS_CASE: l=*(int32_t *)csi->ip; @@ -1511,7 +1589,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(i>=TOTAL_TEXT) { errormsg(WHERE,ERR_CHK,"replace text #",i); while(*(csi->ip++)); /* Find NULL */ - return(0); } + return(0); + } if(text[i]!=text_sav[i] && text[i]!=nulstr) free(text[i]); j=strlen(cmdstr((char *)csi->ip,path,csi->str,buf)); @@ -1523,7 +1602,8 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) errormsg(WHERE,ERR_ALLOC,"replacement text",j); while(*(csi->ip++)); /* Find NULL */ text[i]=text_sav[i]; - return(0); } + return(0); + } if(j) strcpy(text[i],buf); while(*(csi->ip++)); /* Find NULL */ @@ -1537,13 +1617,15 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) if(lp) l=*lp; else - l=0; } + l=0; + } csi->ip+=4; // Variable i=*(csi->ip++); // Offset if(i<1 || csi->ip+1+i>=csi->cs+csi->length) { errormsg(WHERE,ERR_CHK,"offset",i); csi->ip++; - return(0); } + return(0); + } switch(*(csi->ip++)) { // Length case sizeof(char): *(csi->ip+i)=(char)l; @@ -1556,10 +1638,12 @@ int sbbs_t::exec_misc(csi_t* csi, char *path) break; default: errormsg(WHERE,ERR_CHK,"length",*(csi->ip-1)); - break; } + break; + } return(0); default: errormsg(WHERE,ERR_CHK,"shell instruction",*(csi->ip-1)); - return(0); } + return(0); + } } diff --git a/src/sbbs3/execmsg.cpp b/src/sbbs3/execmsg.cpp index bf7c228a4ef5620653a49bcfb9a109bc29ea3fbb..8fe2fce2567396eabe69147d0cc4ceec04299362 100644 --- a/src/sbbs3/execmsg.cpp +++ b/src/sbbs3/execmsg.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -63,7 +63,8 @@ int sbbs_t::exec_msg(csi_t *csi) if(i<9) outchar(' '); if(i<99) outchar(' '); bprintf(text[CfgGrpLstFmt] - ,i+1, cfg.grp[usrgrp[i]]->lname); } } + ,i+1, cfg.grp[usrgrp[i]]->lname); } + } sprintf(str,text[JoinWhichGrp],curgrp+1); mnemonics(str); j=getnum(usrgrps); @@ -72,11 +73,13 @@ int sbbs_t::exec_msg(csi_t *csi) if(!j) j=curgrp; else - j--; } + j--; + } sprintf(str,"%smenu/subs%u.*", cfg.text_dir, usrgrp[j]+1); if(fexist(str)) { sprintf(str,"subs%u",usrgrp[j]+1); - menu(str); } + menu(str); + } else { CLS; bprintf(text[SubLstHdr], cfg.grp[usrgrp[j]]->lname); @@ -88,14 +91,16 @@ int sbbs_t::exec_msg(csi_t *csi) ,getposts(&cfg,usrsub[j][i])); if(i<9) outchar(' '); if(i<99) outchar(' '); - bputs(str); } } + bputs(str); } + } sprintf(str,text[JoinWhichSub],cursub[j]+1); mnemonics(str); i=getnum(usrsubs[j]); if((int)i==-1) { if(usrgrps==1) return(0); - continue; } + continue; + } if(!i) i=cursub[j]; else @@ -103,7 +108,8 @@ int sbbs_t::exec_msg(csi_t *csi) curgrp=j; cursub[curgrp]=i; csi->logic=LOGIC_TRUE; - return(0); } + return(0); + } return(0); case CS_MSG_GET_SUB_NUM: @@ -112,7 +118,8 @@ int sbbs_t::exec_msg(csi_t *csi) i=atoi(csi->str); if(i && usrgrps && i<=usrsubs[curgrp]) cursub[curgrp]=i-1; - return(0); } + return(0); + } ch=getkey(K_UPPER); outchar(ch); @@ -122,11 +129,13 @@ int sbbs_t::exec_msg(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); cursub[curgrp]=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { cursub[curgrp]=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); i+=ch&0xf; if(i*10<=usrsubs[curgrp]) { /* 100+ subs */ @@ -135,16 +144,20 @@ int sbbs_t::exec_msg(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); cursub[curgrp]=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { cursub[curgrp]=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); - i+=ch&0xf; } + i+=ch&0xf; + } if(i<=usrsubs[curgrp]) cursub[curgrp]=i-1; - return(0); } + return(0); + } if((uint)(ch&0xf)<=usrsubs[curgrp] && (ch&0xf) && usrgrps) cursub[curgrp]=(ch&0xf)-1; return(0); @@ -155,7 +168,8 @@ int sbbs_t::exec_msg(csi_t *csi) i=atoi(csi->str); if(i && i<=usrgrps) curgrp=i-1; - return(0); } + return(0); + } ch=getkey(K_UPPER); outchar(ch); @@ -165,16 +179,19 @@ int sbbs_t::exec_msg(csi_t *csi) if(!isdigit(ch) && ch!=CR) { ungetkey(ch); curgrp=(i/10)-1; - return(0); } + return(0); + } outchar(ch); if(ch==CR) { curgrp=(i/10)-1; - return(0); } + return(0); + } logch(ch,0); i+=ch&0xf; if(i<=usrgrps) curgrp=i-1; - return(0); } + return(0); + } if((uint)(ch&0xf)<=usrgrps && (ch&0xf)) curgrp=(ch&0xf)-1; return(0); @@ -195,7 +212,8 @@ int sbbs_t::exec_msg(csi_t *csi) sprintf(str,"%smenu/grps.*", cfg.text_dir); if(fexist(str)) { menu("grps"); - return(0); } + return(0); + } bputs(text[GrpLstHdr]); for(i=0;i<usrgrps && !msgabort();i++) { if(i==curgrp) @@ -203,7 +221,8 @@ int sbbs_t::exec_msg(csi_t *csi) else outchar(' '); if(i<9) outchar(' '); bprintf(text[GrpLstFmt],i+1 - ,cfg.grp[usrgrp[i]]->lname,nulstr,usrsubs[i]); } + ,cfg.grp[usrgrp[i]]->lname,nulstr,usrsubs[i]); + } return(0); case CS_MSG_SHOW_SUBBOARDS: @@ -212,7 +231,8 @@ int sbbs_t::exec_msg(csi_t *csi) if(fexist(str)) { sprintf(str,"subs%u",usrgrp[curgrp]+1); menu(str); - return(0); } + return(0); + } CRLF; bprintf(text[SubLstHdr],cfg.grp[usrgrp[curgrp]]->lname); for(i=0;i<usrsubs[curgrp] && !msgabort();i++) { @@ -223,7 +243,8 @@ int sbbs_t::exec_msg(csi_t *csi) ,getposts(&cfg,usrsub[curgrp][i])); if(i<9) outchar(' '); if(i<99) outchar(' '); - bputs(str); } + bputs(str); + } return(0); case CS_MSG_GROUP_UP: @@ -255,7 +276,8 @@ int sbbs_t::exec_msg(csi_t *csi) if(!stricmp(csi->str,cfg.sub[usrsub[i][j]]->code)) { curgrp=i; cursub[i]=j; - return(0); } + return(0); + } csi->logic=LOGIC_FALSE; return(0); case CS_MSG_READ: @@ -317,7 +339,8 @@ int sbbs_t::exec_msg(csi_t *csi) return(0); case CS_MSG_YOUR_SCAN_ALL: scanallsubs(SCAN_TOYOU); - return(0); } + return(0); + } errormsg(WHERE,ERR_CHK,"shell function",*(csi->ip-1)); return(0); } diff --git a/src/sbbs3/fido.cpp b/src/sbbs3/fido.cpp index 95f6e7e31e95cf1d754593e330b390c79642fb3c..c6a6fe27b4cb50fface68b50831ce656dd43ee32 100644 --- a/src/sbbs3/fido.cpp +++ b/src/sbbs3/fido.cpp @@ -55,12 +55,14 @@ void pt_zone_kludge(fmsghdr_t hdr,int fido) if(hdr.destpoint) { sprintf(str,"\1TOPT %hu\r" ,hdr.destpoint); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } if(hdr.origpoint) { sprintf(str,"\1FMPT %hu\r" ,hdr.origpoint); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } } bool sbbs_t::lookup_netuser(char *into) @@ -89,9 +91,11 @@ bool sbbs_t::lookup_netuser(char *into) if(strstr(name,to) && yesno(q)) { fclose(stream); sprintf(into,"%s@%s",str,str+27); - return(true); } + return(true); + } if(sys_status&SS_ABORT) - break; } + break; + } fclose(stream); return(false); } @@ -125,7 +129,8 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) if(p && !isdigit(*(p+1)) && !strchr(p,'.') && !strchr(p,':')) { mode&=~WM_FILE; qnetmail(to,title,mode|WM_NETMAIL); - return(false); } + return(false); + } if(!cfg.total_faddrs || p==NULL || !strchr(p+1,'/')) { if(!p && cfg.dflt_faddr.zone) addr=cfg.dflt_faddr; @@ -227,7 +232,8 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) strcpy(subj,str); if(fexistcase(str)) { bputs(text[FileAlreadyThere]); - return(false); } + return(false); + } { /* Remote */ xfer_prot_menu(XFER_UPLOAD); mnemonics(text[ProtocolOrQuit]); @@ -240,7 +246,8 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) ch=(char)getkeys(str,0); if(ch=='Q' || sys_status&SS_ABORT) { bputs(text[Aborted]); - return(false); } + return(false); + } for(x=0;x<cfg.total_prots;x++) if(cfg.prot[x]->ulcmd[0] && cfg.prot[x]->mnemonic==ch && chk_ar(cfg.prot[x]->ar,&useron,&client)) @@ -265,37 +272,43 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) && !strnicmp(p,"CR:",3)) { /* Crash over-ride by sysop */ p+=3; /* skip CR: */ if(*p==' ') p++; /* skip extra space if it exists */ - hdr.attr|=FIDO_CRASH; } + hdr.attr|=FIDO_CRASH; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"FR:",3)) { /* File request */ p+=3; /* skip FR: */ if(*p==' ') p++; - hdr.attr|=FIDO_FREQ; } + hdr.attr|=FIDO_FREQ; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"RR:",3)) { /* Return receipt request */ p+=3; /* skip RR: */ if(*p==' ') p++; - hdr.attr|=FIDO_RRREQ; } + hdr.attr|=FIDO_RRREQ; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"FA:",3)) { /* File Attachment */ p+=3; /* skip FA: */ if(*p==' ') p++; - hdr.attr|=FIDO_FILE; } + hdr.attr|=FIDO_FILE; + } SAFECOPY(hdr.subj,p); sprintf(str,"%sNETMAIL.MSG", cfg.node_dir); if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return(false); } + return(false); + } length=filelength(file); if((buf=(char *)malloc(length))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,length); - return(false); } + return(false); + } read(file,buf,length); close(file); @@ -305,27 +318,33 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) for(i=1;i;i++) { sprintf(str,"%s%u.msg", cfg.netmail_dir,i); if(!fexistcase(str)) - break; } + break; + } if(!i) { bputs(text[TooManyEmailsToday]); - return(false); } + return(false); + } if((fido=nopen(str,O_WRONLY|O_CREAT|O_EXCL))==-1) { errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_EXCL); - return(false); } + return(false); + } write(fido,&hdr,sizeof(hdr)); pt_zone_kludge(hdr,fido); if(cfg.netmail_misc&NMAIL_DIRECT) { SAFECOPY(str,"\1FLAGS DIR\r\n"); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } if(mode&WM_FILE) { SAFECOPY(str,"\1FLAGS KFS\r\n"); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } if(cc_sent) { SAFEPRINTF(str,"* Originally to: %s\r\n\r\n",into); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } l=0L; while(l<length) { @@ -369,10 +388,12 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) for(l=0;l<length && cc_found<=cc_sent;l++) if(l+3<length && !strnicmp(buf+l,"CC:",3)) { cc_found++; - l+=2; } + l+=2; + } else { while(l<length && *(buf+l)!=LF) - l++; } + l++; + } if(!cc_found) break; while(l<length && *(buf+l)==' ') l++; @@ -385,15 +406,18 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode) if(p) { addr=atofaddr(&cfg,p+1); *p=0; - SAFECOPY(hdr.to,str); } + SAFECOPY(hdr.to,str); + } else { atofaddr(&cfg,str); - strcpy(hdr.to,"Sysop"); } + strcpy(hdr.to,"Sysop"); + } hdr.destzone =addr.zone; hdr.destnet =addr.net; hdr.destnode =addr.node; hdr.destpoint =addr.point; - cc_sent++; } + cc_sent++; + } if(cfg.netmail_sem[0]) /* update semaphore file */ ftouch(cmdstr(cfg.netmail_sem,nulstr,nulstr,NULL)); @@ -421,7 +445,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(useron.rest&FLAG('M')) { bputs(text[NoNetMailAllowed]); - return; } + return; + } to[0]=0; name[0]=0; @@ -434,10 +459,12 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(n<2L || n>999999L) { errormsg(WHERE,ERR_CHK,"QWK blocks",n); - return; } + return; + } if((qwkbuf=(char *)malloc(n*QWK_BLOCK_LEN))==NULL) { errormsg(WHERE,ERR_ALLOC,nulstr,n*QWK_BLOCK_LEN); - return; } + return; + } memcpy((char *)qwkbuf,block,QWK_BLOCK_LEN); fread(qwkbuf+QWK_BLOCK_LEN,n-1,QWK_BLOCK_LEN,rep); @@ -458,7 +485,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) p=strrchr(to,'@'); /* Find '@' in name@addr */ if(p && !isdigit(*(p+1)) && !strchr(p,'.') && !strchr(p,':')) { /* QWKnet */ qnet=1; - *p=0; } + *p=0; + } else if(p==NULL || !isdigit(*(p+1)) || !cfg.total_faddrs) { if(p==NULL && cfg.dflt_faddr.zone) fidoaddr=cfg.dflt_faddr; @@ -470,24 +498,28 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) else { bputs(text[InvalidNetMailAddr]); free(qwkbuf); - return; } } + return; + } + } else { fidoaddr=atofaddr(&cfg,p+1); /* Get fido address */ *p=0; /* Chop off address */ - } + } if(!inet && !qnet && /* FidoNet */ ((!SYSOP && !(cfg.netmail_misc&NMAIL_ALLOW)) || !cfg.total_faddrs)) { bputs(text[NoNetMailAllowed]); free(qwkbuf); - return; } + return; + } truncsp(to); /* Truncate off space */ if(!stricmp(to,"SBBS") && !SYSOP && qnet) { free(qwkbuf); - return; } + return; + } l=QWK_BLOCK_LEN; /* Start of message text */ @@ -495,7 +527,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(into==NULL) { /* If name@addr on first line, skip first line */ while(l<(n*QWK_BLOCK_LEN) && qwkbuf[l]!=QWK_NEWLINE) l++; - l++; } + l++; + } memset(&msg,0,sizeof(smbmsg_t)); msg.hdr.version=smb_ver(); @@ -515,15 +548,18 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) sprintf(senderaddr,"%s/%s" ,fromhub ? cfg.qhub[fromhub-1]->id : useron.alias,cp); strupr(senderaddr); - smb_hfield(&msg,SENDERNETADDR,strlen(senderaddr),senderaddr); } + smb_hfield(&msg,SENDERNETADDR,strlen(senderaddr),senderaddr); + } else { if(fromhub) SAFECOPY(senderaddr, cfg.qhub[fromhub-1]->id); else SAFECOPY(senderaddr, useron.alias); strupr(senderaddr); - smb_hfield(&msg,SENDERNETADDR,strlen(senderaddr),senderaddr); } - sprintf(sender,"%.25s",block+46); } /* From name */ + smb_hfield(&msg,SENDERNETADDR,strlen(senderaddr),senderaddr); + } + sprintf(sender,"%.25s",block+46); /* From name */ + } else { /* Not Networked */ msg.hdr.when_written.zone=sys_timezone(&cfg); sprintf(str,"%u",useron.number); @@ -544,7 +580,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) l+=strlen(str)+1; cp=str+4; while(*cp && *cp<=' ') cp++; - msg.hdr.when_written.zone=(short)ahtoul(cp); } + msg.hdr.when_written.zone=(short)ahtoul(cp); + } else msg.hdr.when_written.zone=sys_timezone(&cfg); memset(&tm,0,sizeof(tm)); @@ -599,7 +636,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(fulladdr[0]) smb_hfield(&msg,RECIPIENTNETADDR,strlen(fulladdr),fulladdr); - bprintf(text[NetMailing],to,fulladdr,sender,cfg.sys_id); } + bprintf(text[NetMailing],to,fulladdr,sender,cfg.sys_id); + } if(inet) { /* Internet E-mail */ @@ -608,12 +646,15 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) bputs(text[NotEnoughCredits]); free(qwkbuf); smb_freemsgmem(&msg); - return; } + return; + } sprintf(str,text[NetMailCostContinueQ],cfg.inetmail_cost); if(noyes(str)) { free(qwkbuf); smb_freemsgmem(&msg); - return; } } + return; + } + } net=NET_INTERNET; smb_hfield(&msg,RECIPIENT,strlen(name),name); @@ -623,7 +664,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) bprintf(text[NetMailing],name,to ,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name - ,cfg.sys_inetaddr); } + ,cfg.sys_inetaddr); + } if(qnet || inet) { @@ -633,7 +675,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) errormsg(WHERE,ERR_OPEN,"MAIL",i); free(qwkbuf); smb_freemsgmem(&msg); - return; } + return; + } sprintf(smb.file,"%smail", cfg.data_dir); smb.retry_time=cfg.smb_retry_time; smb.subnum=INVALID_SUB; @@ -642,7 +685,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); free(qwkbuf); smb_freemsgmem(&msg); - return; } + return; + } if(smb_fgetlength(smb.shd_fp)<1L) { /* Create it if it doesn't exist */ smb.status.max_crcs=cfg.mail_maxcrcs; @@ -655,7 +699,9 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) errormsg(WHERE,ERR_CREATE,smb.file,i,smb.last_error); free(qwkbuf); smb_freemsgmem(&msg); - return; } } + return; + } + } length=n*256L; // Extra big for CRLF xlat, was (n-1L)*256L (03/16/96) @@ -667,7 +713,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) errormsg(WHERE,ERR_LEN,str,length); free(qwkbuf); smb_freemsgmem(&msg); - return; } + return; + } if((i=smb_open_da(&smb))!=0) { smb_close(&smb); @@ -675,7 +722,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); free(qwkbuf); smb_freemsgmem(&msg); - return; } + return; + } if(cfg.sys_misc&SM_FASTMAIL) offset=smb_fallocdat(&smb,length,1); else @@ -692,9 +740,11 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(qwkbuf[l]==QWK_NEWLINE) { smb_fwrite(&smb,crlf,2,smb.sdt_fp); m+=2; - continue; } + continue; + } smb_fputc(qwkbuf[l],smb.sdt_fp); - m++; } + m++; + } for(ch=0;m<length;m++) /* Pad out with NULLs */ smb_fputc(ch,smb.sdt_fp); @@ -718,7 +768,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(cfg.inetmail_sem[0]) /* update semaphore file */ ftouch(cmdstr(cfg.inetmail_sem,nulstr,nulstr,NULL)); if(!(useron.exempt&FLAG('S'))) - subtract_cdt(&cfg,&useron,cfg.inetmail_cost); } + subtract_cdt(&cfg,&useron,cfg.inetmail_cost); + } useron.emails++; logon_emails++; @@ -729,10 +780,12 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) sprintf(str,"%s sent %s NetMail to %s (%s) via QWK" ,useron.alias ,qnet ? "QWK":"Internet",name,qnet ? fulladdr : to); - logline("EN",str); } + logline("EN",str); + } free((char *)qwkbuf); - return; } + return; + } /****************************** FidoNet **********************************/ @@ -750,7 +803,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) truncsp(str); sprintf(tmp,"@%s",fromhub ? cfg.qhub[fromhub-1]->id : useron.alias); strupr(tmp); - strcat(str,tmp); } + strcat(str,tmp); + } else SAFECOPY(str,cfg.netmail_misc&NMAIL_ALIAS ? useron.alias : useron.name); SAFECOPY(hdr.from,str); @@ -763,11 +817,14 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(useron.cdt+useron.freecdt<cfg.netmail_cost) { bputs(text[NotEnoughCredits]); free(qwkbuf); - return; } + return; + } sprintf(str,text[NetMailCostContinueQ],cfg.netmail_cost); if(noyes(str)) { free(qwkbuf); - return; } } + return; + } + } hdr.destzone =fidoaddr.zone; hdr.destnet =fidoaddr.net; @@ -780,7 +837,8 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) if(i==cfg.total_faddrs) { for(i=0;i<cfg.total_faddrs;i++) if(fidoaddr.zone==cfg.faddr[i].zone) - break; } + break; + } if(i==cfg.total_faddrs) i=0; hdr.origzone =cfg.faddr[i].zone; @@ -813,25 +871,29 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) && !strnicmp(p,"CR:",3)) { /* Crash over-ride by sysop */ p+=3; /* skip CR: */ if(*p==' ') p++; /* skip extra space if it exists */ - hdr.attr|=FIDO_CRASH; } + hdr.attr|=FIDO_CRASH; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"FR:",3)) { /* File request */ p+=3; /* skip FR: */ if(*p==' ') p++; - hdr.attr|=FIDO_FREQ; } + hdr.attr|=FIDO_FREQ; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"RR:",3)) { /* Return receipt request */ p+=3; /* skip RR: */ if(*p==' ') p++; - hdr.attr|=FIDO_RRREQ; } + hdr.attr|=FIDO_RRREQ; + } if((SYSOP || useron.exempt&FLAG('F')) && !strnicmp(p,"FA:",3)) { /* File attachment */ p+=3; /* skip FA: */ if(*p==' ') p++; - hdr.attr|=FIDO_FILE; } + hdr.attr|=FIDO_FILE; + } SAFECOPY(hdr.subj,p); @@ -839,27 +901,32 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub) for(i=1;i;i++) { sprintf(str,"%s%u.msg", cfg.netmail_dir,i); if(!fexistcase(str)) - break; } + break; + } if(!i) { bputs(text[TooManyEmailsToday]); - return; } + return; + } if((fido=nopen(str,O_WRONLY|O_CREAT|O_EXCL))==-1) { free(qwkbuf); errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_EXCL); - return; } + return; + } write(fido,&hdr,sizeof(hdr)); pt_zone_kludge(hdr,fido); if(cfg.netmail_misc&NMAIL_DIRECT) { sprintf(str,"\1FLAGS DIR\r\n"); - write(fido,str,strlen(str)); } + write(fido,str,strlen(str)); + } l=QWK_BLOCK_LEN; if(into==NULL) { /* If name@addr on first line, skip first line */ while(l<n*QWK_BLOCK_LEN && qwkbuf[l]!=QWK_NEWLINE) l++; - l++; } + l++; + } length=n*QWK_BLOCK_LEN; while(l<length) { @@ -909,13 +976,15 @@ faddr_t atofaddr(scfg_t* cfg, char *str) addr.zone=addr.net=addr.node=addr.point=0; if((p=strchr(str,':'))!=NULL) { addr.zone=atoi(str); - addr.net=atoi(p+1); } + addr.net=atoi(p+1); + } else { if(cfg->total_faddrs) addr.zone=cfg->faddr[0].zone; else addr.zone=1; - addr.net=atoi(str); } + addr.net=atoi(str); + } if(!addr.zone) /* no such thing as zone 0 */ addr.zone=1; if((p=strchr(str,'/'))!=NULL) @@ -925,7 +994,8 @@ faddr_t atofaddr(scfg_t* cfg, char *str) addr.net=cfg->faddr[0].net; else addr.net=1; - addr.node=atoi(str); } + addr.node=atoi(str); + } if((p=strchr(str,'.'))!=NULL) addr.point=atoi(p+1); return(addr); diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp index 7f75af03c3c596a86c0437866694c6b047f866dc..ea491284e46635bf9a480964fe9cfb32679dde95 100644 --- a/src/sbbs3/file.cpp +++ b/src/sbbs3/file.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -90,7 +90,8 @@ void sbbs_t::fileinfo(file_t* f) getextdesc(&cfg,f->dir,f->datoffset,ext); CRLF; putmsg(ext,P_NOATCODES); - CRLF; } + CRLF; + } if(f->size==-1L) { bprintf(text[FileIsNotOnline],f->name); if(SYSOP) @@ -117,12 +118,14 @@ void sbbs_t::openfile(file_t* f) sprintf(str1,"%s%s.dat",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code); if((file=nopen(str1,O_RDWR))==-1) { errormsg(WHERE,ERR_OPEN,str1,O_RDWR); - return; } + return; + } lseek(file,f->datoffset+F_OPENCOUNT,SEEK_SET); if(read(file,str2,3)!=3) { close(file); errormsg(WHERE,ERR_READ,str1,3); - return; } + return; + } str2[3]=0; ultoa(atoi(str2)+1,str3,10); putrec(str2,0,3,str3); @@ -130,7 +133,8 @@ void sbbs_t::openfile(file_t* f) if(write(file,str2,3)!=3) { close(file); errormsg(WHERE,ERR_WRITE,str1,3); - return; } + return; + } close(file); /**********************************/ /* Add transaction to BACKOUT.DAB */ @@ -138,7 +142,8 @@ void sbbs_t::openfile(file_t* f) sprintf(str1,"%sbackout.dab",cfg.node_dir); if((file=nopen(str1,O_WRONLY|O_APPEND|O_CREAT))==-1) { errormsg(WHERE,ERR_OPEN,str1,O_WRONLY|O_APPEND|O_CREAT); - return; } + return; + } ch=BO_OPENFILE; write(file,&ch,1); /* backout type */ write(file,cfg.dir[f->dir]->code,8); /* directory code */ @@ -163,12 +168,14 @@ void sbbs_t::closefile(file_t* f) sprintf(str1,"%s%s.dat",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code); if((file=nopen(str1,O_RDWR))==-1) { errormsg(WHERE,ERR_OPEN,str1,O_RDWR); - return; } + return; + } lseek(file,f->datoffset+F_OPENCOUNT,SEEK_SET); if(read(file,str2,3)!=3) { close(file); errormsg(WHERE,ERR_READ,str1,3); - return; } + return; + } str2[3]=0; ch=atoi(str2); if(ch) ch--; @@ -178,7 +185,8 @@ void sbbs_t::closefile(file_t* f) if(write(file,str2,3)!=3) { close(file); errormsg(WHERE,ERR_WRITE,str1,3); - return; } + return; + } close(file); /*****************************************/ /* Removing transaction from BACKOUT.DAB */ @@ -188,21 +196,25 @@ void sbbs_t::closefile(file_t* f) return; if((file=nopen(str1,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str1,O_RDONLY); - return; } + return; + } length=filelength(file); if((buf=(char *)malloc(length))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str1,length); - return; } + return; + } if(read(file,buf,length)!=length) { close(file); free(buf); errormsg(WHERE,ERR_READ,str1,length); - return; } + return; + } close(file); if((file=nopen(str1,O_WRONLY|O_TRUNC))==-1) { errormsg(WHERE,ERR_OPEN,str1,O_WRONLY|O_TRUNC); - return; } + return; + } ch=0; /* 'ch' is a 'file already removed' flag */ for(l=0;l<length;l+=BO_LEN) { /* in case file is in backout.dab > 1 */ if(!ch && buf[l]==BO_OPENFILE) { @@ -211,8 +223,11 @@ void sbbs_t::closefile(file_t* f) memcpy(&offset,buf+l+9,4); if(!stricmp(str1,cfg.dir[f->dir]->code) && offset==f->datoffset) { ch=1; - continue; } } - write(file,buf+l,BO_LEN); } + continue; + } + } + write(file,buf+l,BO_LEN); + } free(buf); close(file); } diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c index bf212ce5042f7192e07128142fefb193b482aecc..46c2b557ee4a98a3fcee2485ec757bcad0b1c8cf 100644 --- a/src/sbbs3/filedat.c +++ b/src/sbbs3/filedat.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -80,7 +80,8 @@ BOOL DLLCALL getfiledat(scfg_t* cfg, file_t* f) } else { f->size=f->cdt; - f->date=0; } + f->date=0; + } */ } #if 0 @@ -301,7 +302,8 @@ BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f) free((char *)ixbbuf); return(FALSE); } - free((char *)ixbbuf); } + free((char *)ixbbuf); + } else { /* IXB file is empty... No files */ if(write(file,fname,11)!=11) { /* Write filename it IXB file */ close(file); @@ -509,19 +511,23 @@ BOOL DLLCALL findfile(scfg_t* cfg, uint dirnum, char *filename) length=filelength(file); if(!length) { close(file); - return(FALSE); } + return(FALSE); + } if((ixbbuf=(char *)malloc(length))==NULL) { close(file); - return(FALSE); } + return(FALSE); + } if(lread(file,ixbbuf,length)!=length) { close(file); free((char *)ixbbuf); - return(FALSE); } + return(FALSE); + } close(file); for(l=0;l<length;l+=F_IXBSIZE) { for(i=0;i<11;i++) if(toupper(fname[i])!=toupper(ixbbuf[l+i])) break; - if(i==11) break; } + if(i==11) break; + } free((char *)ixbbuf); if(l!=length) return(TRUE); @@ -608,22 +614,29 @@ BOOL DLLCALL rmuserxfers(scfg_t* cfg, int fromuser, int destuser, char *fname) if(!strncmp(ixtbuf+l+5,fname,12)) { /* this is the file */ if(destuser && fromuser) { /* both dest and from user */ if(atoi(ixtbuf+l)==destuser && atoi(ixtbuf+l+18)==fromuser) - continue; } /* both match */ + continue; /* both match */ + } else if(fromuser) { /* from user */ if(atoi(ixtbuf+l+18)==fromuser) /* matches */ - continue; } + continue; + } else if(destuser) { /* dest user */ if(atoi(ixtbuf+l)==destuser) /* matches */ - continue; } - else continue; } } /* no users, so match */ + continue; + } + else continue; /* no users, so match */ + } + } else if(destuser && fromuser) { if(atoi(ixtbuf+l+18)==fromuser && atoi(ixtbuf+l)==destuser) - continue; } + continue; + } else if(destuser && atoi(ixtbuf+l)==destuser) continue; else if(fromuser && atoi(ixtbuf+l+18)==fromuser) continue; - write(file,ixtbuf+l,24); } + write(file,ixtbuf+l,24); + } close(file); free(ixtbuf); @@ -688,7 +701,8 @@ int DLLCALL update_uldate(scfg_t* cfg, file_t* f) for(l=0;l<length;l+=F_IXBSIZE) { read(file,str,F_IXBSIZE); /* Look for the filename in the IXB file */ str[11]=0; - if(!strcmp(fname,str)) break; } + if(!strcmp(fname,str)) break; + } if(l>=length) { close(file); return(-2); diff --git a/src/sbbs3/getmail.c b/src/sbbs3/getmail.c index fe24ac06af8849614347823c2d2fee5d4fc5628a..e8d9df5506fcee314ec2389aaddda4150833d42a 100644 --- a/src/sbbs3/getmail.c +++ b/src/sbbs3/getmail.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -110,7 +110,9 @@ void DLLCALL delfattach(scfg_t* cfg, smbmsg_t* msg) remove(str2); if(!p) break; - tp=p+1; } + tp=p+1; + + } sprintf(str,"%sfile/%04u.in",cfg->data_dir,msg->idx.to); rmdir(str); /* remove the dir if it's empty */ } diff --git a/src/sbbs3/getmsg.cpp b/src/sbbs3/getmsg.cpp index aac0acb7dbc08839fb0d15dd636293d27d53b608..cfd4ffbedabb9725fc25864efb3e4671623f1085 100644 --- a/src/sbbs3/getmsg.cpp +++ b/src/sbbs3/getmsg.cpp @@ -163,12 +163,14 @@ void sbbs_t::show_msghdr(smbmsg_t* msg) sender=(char *)msg->hfield_dat[i]; if(msg->hfield[i].type==FORWARDED && sender) bprintf(text[ForwardedFrom],sender - ,timestr(*(time32_t *)msg->hfield_dat[i])); } + ,timestr(*(time32_t *)msg->hfield_dat[i])); + } /* Debug stuff if(SYSOP) { bprintf("\1n\1c\r\nAux : \1h%08lX",msg->hdr.auxattr); - bprintf("\1n\1c\r\nNum : \1h%lu",msg->hdr.number); } + bprintf("\1n\1c\r\nNum : \1h%lu",msg->hdr.number); + } */ CRLF; @@ -202,7 +204,8 @@ void sbbs_t::msgtotxt(smbmsg_t* msg, char *str, int header, int tails) if((out=fnopen(&i,str,O_WRONLY|O_CREAT|O_APPEND))==NULL) { errormsg(WHERE,ERR_OPEN,str,0); - return; } + return; + } if(header) { fprintf(out,"\r\n"); fprintf(out,"Subj : %s\r\n",msg->subj); @@ -219,7 +222,8 @@ void sbbs_t::msgtotxt(smbmsg_t* msg, char *str, int header, int tails) fprintf(out,"\r\nDate : %.24s %s" ,timestr(msg->hdr.when_written.time) ,smb_zonestr(msg->hdr.when_written.zone,NULL)); - fprintf(out,"\r\n\r\n"); } + fprintf(out,"\r\n\r\n"); + } buf=smb_getmsgtxt(&smb,msg,tails); if(buf!=NULL) { @@ -248,27 +252,32 @@ ulong sbbs_t::getmsgnum(uint subnum, time_t t) smb.subnum=subnum; if((i=smb_open(&smb))!=0) { errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return(0); } + return(0); + } total=filelength(fileno(smb.sid_fp))/sizeof(idxrec_t); if(!total) { /* Empty base */ smb_close(&smb); - return(0); } + return(0); + } if((i=smb_locksmbhdr(&smb))!=0) { smb_close(&smb); errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); - return(0); } + return(0); + } if((i=smb_getlastidx(&smb,&msg.idx))!=0) { smb_close(&smb); errormsg(WHERE,ERR_READ,smb.file,i,smb.last_error); - return(0); } + return(0); + } if((time_t)msg.idx.time<=t) { smb_close(&smb); - return(msg.idx.number); } + return(msg.idx.number); + } bot=0; top=total; @@ -283,12 +292,15 @@ ulong sbbs_t::getmsgnum(uint subnum, time_t t) if((time_t)msg.idx.time>t) { top=l; l=bot+((top-bot)/2); - continue; } + continue; + } if((time_t)msg.idx.time<t) { bot=l; l=top-((top-bot)/2); - continue; } - break; } + continue; + } + break; + } smb_close(&smb); return(msg.idx.number); } @@ -307,31 +319,38 @@ time_t sbbs_t::getmsgtime(uint subnum, ulong ptr) smb.subnum=subnum; if((i=smb_open(&smb))!=0) { errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return(0); } + return(0); + } if(!filelength(fileno(smb.sid_fp))) { /* Empty base */ smb_close(&smb); - return(0); } + return(0); + } msg.offset=0; msg.hdr.number=0; if(smb_getmsgidx(&smb,&msg)) { /* Get first message index */ smb_close(&smb); - return(0); } + return(0); + } if(!ptr || msg.idx.number>=ptr) { /* ptr is before first message */ smb_close(&smb); - return(msg.idx.time); } /* so return time of first msg */ + return(msg.idx.time); /* so return time of first msg */ + } if(smb_getlastidx(&smb,&lastidx)) { /* Get last message index */ smb_close(&smb); - return(0); } + return(0); + } if(lastidx.number<ptr) { /* ptr is after last message */ smb_close(&smb); - return(lastidx.time); } /* so return time of last msg */ + return(lastidx.time); /* so return time of last msg */ + } msg.idx.time=0; msg.hdr.number=ptr; if(!smb_getmsgidx(&smb,&msg)) { smb_close(&smb); - return(msg.idx.time); } + return(msg.idx.time); + } if(ptr-msg.idx.number < lastidx.number-ptr) { msg.offset=0; @@ -340,16 +359,19 @@ time_t sbbs_t::getmsgtime(uint subnum, ulong ptr) msg.hdr.number=0; if(smb_getmsgidx(&smb,&msg) || msg.idx.number>=ptr) break; - msg.offset++; } + msg.offset++; + } smb_close(&smb); - return(msg.idx.time); } + return(msg.idx.time); + } ptr--; while(ptr) { msg.hdr.number=ptr; if(!smb_getmsgidx(&smb,&msg)) break; - ptr--; } + ptr--; + } smb_close(&smb); return(msg.idx.time); } @@ -377,19 +399,23 @@ ulong sbbs_t::getlastmsg(uint subnum, uint32_t *ptr, time_t *t) smb.subnum=subnum; if((i=smb_open(&smb))!=0) { errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return(0); } + return(0); + } if(!filelength(fileno(smb.sid_fp))) { /* Empty base */ smb_close(&smb); - return(0); } + return(0); + } if((i=smb_locksmbhdr(&smb))!=0) { smb_close(&smb); errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); - return(0); } + return(0); + } if((i=smb_getlastidx(&smb,&idx))!=0) { smb_close(&smb); errormsg(WHERE,ERR_READ,smb.file,i,smb.last_error); - return(0); } + return(0); + } total=filelength(fileno(smb.sid_fp))/sizeof(idxrec_t); smb_unlocksmbhdr(&smb); smb_close(&smb); diff --git a/src/sbbs3/listfile.cpp b/src/sbbs3/listfile.cpp index 4aff4ab9186c98f8f2696e2304f4b68d79fcdea9..8a84fa470cc1d5b38c47d8f78808ee40254e1dc7 100644 --- a/src/sbbs3/listfile.cpp +++ b/src/sbbs3/listfile.cpp @@ -67,41 +67,49 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) read(file,&l,4); close(file); if(ns_time>(time_t)l) - return(0); } } + return(0); + } + } sprintf(str,"%s%s.ixb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); if((file=nopen(str,O_RDONLY))==-1) return(0); l=filelength(file); if(!l) { close(file); - return(0); } + return(0); + } if((ixbbuf=(uchar *)malloc(l))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,l); - return(0); } + return(0); + } if(lread(file,ixbbuf,l)!=l) { close(file); errormsg(WHERE,ERR_READ,str,l); free((char *)ixbbuf); - return(0); } + return(0); + } close(file); sprintf(str,"%s%s.dat",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); free((char *)ixbbuf); - return(0); } + return(0); + } datbuflen=filelength(file); if((datbuf=(char *)malloc(datbuflen))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,datbuflen); free((char *)ixbbuf); - return(0); } + return(0); + } if(lread(file,datbuf,datbuflen)!=datbuflen) { close(file); errormsg(WHERE,ERR_READ,str,datbuflen); free((char *)datbuf); free((char *)ixbbuf); - return(0); } + return(0); + } close(file); if(!tofile) { action=NODE_LFIL; @@ -125,25 +133,32 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) if((i=batchflagprompt(dirnum,bf,letter-'A',l/F_IXBSIZE))==2) { m=anchor; found-=letter-'A'; - letter='A'; } + letter='A'; + } else if(i==3) { if((long)anchor-((letter-'A')*F_IXBSIZE)<0) { m=0; - found=0; } + found=0; + } else { m=anchor-((letter-'A')*F_IXBSIZE); - found-=letter-'A'; } - letter='A'; } + found-=letter-'A'; + } + letter='A'; + } else if((int)i==-1) { free((char *)ixbbuf); free((char *)datbuf); - return(-1); } + return(-1); + } else break; getnodedat(cfg.node_num,&thisnode,0); - nodesync(); } + nodesync(); + } else - break; } + break; + } if(letter>'Z') letter='A'; @@ -153,7 +168,8 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) if(msgabort()) { /* used to be !tofile && msgabort() */ free((char *)ixbbuf); free((char *)datbuf); - return(-1); } + return(-1); + } for(j=0;j<12 && m<l;j++) if(j==8) str[j]=ixbbuf[m]>' ' ? '.' : ' '; @@ -163,18 +179,21 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) if(!(mode&(FL_FINDDESC|FL_EXFIND)) && filespec[0] && !filematch(str,filespec)) { m+=11; - continue; } + continue; + } n=ixbbuf[m]|((long)ixbbuf[m+1]<<8)|((long)ixbbuf[m+2]<<16); if(n>=datbuflen) { /* out of bounds */ m+=11; - continue; } + continue; + } if(mode&(FL_FINDDESC|FL_EXFIND)) { getrec((char *)&datbuf[n],F_DESC,LEN_FDESC,tmp); strupr(tmp); p=strstr(tmp,filespec); if(!(mode&FL_EXFIND) && p==NULL) { m+=11; - continue; } + continue; + } getrec((char *)&datbuf[n],F_MISC,1,tmp); j=tmp[0]; /* misc bits */ if(j) j-=' '; @@ -183,15 +202,19 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) strupr(ext); if(!strstr(ext,filespec) && !p) { /* not in description or */ m+=11; /* extended description */ - continue; } } + continue; + } + } else if(!p) { /* no extended description and not in desc */ m+=11; - continue; } } + continue; } + } if(mode&FL_ULTIME) { if(ns_time>(ixbbuf[m+3]|((long)ixbbuf[m+4]<<8)|((long)ixbbuf[m+5]<<16) |((long)ixbbuf[m+6]<<24))) { m+=11; - continue; } } + continue; } + } if(useron.misc&BATCHFLAG && letter=='A' && found && !tofile && !(mode&(FL_EXFIND|FL_VIEW)) && (!mode || !(useron.misc&EXPERT))) @@ -240,36 +263,47 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) bputs("�\r\n��"); for(c=0;c<d;c++) outchar('�'); - bputs("�\r\n"); } } } + bputs("�\r\n"); + } + } + } else { /* short header */ if(tofile) { sprintf(hdr,"(%u) %s ",i+1,cfg.lib[usrlib[i]]->sname); write(tofile,crlf,2); - write(tofile,hdr,strlen(hdr)); } + write(tofile,hdr,strlen(hdr)); + } else { sprintf(hdr,text[ShortHdrLib],i+1,cfg.lib[usrlib[i]]->sname); bputs("\r\1>\r\n"); - bputs(hdr); } + bputs(hdr); + } c=bstrlen(hdr); if(tofile) { sprintf(hdr,"(%u) %s",j+1,cfg.dir[dirnum]->lname); - write(tofile,hdr,strlen(hdr)); } + write(tofile,hdr,strlen(hdr)); + } else { sprintf(hdr,text[ShortHdrDir],j+1,cfg.dir[dirnum]->lname); - bputs(hdr); } + bputs(hdr); + } c+=bstrlen(hdr); if(tofile) { write(tofile,crlf,2); sprintf(hdr,"%*s",c,nulstr); memset(hdr,'�',c); strcat(hdr,crlf); - write(tofile,hdr,strlen(hdr)); } + write(tofile,hdr,strlen(hdr)); + } else { CRLF; attr(cfg.color[clr_filelstline]); while(c--) outchar('�'); - CRLF; } } } + CRLF; + } + } + } next=m; disp=1; if(mode&(FL_EXFIND|FL_VIEW)) { @@ -290,12 +324,16 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) if(!viewfile(&f,1)) { free((char *)ixbbuf); free((char *)datbuf); - return(-1); } } + return(-1); } + } else { if(!viewfile(&f,0)) { free((char *)ixbbuf); free((char *)datbuf); - return(-1); } } } + return(-1); + } + } + } else if(tofile) listfiletofile(str,&datbuf[n],dirnum,tofile); @@ -305,14 +343,17 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) disp=listfile(str,&datbuf[n],dirnum,nulstr,letter,n); if(!disp && letter>'A') { next=m-F_IXBSIZE; - letter--; } + letter--; + } else { disp=1; - found++; } + found++; + } if(sys_status&SS_ABORT) { free((char *)ixbbuf); free((char *)datbuf); - return(-1); } + return(-1); + } if(mode&(FL_EXFIND|FL_VIEW)) continue; if(useron.misc&BATCHFLAG && !tofile) { @@ -323,7 +364,8 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) bf[letter-'A'].dateuled=ixbbuf[m+3]|((long)ixbbuf[m+4]<<8) |((long)ixbbuf[m+5]<<16)|((long)ixbbuf[m+6]<<24); bf[letter-'A'].datedled=ixbbuf[m+7]|((long)ixbbuf[m+8]<<8) - |((long)ixbbuf[m+9]<<16)|((long)ixbbuf[m+10]<<24); } + |((long)ixbbuf[m+9]<<16)|((long)ixbbuf[m+10]<<24); + } m+=11; if(flagprompt || letter=='Z' || !disp || (filespec[0] && !strchr(filespec,'*') && !strchr(filespec,'?') @@ -339,29 +381,36 @@ int sbbs_t::listfiles(uint dirnum, const char *filespec, int tofile, long mode) if((int)i==-1) return(-1); else - return(found); } + return(found); + } if(i==2) { next=anchor; - found-=(letter-'A')+1; } + found-=(letter-'A')+1; + } else if(i==3) { if((long)anchor-((letter-'A'+1)*F_IXBSIZE)<0) { next=0; - found=0; } + found=0; + } else { next=anchor-((letter-'A'+1)*F_IXBSIZE); - found-=letter-'A'+1; } } + found-=letter-'A'+1; } + } getnodedat(cfg.node_num,&thisnode,0); nodesync(); letter='A'; } - else letter++; } + else letter++; + } if(useron.misc&BATCHFLAG && !tofile && lncntr>=rows-2) { lncntr=0; /* defeat pause() */ - flagprompt=1; } + flagprompt=1; + } m=next; if(mode&FL_FINDDESC) continue; if(filespec[0] && !strchr(filespec,'*') && !strchr(filespec,'?') && m) - break; } + break; + } free((char *)ixbbuf); free((char *)datbuf); @@ -385,7 +434,8 @@ bool sbbs_t::listfile(const char *fname, const char *buf, uint dirnum if(buf[F_MISC]!=ETX && (buf[F_MISC]-' ')&FM_EXTDESC && useron.misc&EXTDESC) { getextdesc(&cfg,dirnum,datoffset,ext); if(useron.misc&BATCHFLAG && lncntr+extdesclines(ext)>=rows-2 && letter!='A') - return(false); } + return(false); + } attr(cfg.color[clr_filename]); bputs(fname); @@ -399,15 +449,18 @@ bool sbbs_t::listfile(const char *fname, const char *buf, uint dirnum if(!(useron.misc&EXTDESC)) outchar('+'); else - outchar(' '); } + outchar(' '); + } else outchar(' '); if(useron.misc&BATCHFLAG) { attr(cfg.color[clr_filedesc]); - bprintf("%c",letter); } + bprintf("%c",letter); + } if(cfg.dir[dirnum]->misc&DIR_FCHK && !fexistcase(path)) { exist=0; - attr(cfg.color[clr_err]); } + attr(cfg.color[clr_err]); + } else attr(cfg.color[clr_filecdt]); getrec(buf,F_CDT,LEN_FCDT,str); @@ -415,22 +468,26 @@ bool sbbs_t::listfile(const char *fname, const char *buf, uint dirnum if(useron.misc&BATCHFLAG) { if(!cdt) { attr(curatr^(HIGH|BLINK)); - bputs(" FREE"); } + bputs(" FREE"); + } else { if(cdt<1024) /* 1k is smallest size */ cdt=1024; if(cdt>(99999*1024)) bprintf("%5luM",cdt/(1024*1024)); else - bprintf("%5luk",cdt/1024L); } } + bprintf("%5luk",cdt/1024L); } + } else { if(!cdt) { /* FREE file */ attr(curatr^(HIGH|BLINK)); - bputs(" FREE"); } + bputs(" FREE"); + } else if(cdt>9999999L) bprintf("%6luk",cdt/1024L); else - bprintf("%7lu",cdt); } + bprintf("%7lu",cdt); + } if(exist) outchar(' '); else @@ -460,10 +517,12 @@ bool sbbs_t::listfile(const char *fname, const char *buf, uint dirnum attr(cfg.color[clr_filedesc]^HIGH); bprintf("%.*s",i,str+j); attr(cfg.color[clr_filedesc]); - bprintf("%.*s",strlen(str)-(j+i),str+j+i); } + bprintf("%.*s",strlen(str)-(j+i),str+j+i); + } else bputs(str); - CRLF; } + CRLF; + } ptr=ext; while(*ptr && ptr<ext+512 && !msgabort()) { cr=strchr(ptr,CR); @@ -479,13 +538,15 @@ bool sbbs_t::listfile(const char *fname, const char *buf, uint dirnum if(strlen(ptr)>LEN_FDESC) cr=ptr+LEN_FDESC; else - break; } + break; + } if(!(*(cr+1)) || !(*(cr+2))) break; bprintf("%21s",nulstr); ptr=cr; if(!(*ptr)) ptr++; - while(*ptr==LF || *ptr==CR) ptr++; } + while(*ptr==LF || *ptr==CR) ptr++; + } return(true); } @@ -501,7 +562,8 @@ bool sbbs_t::removefcdt(file_t* f) if((u=matchuser(&cfg,f->uler,TRUE /*sysop_alias*/))==0) { bputs(text[UnknownUser]); - return(false); } + return(false); + } cdt=0L; if(cfg.dir[f->dir]->misc&DIR_CDTMIN && cur_cps) { if(cfg.dir[f->dir]->misc&DIR_CDTUL) @@ -514,7 +576,8 @@ bool sbbs_t::removefcdt(file_t* f) sprintf(str,"%lu minute",cdt); sprintf(tmp,text[FileRemovedUserMsg] ,f->name,cdt ? str : text[No]); - putsmsg(&cfg,u,tmp); } + putsmsg(&cfg,u,tmp); + } else { if(cfg.dir[f->dir]->misc&DIR_CDTUL) cdt=(ulong)(f->cdt*(cfg.dir[f->dir]->up_pct/100.0)); @@ -525,7 +588,8 @@ bool sbbs_t::removefcdt(file_t* f) adjustuserrec(&cfg,u,U_CDT,10,-cdt); sprintf(tmp,text[FileRemovedUserMsg] ,f->name,cdt ? ultoac(cdt,str) : text[No]); - putsmsg(&cfg,u,tmp); } + putsmsg(&cfg,u,tmp); + } adjustuserrec(&cfg,u,U_ULB,10,-f->size); adjustuserrec(&cfg,u,U_ULS,5,-1); @@ -620,7 +684,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total menu("batflag"); if(lncntr) pause(); - return(2); } + return(2); + } if(ch=='Q' || sys_status&SS_ABORT) return(-1); if(ch=='S') @@ -630,7 +695,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total if(ch=='B') { /* Flag for batch download */ if(useron.rest&FLAG('D')) { bputs(text[R_Download]); - return(2); } + return(2); + } if(total==1) { f.dir=dirnum; strcpy(f.name,bf[0].name); @@ -639,7 +705,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total getfiledat(&cfg,&f); addtobatdl(&f); CRLF; - return(2); } + return(2); + } bputs(text[BatchDlFlags]); d=getstr(str,BF_MAX,K_UPPER|K_LOWPRIO|K_NOCRLF); lncntr=0; @@ -651,7 +718,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total for(c=0;c<d;c++) { if(batdn_total>=cfg.max_batdn) { bprintf(text[BatchDlQueueIsFull],str+c); - break; } + break; + } if(strchr(str+c,'.')) { /* filename or spec given */ f.dir=dirnum; p=strchr(str+c,' '); @@ -660,14 +728,18 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total for(i=0;i<total;i++) { if(batdn_total>=cfg.max_batdn) { bprintf(text[BatchDlQueueIsFull],str+c); - break; } + break; + } padfname(str+c,tmp); if(filematch(bf[i].name,tmp)) { strcpy(f.name,bf[i].name); f.datoffset=bf[i].datoffset; f.size=0; getfiledat(&cfg,&f); - addtobatdl(&f); } } } + addtobatdl(&f); + } + } + } if(strchr(str+c,'.')) c+=strlen(str+c); else if(str[c]<'A'+(char)total && str[c]>='A') { @@ -676,11 +748,14 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total f.datoffset=bf[str[c]-'A'].datoffset; f.size=0; getfiledat(&cfg,&f); - addtobatdl(&f); } } + addtobatdl(&f); } + } CRLF; - return(2); } + return(2); + } clearline(); - continue; } + continue; + } if(ch=='E' || ch=='V') { /* Extended Info */ if(total==1) { @@ -693,7 +768,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total getfiledat(&cfg,&f); if(!viewfile(&f,ch=='E')) return(-1); - return(2); } + return(2); + } bputs(text[BatchDlFlags]); d=getstr(str,BF_MAX,K_UPPER|K_LOWPRIO|K_NOCRLF); lncntr=0; @@ -718,7 +794,10 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total f.size=0; getfiledat(&cfg,&f); if(!viewfile(&f,ch=='E')) - return(-1); } } } + return(-1); + } + } + } if(strchr(str+c,'.')) c+=strlen(str+c); else if(str[c]<'A'+(char)total && str[c]>='A') { @@ -730,20 +809,25 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total f.size=0; getfiledat(&cfg,&f); if(!viewfile(&f,ch=='E')) - return(-1); } } - return(2); } + return(-1); } + } + return(2); + } clearline(); - continue; } + continue; + } if((ch=='D' || ch=='M') /* Delete or Move */ && !(useron.rest&FLAG('R')) && (dir_op(dirnum) || useron.exempt&FLAG('R'))) { if(total==1) { strcpy(str,"A"); - d=1; } + d=1; + } else { bputs(text[BatchDlFlags]); - d=getstr(str,BF_MAX,K_UPPER|K_LOWPRIO|K_NOCRLF); } + d=getstr(str,BF_MAX,K_UPPER|K_LOWPRIO|K_NOCRLF); + } lncntr=0; if(sys_status&SS_ABORT) return(-1); @@ -755,7 +839,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total remcdt=remfile=1; if(dir_op(dirnum)) { remcdt=!noyes(text[RemoveCreditsQ]); - remfile=!noyes(text[DeleteFileQ]); } } + remfile=!noyes(text[DeleteFileQ]); } + } else if(ch=='M') { CRLF; for(i=0;i<usrlibs;i++) @@ -779,7 +864,8 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total if(!md) md=usrdirs[ml]-1; else md--; - CRLF; } + CRLF; + } lncntr=0; for(c=0;c<d;c++) { if(strchr(str+c,'.')) { /* filename or spec given */ @@ -800,16 +886,22 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total if(f.opencount) { bprintf(text[FileIsOpen] ,f.opencount,f.opencount>1 ? "s":nulstr); - continue; } + continue; + } if(ch=='D') { removefile(&f); if(remfile) { sprintf(tmp,"%s%s",cfg.dir[f.dir]->path,fname); - remove(tmp); } + remove(tmp); + } if(remcdt) - removefcdt(&f); } + removefcdt(&f); + } else if(ch=='M') - movefile(&f,usrdir[ml][md]); } } } + movefile(&f,usrdir[ml][md]); + } + } + } if(strchr(str+c,'.')) c+=strlen(str+c); else if(str[c]<'A'+(char)total && str[c]>='A') { @@ -824,21 +916,28 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total if(f.opencount) { bprintf(text[FileIsOpen] ,f.opencount,f.opencount>1 ? "s":nulstr); - continue; } + continue; + } if(ch=='D') { removefile(&f); if(remfile) { sprintf(tmp,"%s%s",cfg.dir[f.dir]->path,fname); - remove(tmp); } + remove(tmp); + } if(remcdt) - removefcdt(&f); } + removefcdt(&f); + } else if(ch=='M') - movefile(&f,usrdir[ml][md]); } } - return(2); } + movefile(&f,usrdir[ml][md]); } + } + return(2); + } clearline(); - continue; } + continue; + } - return(1); } + return(1); + } return(-1); } @@ -870,36 +969,43 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) return(0); if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return(0); } + return(0); + } usrxfrlen=filelength(file); if((usrxfrbuf=(uchar *)malloc(usrxfrlen))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,usrxfrlen); - return(0); } + return(0); + } if(read(file,usrxfrbuf,usrxfrlen)!=usrxfrlen) { close(file); free(usrxfrbuf); errormsg(WHERE,ERR_READ,str,usrxfrlen); - return(0); } - close(file); } + return(0); + } + close(file); + } sprintf(str,"%s%s.ixb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); if((file=nopen(str,O_RDONLY))==-1) return(0); l=filelength(file); if(!l) { close(file); - return(0); } + return(0); + } if((ixbbuf=(uchar *)malloc(l))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,l); - return(0); } + return(0); + } if(lread(file,ixbbuf,l)!=l) { close(file); errormsg(WHERE,ERR_READ,str,l); free((char *)ixbbuf); if(usrxfrbuf) free(usrxfrbuf); - return(0); } + return(0); + } close(file); sprintf(str,"%s%s.dat",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); if((file=nopen(str,O_RDONLY))==-1) { @@ -907,7 +1013,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) free((char *)ixbbuf); if(usrxfrbuf) free(usrxfrbuf); - return(0); } + return(0); + } close(file); m=0; while(online && !done && m<l) { @@ -916,7 +1023,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) else action=NODE_LFIL; if(msgabort()) { found=-1; - break; } + break; + } for(i=0;i<12 && m<l;i++) if(i==8) str[i]=ixbbuf[m]>' ' ? '.' : ' '; @@ -926,7 +1034,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) unpadfname(str,fname); if(filespec[0] && !filematch(str,filespec)) { m+=11; - continue; } + continue; + } f.datoffset=ixbbuf[m]|((long)ixbbuf[m+1]<<8)|((long)ixbbuf[m+2]<<16); f.dateuled=ixbbuf[m+3]|((long)ixbbuf[m+4]<<8) |((long)ixbbuf[m+5]<<16)|((long)ixbbuf[m+6]<<24); @@ -953,9 +1062,11 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) for(p=usrxfrbuf;p<usrxfrbuf+usrxfrlen;p+=24) { sprintf(str,"%17.17s",p); /* %4.4u %12.12s */ if(!strcmp(str+5,f.name) && useron.number==atoi(str)) - break; } + break; + } if(p>=usrxfrbuf+usrxfrlen) /* file wasn't found */ - continue; } + continue; + } if((mode==FI_REMOVE) && (!dir_op(dirnum) && stricmp(f.uler ,useron.alias) && !(useron.exempt&FLAG('R')))) continue; @@ -963,29 +1074,35 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) if(mode==FI_INFO) { if(!viewfile(&f,1)) { done=1; - found=-1; } } + found=-1; } + } else fileinfo(&f); if(mode==FI_CLOSE) { if(!noyes(text[CloseFileRecordQ])) { f.opencount=0; - putfiledat(&cfg,&f); } } + putfiledat(&cfg,&f); } + } else if(mode==FI_REMOVE || mode==FI_OLD || mode==FI_OLDUL || mode==FI_OFFLINE) { SYNC; CRLF; if(f.opencount) { mnemonics(text[QuitOrNext]); - strcpy(str,"Q\r"); } + strcpy(str,"Q\r"); + } else if(dir_op(dirnum)) { mnemonics(text[SysopRemoveFilePrompt]); - strcpy(str,"VEFMCQR\r"); } + strcpy(str,"VEFMCQR\r"); + } else if(useron.exempt&FLAG('R')) { mnemonics(text[RExemptRemoveFilePrompt]); - strcpy(str,"VEMQR\r"); } + strcpy(str,"VEMQR\r"); + } else { mnemonics(text[UserRemoveFilePrompt]); - strcpy(str,"VEQR\r"); } + strcpy(str,"VEQR\r"); + } switch(getkeys(str,0)) { case 'V': viewfilecontents(&f); @@ -1027,10 +1144,12 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) if(f.misc&FM_EXTDESC) { if(!noyes(text[DeleteExtDescriptionQ])) { remove(str); - f.misc&=~FM_EXTDESC; } } + f.misc&=~FM_EXTDESC; } + } if(!dir_op(dirnum)) { putfiledat(&cfg,&f); - break; } + break; + } bputs(text[EditUploader]); if(!getstr(f.uler,LEN_ALIAS,K_EDIT|K_AUTODEL)) break; @@ -1050,14 +1169,16 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) ultoa(f.opencount,str,10); bputs(text[EditOpenCount]); getstr(str,3,K_NUMBER|K_EDIT|K_AUTODEL); - f.opencount=atoi(str); } + f.opencount=atoi(str); + } if(cfg.altpaths || f.altpath) { ultoa(f.altpath,str,10); bputs(text[EditAltPath]); getstr(str,3,K_NUMBER|K_EDIT|K_AUTODEL); f.altpath=atoi(str); if(f.altpath>cfg.altpaths) - f.altpath=0; } + f.altpath=0; + } if(sys_status&SS_ABORT) break; putfiledat(&cfg,&f); @@ -1100,7 +1221,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) } } else if(remove(str)) /* always remove if not sysop */ - bprintf(text[CouldntRemoveFile],str); } + bprintf(text[CouldntRemoveFile],str); + } if(dir_op(dirnum) || useron.exempt&FLAG('R')) { i=cfg.lib[cfg.dir[f.dir]->lib]->offline_dir; if(i!=dirnum && i!=INVALID_DIR @@ -1112,14 +1234,19 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) f.dir=i; addfiledat(&cfg,&f); if(f.misc&FM_EXTDESC) - putextdesc(&cfg,f.dir,f.datoffset,ext); } } } + putextdesc(&cfg,f.dir,f.datoffset,ext); + } + } + } if(dir_op(dirnum) || stricmp(f.uler,useron.alias)) { if(noyes(text[RemoveCreditsQ])) - /* Fall through */ break; } + /* Fall through */ break; + } case 'C': /* remove credits only */ if((i=matchuser(&cfg,f.uler,TRUE /*sysop_alias*/))==0) { bputs(text[UnknownUser]); - break; } + break; + } if(dir_op(dirnum)) { usrcdt=(ulong)(f.cdt*(cfg.dir[f.dir]->up_pct/100.0)); if(f.timesdled) /* all downloads */ @@ -1128,7 +1255,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) ultoa(usrcdt,str,10); bputs(text[CreditsToRemove]); getstr(str,10,K_NUMBER|K_LINE|K_EDIT|K_AUTODEL); - f.cdt=atol(str); } + f.cdt=atol(str); + } usrcdt=adjustuserrec(&cfg,i,U_CDT,10,-(long)f.cdt); if(i==useron.number) useron.cdt=usrcdt; @@ -1171,7 +1299,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) case 'Q': /* quit */ found=-1; done=1; - break; } } + break; } + } else if(mode==FI_DOWNLOAD || mode==FI_USERXFER) { sprintf(path,"%s%s",dirpath,fname); if(f.size<1L) { /* getfiledat will set this to -1 if non-existant */ @@ -1179,8 +1308,10 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) mnemonics(text[QuitOrNext]); if(getkeys("\rQ",0)=='Q') { found=-1; - break; } - continue; } + break; + } + continue; + } if(!is_download_free(&cfg,f.dir,&useron,&client) && f.cdt>(useron.cdt+useron.freecdt)) { SYNC; @@ -1189,16 +1320,20 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) mnemonics(text[QuitOrNext]); if(getkeys("\rQ",0)=='Q') { found=-1; - break; } - continue; } + break; + } + continue; + } if(!chk_ar(cfg.dir[f.dir]->dl_ar,&useron,&client)) { SYNC; bputs(text[CantDownloadFromDir]); mnemonics(text[QuitOrNext]); if(getkeys("\rQ",0)=='Q') { found=-1; - break; } - continue; } + break; + } + continue; + } if(!(cfg.dir[f.dir]->misc&DIR_TFREE) && f.timetodl>timeleft && !dir_op(dirnum) && !(useron.exempt&FLAG('T'))) { SYNC; @@ -1206,8 +1341,10 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) mnemonics(text[QuitOrNext]); if(getkeys("\rQ",0)=='Q') { found=-1; - break; } - continue; } + break; + } + continue; + } xfer_prot_menu(XFER_DOWNLOAD); openfile(&f); SYNC; @@ -1217,16 +1354,19 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) if(cfg.prot[i]->dlcmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(str,tmp); } + strcat(str,tmp); + } // ungetkey(useron.prot); ch=(char)getkeys(str,0); if(ch=='Q') { found=-1; - done=1; } + done=1; + } else if(ch=='B') { if(!addtobatdl(&f)) { closefile(&f); - break; } } + break; } + } else if(ch!=CR) { for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->dlcmd[0] && cfg.prot[i]->mnemonic==ch @@ -1254,7 +1394,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) bputs(cfg.dlevent[j]->workstr); external(cmdstr(cfg.dlevent[j]->cmd,path,nulstr,NULL) ,EX_OUTL); - CRLF; } + CRLF; + } getnodedat(cfg.node_num,&thisnode,1); action=NODE_DLNG; t=now+f.timetodl; @@ -1275,7 +1416,8 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode) } } } - closefile(&f); } + closefile(&f); + } if(filespec[0] && !strchr(filespec,'*') && !strchr(filespec,'?')) break; } @@ -1331,6 +1473,7 @@ int extdesclines(char *str) for(i=lc=last=0;str[i];i++) if(str[i]==LF || i-last>LEN_FDESC) { lc++; - last=i; } + last=i; + } return(lc); } diff --git a/src/sbbs3/logfile.cpp b/src/sbbs3/logfile.cpp index 1bb7cd8dcb1f28422b0cbaeb9e85376cb112c29a..fb9c9c7a4c7185f1b31aa2f43c396c7983126a7f 100644 --- a/src/sbbs3/logfile.cpp +++ b/src/sbbs3/logfile.cpp @@ -141,10 +141,12 @@ void sbbs_t::log(char *str) if(logfile_fp==NULL || online==ON_LOCAL) return; if(logcol>=78 || (78-logcol)<strlen(str)) { fprintf(logfile_fp,"\r\n"); - logcol=1; } + logcol=1; + } if(logcol==1) { fprintf(logfile_fp," "); - logcol=4; } + logcol=4; + } fprintf(logfile_fp,str); if(*lastchar(str)==LF) { logcol=1; @@ -326,7 +328,8 @@ void sbbs_t::errormsg(int line, const char *source, const char* action, const ch sbbs_beep(500,220); sbbs_beep(250,220); sbbs_beep(500,220); sbbs_beep(250,220); sbbs_beep(500,220); sbbs_beep(250,220); - nosound(); } + nosound(); + } bputs("\r\n\r\nThe sysop has been notified. <Hit a key>"); getkey(0); CRLF; @@ -336,7 +339,8 @@ void sbbs_t::errormsg(int line, const char *source, const char* action, const ch ,src,line,action,object,access); if(access>9 && (long)access!=-1 && (short)access!=-1 && (char)access!=-1) { sprintf(tmp," (0x%lX)",access); - strcat(str,tmp); } + strcat(str,tmp); + } if(extinfo!=NULL) { sprintf(tmp,"\r\n info: %s",extinfo); strcat(str,tmp); @@ -381,7 +385,9 @@ void sbbs_t::errorlog(const char *text) sprintf(tmp2,"!ERROR %d opening/creating %s",errno,str); logline("!!",tmp2); errorlog_inside=0; - return; } + return; + + } sprintf(hdr,"%s\r\nNode %2d: %s #%d\r\n" ,timestr(now),cfg.node_num,useron.alias,useron.number); write(file,hdr,strlen(hdr)); diff --git a/src/sbbs3/login.cpp b/src/sbbs3/login.cpp index 2358eecac769b0cce91b6b4668d3c8d9a2ed2fda..2f2adfca50616003320e9aab18ec02f9ab3da630 100644 --- a/src/sbbs3/login.cpp +++ b/src/sbbs3/login.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -54,7 +54,8 @@ int sbbs_t::login(char *username, char *pw) if(str[0]=='*') { memmove(str,str+1,strlen(str)); - qwklogon=1; } + qwklogon=1; + } else qwklogon=0; @@ -62,7 +63,8 @@ int sbbs_t::login(char *username, char *pw) useron.number=atoi(str); getuserdat(&cfg,&useron); if(useron.number && useron.misc&(DELETED|INACTIVE)) - useron.number=0; } + useron.number=0; + } if(!useron.number) { useron.number=matchuser(&cfg,str,FALSE); @@ -72,7 +74,8 @@ int sbbs_t::login(char *username, char *pw) if(useron.number) { getuserdat(&cfg,&useron); if(useron.number && useron.misc&(DELETED|INACTIVE)) - useron.number=0; } } + useron.number=0; } + } if(!useron.number) { if(cfg.node_misc&NM_LOGON_P) { @@ -92,13 +95,16 @@ int sbbs_t::login(char *username, char *pw) } else { bputs(text[UnknownUser]); sprintf(tmp,"Unknown User '%s'",str); - logline("+!",tmp); } + logline("+!",tmp); + } useron.misc=useron_misc; - return(LOGIC_FALSE); } + return(LOGIC_FALSE); + } if(!online) { useron.number=0; - return(LOGIC_FALSE); } + return(LOGIC_FALSE); + } if(useron.pass[0] || REALSYSOP) { bputs(pw); @@ -107,7 +113,8 @@ int sbbs_t::login(char *username, char *pw) console&=~(CON_R_ECHOX|CON_L_ECHOX); if(!online) { useron.number=0; - return(LOGIC_FALSE); } + return(LOGIC_FALSE); + } if(stricmp(useron.pass,str)) { bputs(text[InvalidLogon]); if(cfg.sys_misc&SM_ECHO_PW) @@ -119,12 +126,14 @@ int sbbs_t::login(char *username, char *pw) logline("+!",tmp); useron.number=0; useron.misc=useron_misc; - return(LOGIC_FALSE); } + return(LOGIC_FALSE); + } if(REALSYSOP && !chksyspass()) { bputs(text[InvalidLogon]); useron.number=0; useron.misc=useron_misc; - return(LOGIC_FALSE); } } + return(LOGIC_FALSE); } + } return(LOGIC_TRUE); } diff --git a/src/sbbs3/logout.cpp b/src/sbbs3/logout.cpp index ffeb46228c631025243990f89632461a2b31cbb3..2a86afaf8a034c81ddb3a32f2942103f658747fb 100644 --- a/src/sbbs3/logout.cpp +++ b/src/sbbs3/logout.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -59,7 +59,8 @@ void sbbs_t::logout() sprintf(str,"%s T:%3u sec\r\n" ,hhmmtostr(&cfg,&tm,tmp) ,(uint)(now-answertime)); - logline("@-",str); } + logline("@-",str); + } return; } strcpy(lastuseron,useron.alias); /* for use with WFC status display */ @@ -80,7 +81,8 @@ void sbbs_t::logout() sprintf(str,text[NodeLoggedOff],cfg.node_num ,thisnode.misc&NODE_ANON ? text[UNKNOWN_USER] : useron.alias); - putnmsg(&cfg,i,str); } } + putnmsg(&cfg,i,str); } + } if(!online) { /* NOT re-login */ @@ -101,8 +103,10 @@ void sbbs_t::logout() while(!lkbrd(1)) { sbbs_beep(1000,200); nosound(); - mswait(200); } - lkbrd(0); } + mswait(200); + } + lkbrd(0); + } #endif sys_status&=~SS_SYSALERT; if(cfg.sys_logout[0]) /* execute system logout event */ @@ -141,7 +145,8 @@ void sbbs_t::logout() useron.min-=j; else useron.min=0L; - putuserrec(&cfg,useron.number,U_MIN,10,ultoa(useron.min,str,10)); } + putuserrec(&cfg,useron.number,U_MIN,10,ultoa(useron.min,str,10)); + } if(timeleft>0 && starttime-logontime>0) /* extra time */ useron.textra+=(ushort)((starttime-logontime)/60); @@ -187,20 +192,24 @@ void sbbs_t::backout() sprintf(str,"%sbackout.dab",cfg.node_dir); if(flength(str)<1L) { remove(str); - return; } + return; + } if((file=nopen(str,O_RDONLY))==-1) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return; } + return; + } length=filelength(file); if((buf=(char *)malloc(length))==NULL) { close(file); errormsg(WHERE,ERR_ALLOC,str,length); - return; } + return; + } if(read(file,buf,length)!=length) { close(file); free(buf); errormsg(WHERE,ERR_READ,str,length); - return; } + return; + } close(file); for(l=0;l<length;l+=BO_LEN) { switch(buf[l]) { @@ -213,10 +222,12 @@ void sbbs_t::backout() if(i<cfg.total_dirs) { /* found internal code */ f.dir=i; memcpy(&f.datoffset,buf+l+9,4); - closefile(&f); } + closefile(&f); + } break; default: - errormsg(WHERE,ERR_CHK,str,buf[l]); } } + errormsg(WHERE,ERR_CHK,str,buf[l]); } + } free(buf); remove(str); /* always remove the backout file */ } @@ -238,7 +249,8 @@ void sbbs_t::logofflist() ,TM_YEAR(tm.tm_year)); if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) { errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_APPEND); - return; } + return; + } sprintf(str,"%-*.*s %-2d %-8.8s %2.2d:%2.2d %2.2d:%2.2d %3d%3ld%3ld%3ld%3ld" "%3ld%3ld\r\n",LEN_ALIAS,LEN_ALIAS,useron.alias,cfg.node_num,connection ,tm.tm_hour,tm.tm_min,tm_now.tm_hour,tm_now.tm_min diff --git a/src/sbbs3/qwk.cpp b/src/sbbs3/qwk.cpp index f1df1fea5ed918c28dcdb542f2b299bbe3b659c6..6ebc0adad2399a31e41963595853783b9ec1c323 100644 --- a/src/sbbs3/qwk.cpp +++ b/src/sbbs3/qwk.cpp @@ -100,14 +100,18 @@ int sbbs_t::qwk_route(char *inaddr, char *fulladdr) break; if(i<cfg.total_qhubs) { strcpy(fulladdr,node); - return(0); } + return(0); + } i=matchuser(&cfg,node,FALSE); /* Check if destination is a node */ if(i) { getuserrec(&cfg,i,U_REST,8,str); if(ahtoul(str)&FLAG('Q')) { strcpy(fulladdr,node); - return(i); } } + return(i); + } + + } sprintf(node,"%.8s",inaddr); /* node = next hop */ p=strchr(node,'/'); @@ -121,14 +125,18 @@ int sbbs_t::qwk_route(char *inaddr, char *fulladdr) break; if(i<cfg.total_qhubs) { strcpy(fulladdr,inaddr); - return(0); } + return(0); + } i=matchuser(&cfg,node,FALSE); /* Check if next hop is a node */ if(i) { getuserrec(&cfg,i,U_REST,8,str); if(ahtoul(str)&FLAG('Q')) { strcpy(fulladdr,inaddr); - return(i); } } } + return(i); + } + } + } p=strchr(node,' '); if(p) *p=0; @@ -146,7 +154,10 @@ int sbbs_t::qwk_route(char *inaddr, char *fulladdr) fclose(stream); truncsp(str); sprintf(fulladdr,"%s/%s",str+9+strlen(node),inaddr); - break; } } + break; + } + + } fclose(stream); if(!fulladdr[0]) /* First hop not found in ROUTE.DAT */ @@ -167,7 +178,8 @@ int sbbs_t::qwk_route(char *inaddr, char *fulladdr) if(i) { getuserrec(&cfg,i,U_REST,8,str); if(ahtoul(str)&FLAG('Q')) - return(i); } + return(i); + } fulladdr[0]=0; return(0); } @@ -197,23 +209,29 @@ void sbbs_t::update_qwkroute(char *via) if(qwk_time[i]>t) fprintf(stream,"%s %s:%s\r\n" ,unixtodstr(&cfg,qwk_time[i],str),qwk_node[i],qwk_path[i]); - fclose(stream); } + fclose(stream); + } else errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_TRUNC); for(i=0;i<total_nodes;i++) { free(qwk_node[i]); - free(qwk_path[i]); } + free(qwk_path[i]); + } if(qwk_node) { free(qwk_node); - qwk_node=NULL; } + qwk_node=NULL; + } if(qwk_path) { free(qwk_path); - qwk_path=NULL; } + qwk_path=NULL; + } if(qwk_time) { free(qwk_time); - qwk_time=NULL; } + qwk_time=NULL; + } total_nodes=0; - return; } + return; + } if(!total_nodes) { sprintf(str,"%sqnet/route.dat",cfg.data_dir); @@ -237,26 +255,36 @@ void sbbs_t::update_qwkroute(char *via) if(i==total_nodes) { if((qwk_node=(char **)realloc(qwk_node,sizeof(char *)*(i+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,str,9*(i+1)); - break; } + break; + } if((qwk_path=(char **)realloc(qwk_path,sizeof(char *)*(i+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,str,sizeof(char*)*(i+1)); - break; } + break; + } if((qwk_time=(time_t *)realloc(qwk_time,sizeof(time_t)*(i+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,str,sizeof(time_t)*(i+1)); - break; } + break; + } if((qwk_node[i]=(char *)malloc(9))==NULL) { errormsg(WHERE,ERR_ALLOC,str,9); - break; } + break; + } if((qwk_path[i]=(char *)malloc(MAX_PATH+1))==NULL) { errormsg(WHERE,ERR_ALLOC,str,MAX_PATH+1); - break; } - total_nodes++; } + break; + } + total_nodes++; + } strcpy(qwk_node[i],node); p++; while(*p && *p<=' ') p++; sprintf(qwk_path[i],"%.127s",p); - qwk_time[i]=t; } - fclose(stream); } } + qwk_time[i]=t; + } + fclose(stream); + } + + } strupr(via); p=strchr(via,'/'); /* Skip uplink */ @@ -275,25 +303,32 @@ void sbbs_t::update_qwkroute(char *via) if(i==total_nodes) { /* Not in list */ if((qwk_node=(char **)realloc(qwk_node,sizeof(char *)*(total_nodes+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,str,9*(total_nodes+1)); - break; } + break; + } if((qwk_path=(char **)realloc(qwk_path,sizeof(char *)*(total_nodes+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,str,sizeof(char *)*(total_nodes+1)); - break; } + break; + } if((qwk_time=(time_t *)realloc(qwk_time,sizeof(time_t)*(total_nodes+1))) ==NULL) { errormsg(WHERE,ERR_ALLOC,str,sizeof(time_t)*(total_nodes+1)); - break; } + break; + } if((qwk_node[total_nodes]=(char *)malloc(9))==NULL) { errormsg(WHERE,ERR_ALLOC,str,9); - break; } + break; + } if((qwk_path[total_nodes]=(char *)malloc(MAX_PATH+1))==NULL) { errormsg(WHERE,ERR_ALLOC,str,MAX_PATH+1); - break; } - total_nodes++; } + break; + } + total_nodes++; + } sprintf(qwk_node[i],"%.8s",node); sprintf(qwk_path[i],"%.*s",(int)((p-1)-via),via); qwk_time[i]=time(NULL); - p=strchr(p,'/'); } + p=strchr(p,'/'); + } } /****************************************************************************/ @@ -325,7 +360,10 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) if(!bi) { batch_download(-1); - delfiles(cfg.temp_dir,ALLFILES); } } + delfiles(cfg.temp_dir,ALLFILES); + } + + } if(useron.rest&FLAG('Q')) useron.qwk|=(QWK_EMAIL|QWK_ALLMAIL|QWK_DELMAIL); @@ -335,7 +373,8 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) smb.subnum=INVALID_SUB; if((i=smb_open(&smb))!=0) { errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return; } + return; + } mail=loadmail(&smb,&msgs,useron.number,0 ,useron.qwk&QWK_ALLMAIL ? 0 : LM_UNREAD); @@ -345,14 +384,16 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) free(mail); smb_close(&smb); errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); /* messes with the index */ - return; } + return; + } if((i=smb_getstatus(&smb))!=0) { if(msgs) free(mail); smb_close(&smb); errormsg(WHERE,ERR_READ,smb.file,i,smb.last_error); - return; } + return; + } /* Mark as READ and DELETE */ for(l=0;l<msgs;l++) { @@ -367,7 +408,8 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) telluser(&msg); msg.hdr.attr|=MSG_READ; msg.idx.attr=msg.hdr.attr; - smb_putmsg(&smb,&msg); } + smb_putmsg(&smb,&msg); + } if(!(msg.hdr.attr&MSG_PERMANENT) && ((msg.hdr.attr&MSG_KILLREAD && msg.hdr.attr&MSG_READ) || (useron.qwk&QWK_DELMAIL))) { @@ -376,15 +418,18 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) if((i=smb_putmsg(&smb,&msg))!=0) errormsg(WHERE,ERR_WRITE,smb.file,i,smb.last_error); else - deleted++; } + deleted++; + } smb_freemsgmem(&msg); - smb_unlockmsghdr(&smb,&msg); } + smb_unlockmsghdr(&smb,&msg); + } if(deleted && cfg.sys_misc&SM_DELEMAIL) delmail(useron.number,MAIL_YOUR); smb_close(&smb); if(msgs) - free(mail); } + free(mail); + } } @@ -408,7 +453,8 @@ void sbbs_t::qwk_sec() fd.dir=cfg.total_dirs; if((sav_ptr=(ulong *)malloc(sizeof(ulong)*cfg.total_subs))==NULL) { errormsg(WHERE,ERR_ALLOC,nulstr,sizeof(ulong)*cfg.total_subs); - return; } + return; + } for(i=0;i<cfg.total_subs;i++) sav_ptr[i]=subscan[i].ptr; for(i=0;i<cfg.total_prots;i++) @@ -437,17 +483,20 @@ void sbbs_t::qwk_sec() && !(useron.rest&FLAG('Q'))) continue; menu("qwk"); - continue; } + continue; + } if(ch=='S') { new_scan_cfg(SUB_CFG_NSCAN); delfiles(cfg.temp_dir,ALLFILES); - continue; } + continue; + } if(ch=='P') { new_scan_ptr_cfg(); for(i=0;i<cfg.total_subs;i++) sav_ptr[i]=subscan[i].ptr; delfiles(cfg.temp_dir,ALLFILES); - continue; } + continue; + } if(ch=='C') { while(online) { CLS; @@ -507,7 +556,8 @@ void sbbs_t::qwk_sec() useron.qwk|=QWK_EXPCTLA; else if(useron.qwk&QWK_EXPCTLA) { useron.qwk&=~QWK_EXPCTLA; - useron.qwk|=QWK_RETCTLA; } + useron.qwk|=QWK_RETCTLA; + } else useron.qwk&=~(QWK_EXPCTLA|QWK_RETCTLA); break; @@ -517,14 +567,16 @@ void sbbs_t::qwk_sec() s=uselect(0,0,0,0,0); if(s>=0) { strcpy(useron.tmpext,cfg.fcomp[s]->ext); - putuserrec(&cfg,useron.number,U_TMPEXT,3,useron.tmpext); } + putuserrec(&cfg,useron.number,U_TMPEXT,3,useron.tmpext); + } break; case 'E': if(!(useron.qwk&(QWK_EMAIL|QWK_ALLMAIL))) useron.qwk|=QWK_EMAIL; else if(useron.qwk&QWK_EMAIL) { useron.qwk&=~QWK_EMAIL; - useron.qwk|=QWK_ALLMAIL; } + useron.qwk|=QWK_ALLMAIL; + } else useron.qwk&=~(QWK_EMAIL|QWK_ALLMAIL); break; @@ -562,9 +614,11 @@ void sbbs_t::qwk_sec() useron.qwk^=QWK_EXT; break; } - putuserrec(&cfg,useron.number,U_QWK,8,ultoa(useron.qwk,str,16)); } + putuserrec(&cfg,useron.number,U_QWK,8,ultoa(useron.qwk,str,16)); + } delfiles(cfg.temp_dir,ALLFILES); - continue; } + continue; + } if(ch=='B') { /* Bidirectional QWK and REP packet transfer */ @@ -574,7 +628,8 @@ void sbbs_t::qwk_sec() subscan[i].ptr=sav_ptr[i]; remove(str); last_ns_time=ns_time; - continue; } + continue; + } bprintf(text[UploadingREP],cfg.sys_id); xfer_prot_menu(XFER_BIDIR); mnemonics(text[ProtocolOrQuit]); @@ -582,13 +637,15 @@ void sbbs_t::qwk_sec() for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->bicmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(tmp2,tmp); } + strcat(tmp2,tmp); + } ch=(char)getkeys(tmp2,0); if(ch=='Q' || sys_status&SS_ABORT || !online) { for(i=0;i<cfg.total_subs;i++) subscan[i].ptr=sav_ptr[i]; /* re-load saved pointers */ last_ns_time=ns_time; - continue; } + continue; + } for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->bicmd[0] && cfg.prot[i]->mnemonic==ch && chk_ar(cfg.prot[i]->ar,&useron,&client)) @@ -604,7 +661,8 @@ void sbbs_t::qwk_sec() || !create_batchup_lst() || !create_bimodem_pth()) { batup_total=batdn_total=0; - continue; } + continue; + } sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id); sprintf(tmp2,"%s.qwk",cfg.sys_id); padfname(tmp2,fd.name); @@ -632,7 +690,10 @@ void sbbs_t::qwk_sec() else { last_ns_time=ns_time; for(i=0;i<cfg.total_subs;i++) - subscan[i].ptr=sav_ptr[i]; } } + subscan[i].ptr=sav_ptr[i]; + } + + } else if(ch=='D') { /* Download QWK Packet of new messages */ sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id); @@ -641,7 +702,8 @@ void sbbs_t::qwk_sec() subscan[i].ptr=sav_ptr[i]; last_ns_time=ns_time; remove(str); - continue; } + continue; + } l=flength(str); bprintf(text[FiFilename],getfname(str)); @@ -665,14 +727,16 @@ void sbbs_t::qwk_sec() for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->dlcmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(tmp2,tmp); } + strcat(tmp2,tmp); + } ungetkey(useron.prot); ch=(char)getkeys(tmp2,0); if(ch=='Q' || sys_status&SS_ABORT || !online) { for(i=0;i<cfg.total_subs;i++) subscan[i].ptr=sav_ptr[i]; /* re-load saved pointers */ last_ns_time=ns_time; - continue; } + continue; + } for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->dlcmd[0] && cfg.prot[i]->mnemonic==ch && chk_ar(cfg.prot[i]->ar,&useron,&client)) @@ -704,7 +768,8 @@ void sbbs_t::qwk_sec() /* if(useron.rest&FLAG('Q') && useron.rest&FLAG('P')) { bputs(text[R_Post]); - continue; } + continue; + } */ delfiles(cfg.temp_dir,ALLFILES); @@ -716,7 +781,8 @@ void sbbs_t::qwk_sec() if(k>=cfg.total_fextrs) { bputs(text[QWKExtractionFailed]); errorlog("Couldn't extract REP packet - configuration error"); - continue; } + continue; + } /******************/ /* Receive Packet */ @@ -727,7 +793,8 @@ void sbbs_t::qwk_sec() for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->ulcmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(tmp2,tmp); } + strcat(tmp2,tmp); + } ch=(char)getkeys(tmp2,0); if(ch=='Q' || sys_status&SS_ABORT || !online) continue; @@ -742,7 +809,8 @@ void sbbs_t::qwk_sec() unpack_rep(); delfiles(cfg.temp_dir,ALLFILES); //autohangup(); - } } + } + } delfiles(cfg.temp_dir,ALLFILES); free(sav_ptr); } @@ -755,7 +823,8 @@ void sbbs_t::qwksetptr(uint subnum, char *buf, int reset) if(buf[2]=='/' && buf[5]=='/') { /* date specified */ l=dstrtounix(&cfg,buf); subscan[subnum].ptr=getmsgnum(subnum,l); - return; } + return; + } l=atol(buf); if(l>=0) /* ptr specified */ subscan[subnum].ptr=l; @@ -764,7 +833,8 @@ void sbbs_t::qwksetptr(uint subnum, char *buf, int reset) if(-l>(long)last) subscan[subnum].ptr=0; else - subscan[subnum].ptr=last+l; } + subscan[subnum].ptr=last+l; + } else if(reset) getlastmsg(subnum,&(subscan[subnum].ptr),0); } @@ -799,125 +869,151 @@ void sbbs_t::qwkcfgline(char *buf,uint subnum) if(x>=usrgrps || y>=usrsubs[x]) { bprintf(text[QWKInvalidConferenceN],l); sprintf(str,"Invalid conference number %lu",l); - logline("Q!",str); } + logline("Q!",str); + } else - subscan[usrsub[x][y]].cfg&=~SUB_CFG_NSCAN; } - return; } + subscan[usrsub[x][y]].cfg&=~SUB_CFG_NSCAN; + } + return; + } if(!strncmp(str,"ADD YOURS ",10)) { /* Add to new-scan */ subscan[subnum].cfg|=(SUB_CFG_NSCAN|SUB_CFG_YSCAN); qwksetptr(subnum,str+10,0); - return; } + return; + } else if(!strncmp(str,"YOURS ",6)) { subscan[subnum].cfg|=(SUB_CFG_NSCAN|SUB_CFG_YSCAN); qwksetptr(subnum,str+6,0); - return; } + return; + } else if(!strncmp(str,"ADD ",4)) { /* Add to new-scan */ subscan[subnum].cfg|=SUB_CFG_NSCAN; subscan[subnum].cfg&=~SUB_CFG_YSCAN; qwksetptr(subnum,str+4,0); - return; } + return; + } if(!strncmp(str,"RESET ",6)) { /* set msgptr */ qwksetptr(subnum,str+6,1); - return; } + return; + } if(!strncmp(str,"SUBPTR ",7)) { qwksetptr(subnum,str+7,1); - return; } + return; + } } if(!strncmp(str,"RESETALL ",9)) { /* set all ptrs */ for(x=y=0;x<usrgrps;x++) for(y=0;y<usrsubs[x];y++) if(subscan[usrsub[x][y]].cfg&SUB_CFG_NSCAN) - qwksetptr(usrsub[x][y],str+9,1); } + qwksetptr(usrsub[x][y],str+9,1); + } else if(!strncmp(str,"ALLPTR ",7)) { /* set all ptrs */ for(x=y=0;x<usrgrps;x++) for(y=0;y<usrsubs[x];y++) if(subscan[usrsub[x][y]].cfg&SUB_CFG_NSCAN) - qwksetptr(usrsub[x][y],str+7,1); } + qwksetptr(usrsub[x][y],str+7,1); + } else if(!strncmp(str,"FILES ",6)) { /* files list */ if(!strncmp(str+6,"ON ",3)) useron.qwk|=QWK_FILES; else if(str[8]=='/' && str[11]=='/') { /* set scan date */ useron.qwk|=QWK_FILES; - ns_time=dstrtounix(&cfg,str+6); } + ns_time=dstrtounix(&cfg,str+6); + } else - useron.qwk&=~QWK_FILES; } + useron.qwk&=~QWK_FILES; + } else if(!strncmp(str,"OWN ",4)) { /* message from you */ if(!strncmp(str+4,"ON ",3)) useron.qwk|=QWK_BYSELF; else useron.qwk&=~QWK_BYSELF; - return; } + return; + } else if(!strncmp(str,"NDX ",4)) { /* include indexes */ if(!strncmp(str+4,"OFF ",4)) useron.qwk|=QWK_NOINDEX; else - useron.qwk&=~QWK_NOINDEX; } + useron.qwk&=~QWK_NOINDEX; + } else if(!strncmp(str,"CONTROL ",8)) { /* exclude ctrl files */ if(!strncmp(str+8,"OFF ",4)) useron.qwk|=QWK_NOCTRL; else - useron.qwk&=~QWK_NOCTRL; } + useron.qwk&=~QWK_NOCTRL; + } else if(!strncmp(str,"VIA ",4)) { /* include @VIA: */ if(!strncmp(str+4,"ON ",3)) useron.qwk|=QWK_VIA; else - useron.qwk&=~QWK_VIA; } + useron.qwk&=~QWK_VIA; + } else if(!strncmp(str,"MSGID ",6)) { /* include @MSGID: */ if(!strncmp(str+6,"ON ",3)) useron.qwk|=QWK_MSGID; else - useron.qwk&=~QWK_MSGID; } + useron.qwk&=~QWK_MSGID; + } else if(!strncmp(str,"TZ ",3)) { /* include @TZ: */ if(!strncmp(str+3,"ON ",3)) useron.qwk|=QWK_TZ; else - useron.qwk&=~QWK_TZ; } + useron.qwk&=~QWK_TZ; + } else if(!strncmp(str,"ATTACH ",7)) { /* file attachments */ if(!strncmp(str+7,"ON ",3)) useron.qwk|=QWK_ATTACH; else - useron.qwk&=~QWK_ATTACH; } + useron.qwk&=~QWK_ATTACH; + } else if(!strncmp(str,"DELMAIL ",8)) { /* delete mail */ if(!strncmp(str+8,"ON ",3)) useron.qwk|=QWK_DELMAIL; else - useron.qwk&=~QWK_DELMAIL; } + useron.qwk&=~QWK_DELMAIL; + } else if(!strncmp(str,"CTRL-A ",7)) { /* Ctrl-a codes */ if(!strncmp(str+7,"KEEP ",5)) { useron.qwk|=QWK_RETCTLA; - useron.qwk&=~QWK_EXPCTLA; } + useron.qwk&=~QWK_EXPCTLA; + } else if(!strncmp(str+7,"EXPAND ",7)) { useron.qwk|=QWK_EXPCTLA; - useron.qwk&=~QWK_RETCTLA; } + useron.qwk&=~QWK_RETCTLA; + } else - useron.qwk&=~(QWK_EXPCTLA|QWK_RETCTLA); } + useron.qwk&=~(QWK_EXPCTLA|QWK_RETCTLA); + } else if(!strncmp(str,"MAIL ",5)) { /* include e-mail */ if(!strncmp(str+5,"ALL ",4)) { useron.qwk|=QWK_ALLMAIL; - useron.qwk&=~QWK_EMAIL; } + useron.qwk&=~QWK_EMAIL; + } else if(!strncmp(str+5,"ON ",3)) { useron.qwk|=QWK_EMAIL; - useron.qwk&=~QWK_ALLMAIL; } + useron.qwk&=~QWK_ALLMAIL; + } else - useron.qwk&=~(QWK_ALLMAIL|QWK_EMAIL); } + useron.qwk&=~(QWK_ALLMAIL|QWK_EMAIL); + } else if(!strncmp(str,"FREQ ",5)) { /* file request */ padfname(str+5,f.name); @@ -926,10 +1022,12 @@ void sbbs_t::qwkcfgline(char *buf,uint subnum) if(findfile(&cfg,usrdir[x][y],f.name)) break; if(y<usrdirs[x]) - break; } + break; + } if(x>=usrlibs) { bprintf("\r\n%s",f.name); - bputs(text[FileNotFound]); } + bputs(text[FileNotFound]); + } else { f.dir=usrdir[x][y]; getfileixb(&cfg,&f); @@ -938,7 +1036,10 @@ void sbbs_t::qwkcfgline(char *buf,uint subnum) if(f.size==-1L) bprintf(text[FileIsNotOnline],f.name); else - addtobatdl(&f); } } + addtobatdl(&f); + } + + } else { attr(cfg.color[clr_err]); diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp index 52c7d0a77ef970f459c40fd30cf0385c484898ce..21a143dbfd30e1fb0fe30d29a479ad01b8655ef3 100644 --- a/src/sbbs3/readmail.cpp +++ b/src/sbbs3/readmail.cpp @@ -66,14 +66,16 @@ void sbbs_t::readmail(uint usernumber, int which) if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) { errormsg(WHERE,ERR_OPEN,"MAIL",i); - return; } + return; + } sprintf(smb.file,"%smail",cfg.data_dir); smb.retry_time=cfg.smb_retry_time; smb.subnum=INVALID_SUB; if((i=smb_open(&smb))!=0) { smb_stack(&smb,SMB_STACK_POP); errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error); - return; } + return; + } if(cfg.sys_misc&SM_SYSVDELM && (SYSOP || cfg.sys_misc&SM_USRVDELM)) lm_mode=LM_INCDEL; @@ -89,7 +91,8 @@ void sbbs_t::readmail(uint usernumber, int which) bputs(text[NoMailWaiting]); smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); - return; } + return; + } last=smb.status.last_msg; @@ -123,7 +126,8 @@ void sbbs_t::readmail(uint usernumber, int which) : msg.from_net.type || msg.to_net.type ? 'N':'*' ,msg.subj); smb_freemsgmem(&msg); - msg.total_hfields=0; } + msg.total_hfields=0; + } ASYNC; if(!(sys_status&SS_ABORT)) { @@ -134,12 +138,17 @@ void sbbs_t::readmail(uint usernumber, int which) free(mail); smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); - return; } } - sys_status&=~SS_ABORT; } + return; + } + + } + sys_status&=~SS_ABORT; + } else { smb.curmsg=0; if(which==MAIL_ALL) - domsg=0; } + domsg=0; + } if(which==MAIL_SENT) { sprintf(str,"%s read sent mail",useron.alias); logline("E",str); @@ -153,7 +162,8 @@ void sbbs_t::readmail(uint usernumber, int which) if(useron.misc&RIP) { strcpy(str,which==MAIL_YOUR ? "mailread" : which==MAIL_ALL ? "allmail" : "sentmail"); - menu(str); } + menu(str); + } while(online && !done) { action=act; @@ -169,12 +179,14 @@ void sbbs_t::readmail(uint usernumber, int which) if((i=smb_locksmbhdr(&smb))!=0) { errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); - break; } + break; + } if((i=smb_getstatus(&smb))!=0) { smb_unlocksmbhdr(&smb); errormsg(WHERE,ERR_READ,smb.file,i,smb.last_error); - break; } + break; + } smb_unlocksmbhdr(&smb); if(smb.status.last_msg!=last) { /* New messages */ @@ -188,12 +200,14 @@ void sbbs_t::readmail(uint usernumber, int which) break; if(smb.curmsg>=smb.msgs) smb.curmsg=(smb.msgs-1); - continue; } + continue; + } if(!loadmsg(&msg,mail[smb.curmsg].number)) { /* Message header gone */ if(mismatches>5) { /* We can't do this too many times in a row */ errormsg(WHERE,ERR_CHK,"message number",mail[smb.curmsg].number); - break; } + break; + } free(mail); mail=loadmail(&smb,&smb.msgs,usernumber,which,lm_mode); if(!smb.msgs) @@ -201,7 +215,8 @@ void sbbs_t::readmail(uint usernumber, int which) if(smb.curmsg>(smb.msgs-1)) smb.curmsg=(smb.msgs-1); mismatches++; - continue; } + continue; + } smb_unlockmsghdr(&smb,&msg); msg.idx.attr=msg.hdr.attr; @@ -245,7 +260,8 @@ void sbbs_t::readmail(uint usernumber, int which) if(cfg.prot[i]->dlcmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(str3,tmp); } + strcat(str3,tmp); + } ch=(char)getkeys(str3,0); for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->dlcmd[0] && ch==cfg.prot[i]->mnemonic @@ -281,7 +297,8 @@ void sbbs_t::readmail(uint usernumber, int which) while(*tp==' ') tp++; } sprintf(str,"%sfile/%04u.in",cfg.data_dir,usernumber); - rmdir(str); } + rmdir(str); + } if(which==MAIL_YOUR && !(msg.hdr.attr&MSG_READ)) { mail[smb.curmsg].attr|=MSG_READ; if(thisnode.status==NODE_INUSE) @@ -298,18 +315,23 @@ void sbbs_t::readmail(uint usernumber, int which) msg.idx.attr=msg.hdr.attr; if((i=smb_putmsg(&smb,&msg))!=0) errormsg(WHERE,ERR_WRITE,smb.file,i,smb.last_error); - smb_unlockmsghdr(&smb,&msg); } - smb_unlocksmbhdr(&smb); } + smb_unlockmsghdr(&smb,&msg); + } + smb_unlocksmbhdr(&smb); + } if(!msg.total_hfields) { /* unsuccessful reload */ domsg=0; - continue; } } + continue; + } } + } else domsg=1; if(useron.misc&WIP) { strcpy(str,which==MAIL_YOUR ? "mailread" : which==MAIL_ALL ? "allmail" : "sentmail"); - menu(str); } + menu(str); + } ASYNC; if(which==MAIL_SENT) @@ -328,7 +350,8 @@ void sbbs_t::readmail(uint usernumber, int which) if(l==-1) /* ctrl-c */ break; smb.curmsg=(l&~0x80000000L)-1; - continue; } + continue; + } switch(l) { case 'A': /* Auto-reply to last piece */ case 'R': @@ -339,7 +362,8 @@ void sbbs_t::readmail(uint usernumber, int which) break; if((msg.hdr.attr&MSG_ANONYMOUS) && !SYSOP) { bputs(text[CantReplyToAnonMsg]); - break; } + break; + } quotemsg(&msg,1); @@ -373,7 +397,8 @@ void sbbs_t::readmail(uint usernumber, int which) p=strrchr(str,'@'); if(p) { /* name @addr */ replied=netmail(str,msg.subj,WM_QUOTE); - sprintf(str2,text[DeleteMailQ],msg.from); } + sprintf(str2,text[DeleteMailQ],msg.from); + } else { if(!msg.from_net.type && !stricmp(str,msg.from)) replied=email(msg.idx.from,str2,msg.subj,WM_EMAIL|WM_QUOTE); @@ -383,7 +408,8 @@ void sbbs_t::readmail(uint usernumber, int which) replied=email(i,str2,msg.subj,WM_EMAIL|WM_QUOTE); else replied=false; - sprintf(str2,text[DeleteMailQ],msg.from); } + sprintf(str2,text[DeleteMailQ],msg.from); + } if(replied==true && !(msg.hdr.attr&MSG_REPLIED)) { if(msg.total_hfields) @@ -411,7 +437,8 @@ void sbbs_t::readmail(uint usernumber, int which) if(msg.hdr.attr&MSG_PERMANENT) { bputs("\r\nPermanent message.\r\n"); domsg=0; - break; } + break; + } if(msg.total_hfields) smb_freemsgmem(&msg); msg.total_hfields=0; @@ -509,7 +536,8 @@ void sbbs_t::readmail(uint usernumber, int which) : msg.from_net.type || msg.to_net.type ? 'N':'*' ,msg.subj); smb_freemsgmem(&msg); - msg.total_hfields=0; } + msg.total_hfields=0; + } break; case 'Q': done=1; @@ -659,7 +687,8 @@ void sbbs_t::readmail(uint usernumber, int which) : msg.from_net.type || msg.to_net.type ? 'N':'*' ,msg.subj); smb_freemsgmem(&msg); - msg.total_hfields=0; } + msg.total_hfields=0; + } smb.curmsg=(i-1); break; case 'U': /* user edit */ @@ -685,7 +714,9 @@ void sbbs_t::readmail(uint usernumber, int which) menu("sysmailr"); /* Sysop Mail Read */ domsg=0; break; - } } + + } + } if(msg.total_hfields) smb_freemsgmem(&msg); @@ -708,7 +739,8 @@ void sbbs_t::readmail(uint usernumber, int which) if((i=smb_locksmbhdr(&smb))!=0) /* Lock the base, so nobody */ errormsg(WHERE,ERR_LOCK,smb.file,i,smb.last_error); /* messes with the index */ else - delmail(usernumber,which); } + delmail(usernumber,which); + } smb_close(&smb); smb_stack(&smb,SMB_STACK_POP); diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp index 0e11075919e2ece8a275aab82492b12e43d854d4..e5623c2c4cd04f1f1245046ed80ca9f4b548e3f8 100644 --- a/src/sbbs3/readmsgs.cpp +++ b/src/sbbs3/readmsgs.cpp @@ -1108,7 +1108,9 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) case '?': menu("msgscan"); domsg=0; - break; } } + break; + } + } if(msg.total_hfields) smb_freemsgmem(&msg); if(post) diff --git a/src/sbbs3/scandirs.cpp b/src/sbbs3/scandirs.cpp index 9bfc82ea73b30b06f593740b7e3967264d3e5d57..2b2f68123f2c84fa968178c5e4cbd4b98a2d5a35 100644 --- a/src/sbbs3/scandirs.cpp +++ b/src/sbbs3/scandirs.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -52,25 +52,32 @@ void sbbs_t::scandirs(long mode) ch=(char)getkeys("DLA\r",0); if(sys_status&SS_ABORT || ch==CR) { lncntr=0; - return; } + return; + } if(ch!='A') { if(mode&FL_ULTIME) { /* New file scan */ bprintf(text[NScanHdr],timestr(ns_time)); - str[0]=0; } + str[0]=0; + } else if(mode==FL_NO_HDR) { /* Search for a string */ if(!getfilespec(tmp)) return; - padfname(tmp,str); } + padfname(tmp,str); + } else if(mode==FL_FINDDESC) { /* Find text in description */ if(!noyes(text[SearchExtendedQ])) mode=FL_EXFIND; if(sys_status&SS_ABORT) { lncntr=0; - return; } + return; + } bputs(text[SearchStringPrompt]); if(!getstr(str,40,K_LINE|K_UPPER)) { lncntr=0; - return; } } } + return; + } + } + } if(ch=='D') { if((s=listfiles(usrdir[curlib][curdir[curlib]],str,0,mode))==-1) return; @@ -79,7 +86,8 @@ void sbbs_t::scandirs(long mode) bprintf(text[NFilesListed],s); else if(!s && !(mode&FL_ULTIME)) bputs(text[FileNotFound]); - return; } + return; + } if(ch=='L') { k=0; for(i=0;i<usrdirs[curlib] && !msgabort();i++) { @@ -93,13 +101,15 @@ void sbbs_t::scandirs(long mode) continue; else if((s=listfiles(usrdir[curlib][i],str,0,mode))==-1) return; - else k+=s; } + else k+=s; + } bputs("\r\1>"); if(k>1) bprintf(text[NFilesListed],k); else if(!k && !(mode&FL_ULTIME)) bputs(text[FileNotFound]); - return; } + return; + } scanalldirs(mode); } @@ -118,21 +128,26 @@ void sbbs_t::scanalldirs(long mode) k=0; if(mode&FL_ULTIME) { /* New file scan */ bprintf(text[NScanHdr],timestr(ns_time)); - str[0]=0; } + str[0]=0; + } else if(mode==FL_NO_HDR) { /* Search for a string */ if(!getfilespec(tmp)) return; - padfname(tmp,str); } + padfname(tmp,str); + } else if(mode==FL_FINDDESC) { /* Find text in description */ if(!noyes(text[SearchExtendedQ])) mode=FL_EXFIND; if(sys_status&SS_ABORT) { lncntr=0; - return; } + return; + } bputs(text[SearchStringPrompt]); if(!getstr(str,40,K_LINE|K_UPPER)) { lncntr=0; - return; } } + return; + } + } for(i=d=0;i<usrlibs;i++) { for(j=0;j<usrdirs[i] && !msgabort();j++,d++) { attr(LIGHTGRAY); @@ -145,9 +160,11 @@ void sbbs_t::scanalldirs(long mode) continue; else if((s=listfiles(usrdir[i][j],str,0,mode))==-1) return; - else k+=s; } + else k+=s; + } if(j<usrdirs[i]) /* aborted */ - break; } + break; + } bputs("\r\1>"); if(k>1) bprintf(text[NFilesListed],k); diff --git a/src/sbbs3/scansubs.cpp b/src/sbbs3/scansubs.cpp index c593e5514d831617fb568c839807201102bc4505..566cf828aec33b7223e512e73690613486a75269 100644 --- a/src/sbbs3/scansubs.cpp +++ b/src/sbbs3/scansubs.cpp @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -72,7 +72,9 @@ void sbbs_t::scansubs(long mode) logline(nulstr,tmp); if(!found) CRLF; - return; } } + return; + } + } else if(mode&SCAN_TOYOU && i) { if(ch=='S') found=listsub(usrsub[curgrp][cursub[curgrp]],SCAN_TOYOU,0,NULL); @@ -81,20 +83,25 @@ void sbbs_t::scansubs(long mode) found=listsub(usrsub[curgrp][i],SCAN_TOYOU,0,NULL); if(!found) CRLF; - return; } } + return; + } + } if(ch=='S') { if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) { - menu("msgscan"); } + menu("msgscan"); + } i=scanposts(usrsub[curgrp][cursub[curgrp]],mode,str); subs_scanned++; bputs(text[MessageScan]); if(i) bputs(text[MessageScanAborted]); else bprintf(text[MessageScanComplete],subs_scanned); - return; } + return; + } if(ch=='G') { if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) { - menu("msgscan"); } + menu("msgscan"); + } for(i=0;i<usrsubs[curgrp] && !msgabort();i++) { if(((mode&SCAN_NEW && (subscan[usrsub[curgrp][i]].cfg&SUB_CFG_NSCAN @@ -109,7 +116,8 @@ void sbbs_t::scansubs(long mode) bputs(text[MessageScan]); if(i==usrsubs[curgrp]) bprintf(text[MessageScanComplete],subs_scanned); else bputs(text[MessageScanAborted]); - return; } + return; + } scanallsubs(mode); } @@ -144,7 +152,9 @@ void sbbs_t::scanallsubs(long mode) sprintf(tmp,"%s searched %lu sub-boards for '%s'" ,useron.alias,subs_scanned,str); logline(nulstr,tmp); - return; } } + return; + } + } else if(mode&SCAN_TOYOU && i) { for(i=0;i<usrgrps;i++) { for(j=0;j<usrsubs[i] && !msgabort();j++) @@ -159,7 +169,8 @@ void sbbs_t::scanallsubs(long mode) } if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) { - menu("msgscan"); } + menu("msgscan"); + } for(i=0;i<usrgrps;i++) { for(j=0;j<usrsubs[i] && !msgabort();j++) { if(((mode&SCAN_NEW && subscan[usrsub[i][j]].cfg&SUB_CFG_NSCAN) @@ -200,7 +211,8 @@ void sbbs_t::new_scan_ptr_cfg() checkline(); if(i<9) outchar(' '); if(i<99) outchar(' '); - bprintf(text[CfgGrpLstFmt],i+1,cfg.grp[usrgrp[i]]->lname); } + bprintf(text[CfgGrpLstFmt],i+1,cfg.grp[usrgrp[i]]->lname); + } SYNC; mnemonics(text[WhichOrAll]); s=getkeys("AQ",usrgrps); @@ -219,8 +231,11 @@ void sbbs_t::new_scan_ptr_cfg() for(i=0;i<usrgrps && online;i++) for(j=0;j<usrsubs[i] && online;j++) { checkline(); - subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); } } - continue; } + subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); + } + } + continue; + } if(s=='L') s=0; if(s) @@ -233,8 +248,10 @@ void sbbs_t::new_scan_ptr_cfg() if(s>(long)l) subscan[usrsub[i][j]].ptr=0; else - subscan[usrsub[i][j]].ptr=l-s; } - continue; } + subscan[usrsub[i][j]].ptr=l-s; + } + continue; + } i=(s&~0x80000000L)-1; while(online) { l=0; @@ -247,13 +264,15 @@ void sbbs_t::new_scan_ptr_cfg() if(t>(long)l) l=t; bprintf(text[SubPtrLstFmt],j+1,cfg.sub[usrsub[i][j]]->lname - ,timestr(t),nulstr); } + ,timestr(t),nulstr); + } SYNC; mnemonics(text[WhichOrAll]); s=getkeys("AQ",usrsubs[i]); if(sys_status&SS_ABORT) { lncntr=0; - return; } + return; + } if(s==-1 || !s || s=='Q') break; if(s=='A') { /* The entire group */ @@ -268,8 +287,11 @@ void sbbs_t::new_scan_ptr_cfg() bputs(text[LoadingMsgPtrs]); for(j=0;j<usrsubs[i] && online;j++) { checkline(); - subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); } } - continue; } + subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); + } + } + continue; + } if(s=='L') s=0; if(s) @@ -281,8 +303,10 @@ void sbbs_t::new_scan_ptr_cfg() if(s>(long)l) subscan[usrsub[i][j]].ptr=0; else - subscan[usrsub[i][j]].ptr=l-s; } - continue; } + subscan[usrsub[i][j]].ptr=l-s; + } + continue; + } else { j=(s&~0x80000000L)-1; mnemonics("\r\nEnter number of messages from end, ~Date, ~Quit, or" @@ -294,8 +318,10 @@ void sbbs_t::new_scan_ptr_cfg() t=getmsgtime(usrsub[i][j],subscan[usrsub[i][j]].ptr); if(inputnstime(&t) && !(sys_status&SS_ABORT)) { bputs(text[LoadingMsgPtrs]); - subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); } - continue; } + subscan[usrsub[i][j]].ptr=getmsgnum(usrsub[i][j],t); + } + continue; + } if(s=='L') s=0; if(s) @@ -304,8 +330,10 @@ void sbbs_t::new_scan_ptr_cfg() if(s>(long)l) subscan[usrsub[i][j]].ptr=0; else - subscan[usrsub[i][j]].ptr=l-s; } - } } + subscan[usrsub[i][j]].ptr=l-s; + } + } + } } void sbbs_t::new_scan_cfg(ulong misc) @@ -320,7 +348,8 @@ void sbbs_t::new_scan_cfg(ulong misc) checkline(); if(i<9) outchar(' '); if(i<99) outchar(' '); - bprintf(text[CfgGrpLstFmt],i+1,cfg.grp[usrgrp[i]]->lname); } + bprintf(text[CfgGrpLstFmt],i+1,cfg.grp[usrgrp[i]]->lname); + } SYNC; if(misc&SUB_CFG_NSCAN) mnemonics(text[NScanCfgWhichGrp]); @@ -352,7 +381,8 @@ void sbbs_t::new_scan_cfg(ulong misc) s=getkeys("AQ",usrsubs[i]); if(sys_status&SS_ABORT) { lncntr=0; - return; } + return; + } if(!s || s==-1 || s=='Q') break; if(s=='A') { @@ -366,14 +396,20 @@ void sbbs_t::new_scan_cfg(ulong misc) else { if(misc&SUB_CFG_NSCAN) subscan[usrsub[i][j]].cfg&=~SUB_CFG_YSCAN; - subscan[usrsub[i][j]].cfg|=misc; } } - continue; } + subscan[usrsub[i][j]].cfg|=misc; + } + } + continue; + } j=(s&~0x80000000L)-1; if(misc&SUB_CFG_NSCAN && !(subscan[usrsub[i][j]].cfg&misc)) { if(!(useron.rest&FLAG('Q')) && !noyes("Messages to you only")) subscan[usrsub[i][j]].cfg|=SUB_CFG_YSCAN; else - subscan[usrsub[i][j]].cfg&=~SUB_CFG_YSCAN; } - subscan[usrsub[i][j]].cfg^=misc; } } + subscan[usrsub[i][j]].cfg&=~SUB_CFG_YSCAN; + } + subscan[usrsub[i][j]].cfg^=misc; + } + } } diff --git a/src/sbbs3/text_sec.cpp b/src/sbbs3/text_sec.cpp index 727e7ee7c346eebd9863dcf882e34560a9881919..2f1689bf110419cc1ab7af9a8be4aed2d3c60354 100644 --- a/src/sbbs3/text_sec.cpp +++ b/src/sbbs3/text_sec.cpp @@ -57,11 +57,13 @@ int sbbs_t::text_sec() for(i=j=0;i<cfg.total_txtsecs;i++) { if(!chk_ar(cfg.txtsec[i]->ar,&useron,&client)) continue; - usrsec[j++]=i; } + usrsec[j++]=i; + } usrsecs=j; if(!usrsecs) { bputs(text[NoTextSections]); - return(1); } + return(1); + } action=NODE_RTXT; while(online) { sprintf(str,"%smenu/text_sec.*",cfg.text_dir); @@ -72,7 +74,9 @@ int sbbs_t::text_sec() for(i=0;i<usrsecs && !msgabort();i++) { sprintf(str,text[TextSectionLstFmt],i+1,cfg.txtsec[usrsec[i]]->name); if(i<9) outchar(' '); - bputs(str); } } + bputs(str); + } + } ASYNC; mnemonics(text[WhichTextSection]); if((cursec=getnum(usrsecs))<1) @@ -83,47 +87,57 @@ int sbbs_t::text_sec() if(fexist(str)) { sprintf(str,"text%lu",cursec+1); menu(str); - usemenu=1; } + usemenu=1; + } else { bprintf(text[TextFilesLstHdr],cfg.txtsec[usrsec[cursec]]->name); - usemenu=0; } + usemenu=0; + } sprintf(str,"%stext/%s.ixt",cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code); j=0; if(fexist(str)) { if((stream=fnopen((int *)&i,str,O_RDONLY))==NULL) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return(0); } + return(0); + } while(!ferror(stream) && !msgabort()) { /* file open too long */ if(!fgets(str,81,stream)) break; str[strlen(str)-2]=0; /* chop off CRLF */ if((file[j]=(char *)malloc(strlen(str)+1))==NULL) { errormsg(WHERE,ERR_ALLOC,nulstr,strlen(str)+1); - continue; } + continue; + } strcpy(file[j],str); fgets(str,81,stream); if(!usemenu) bprintf(text[TextFilesLstFmt],j+1,str); - j++; } - fclose(stream); } + j++; + } + fclose(stream); + } ASYNC; if(SYSOP) { strcpy(str,"QARE?"); - mnemonics(text[WhichTextFileSysop]); } + mnemonics(text[WhichTextFileSysop]); + } else { strcpy(str,"Q?"); - mnemonics(text[WhichTextFile]); } + mnemonics(text[WhichTextFile]); + } i=getkeys(str,j); if(!(i&0x80000000L)) { /* no file number */ for(l=0;l<j;l++) free(file[l]); if((i=='E' || i=='R') && !j) - continue; } + continue; + } if(i=='Q' || !i) break; if(i==-1) { /* ctrl-c */ for(i=0;i<j;i++) free(file[i]); - return(0); } + return(0); + } if(i=='?') /* ? means re-list */ continue; if(i=='A') { /* Add text file */ @@ -149,24 +163,29 @@ int sbbs_t::text_sec() if(i==j) { /* just add to end */ if((i=nopen(str,O_WRONLY|O_APPEND|O_CREAT))==-1) { errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_APPEND|O_CREAT); - return(0); } + return(0); + } write(i,addpath,strlen(addpath)); write(i,addstr,strlen(addstr)); close(i); - continue; } + continue; + } j=i; /* inserting in middle of file */ if((stream=fnopen((int *)&i,str,O_RDWR))==NULL) { errormsg(WHERE,ERR_OPEN,str,O_RDWR); - return(0); } + return(0); + } length=filelength(i); for(i=0;i<j;i++) { /* skip two lines for each entry */ fgets(tmp,81,stream); - fgets(tmp,81,stream); } + fgets(tmp,81,stream); + } l=ftell(stream); if((buf=(char *)malloc(length-l))==NULL) { fclose(stream); errormsg(WHERE,ERR_ALLOC,str,length-l); - return(0); } + return(0); + } fread(buf,1,length-l,stream); fseek(stream,l,SEEK_SET); /* go back to where we need to insert */ fputs(addpath,stream); @@ -174,7 +193,8 @@ int sbbs_t::text_sec() fwrite(buf,1,length-l,stream); fclose(stream); free(buf); - continue; } + continue; + } if(i=='R' || i=='E') { /* Remove or Edit text file */ ch=(char)i; if(ch=='R') @@ -189,10 +209,12 @@ int sbbs_t::text_sec() j=i-1; if((stream=fnopen(NULL,str,O_RDONLY))==NULL) { errormsg(WHERE,ERR_OPEN,str,O_RDONLY); - return(0); } + return(0); + } for(i=0;i<j;i++) { /* skip two lines for each entry */ fgets(tmp,81,stream); - fgets(tmp,81,stream); } + fgets(tmp,81,stream); + } fgets(addpath,81,stream); truncsp(addpath); fclose(stream); @@ -205,14 +227,18 @@ int sbbs_t::text_sec() if(fexist(tmp)) { sprintf(str,text[DeleteTextFileQ],tmp); if(!noyes(str)) - if(remove(tmp)) errormsg(WHERE,ERR_REMOVE,tmp,0); } + if(remove(tmp)) errormsg(WHERE,ERR_REMOVE,tmp,0); + } sprintf(str,"%stext/%s.ixt" ,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code); - removeline(str,addpath,2,0); } + removeline(str,addpath,2,0); + } else { /* Edit */ strcpy(str,tmp); - editfile(str); } - continue; } + editfile(str); + } + continue; + } i=(i&~0x80000000L)-1; if(!strchr(file[i],'\\') && !strchr(file[i],'/')) sprintf(str,"%stext/%s/%s" @@ -227,7 +253,9 @@ int sbbs_t::text_sec() pause(); sys_status&=~SS_ABORT; for(i=0;i<j;i++) - free(file[i]); } } + free(file[i]); + } + } return(0); } diff --git a/src/sbbs3/tmp_xfer.cpp b/src/sbbs3/tmp_xfer.cpp index 3815b590cdd8f053bf5463f3419d7dd96f15d6a0..86c55246ae0d14bac0dd59807ba6ac0cfe1cdfce 100644 --- a/src/sbbs3/tmp_xfer.cpp +++ b/src/sbbs3/tmp_xfer.cpp @@ -58,13 +58,15 @@ void sbbs_t::temp_xfer() return; if(useron.rest&FLAG('D')) { bputs(text[R_Download]); - return; } + return; + } /*************************************/ /* Create TEMP directory information */ /*************************************/ if((cfg.dir[dirnum]=(dir_t *)malloc(sizeof(dir_t)))==0) { errormsg(WHERE,ERR_ALLOC,"temp_dir",sizeof(dir_t)); - return; } + return; + } memset(cfg.dir[dirnum],0,sizeof(dir_t)); SAFECOPY(cfg.dir[dirnum]->lname,"Temporary"); SAFECOPY(cfg.dir[dirnum]->sname,"Temp"); @@ -95,8 +97,10 @@ void sbbs_t::temp_xfer() SYNC; CRLF; if(lncntr) /* CRLF or SYNC can cause pause */ - pause(); } - menu("tempxfer"); } + pause(); + } + menu("tempxfer"); + } ASYNC; bputs(text[TempDirPrompt]); SAFECOPY(f.uler,temp_uler); @@ -119,7 +123,8 @@ void sbbs_t::temp_xfer() ,cfg.temp_dir,space); errorlog(str); if(!dir_op(dirnum)) - break; } + break; + } bprintf(text[DiskNBytesFree],ultoac(space,tmp)); if(!getfilespec(str)) break; @@ -136,7 +141,8 @@ void sbbs_t::temp_xfer() SAFEPRINTF2(str,"%s%s",cfg.temp_dir,f.name); if(!fexist(str)) { bprintf(text[TempFileNotCreatedYet],f.name); - break; } + break; + } f.size=f.cdt=flength(str); f.opencount=0; if(temp_cdt) /* if file was not free */ @@ -147,15 +153,18 @@ void sbbs_t::temp_xfer() && f.cdt>useron.cdt+useron.freecdt) { bprintf(text[YouOnlyHaveNCredits] ,ultoac(useron.cdt+useron.freecdt,tmp)); - break; } /* f.cdt must equal size here */ + break; /* f.cdt must equal size here */ + } if(!(useron.exempt&FLAG('T')) && !dir_op(dirnum) && !(cfg.dir[temp_dirnum]->misc&DIR_TFREE) && cur_cps && f.size/(ulong)cur_cps>timeleft) { bputs(text[NotEnoughTimeToDl]); - break; } + break; + } if(!chk_ar(cfg.dir[temp_dirnum]->dl_ar,&useron,&client)) { bputs(text[CantDownloadFromDir]); - break; } + break; + } addfiledat(&cfg,&f); xfer_prot_menu(XFER_DOWNLOAD); SYNC; @@ -164,7 +173,8 @@ void sbbs_t::temp_xfer() for(i=0;i<cfg.total_prots;i++) if(cfg.prot[i]->dlcmd[0] && chk_ar(cfg.prot[i]->ar,&useron,&client)) { sprintf(tmp,"%c",cfg.prot[i]->mnemonic); - strcat(tmp2,tmp); } + strcat(tmp2,tmp); + } ungetkey(useron.prot); ch=(char)getkeys(tmp2,0); for(i=0;i<cfg.total_prots;i++) @@ -265,9 +275,11 @@ void sbbs_t::temp_xfer() case '?': /* menu */ if(useron.misc&(EXPERT|RIP|WIP|HTML)) menu("tempxfer"); - break; } + break; + } if(sys_status&SS_ABORT) - break; } + break; + } free(cfg.dir[dirnum]); cfg.total_dirs--; } @@ -303,9 +315,11 @@ void sbbs_t::extract(uint dirnum) SAFEPRINTF2(str,"Diskspace is low: %s (%lu kilobytes)",cfg.temp_dir,space); errorlog(str); if(!dir_op(dirnum)) - return; } + return; + } else if(!intmp) { /* not in temp dir */ - CRLF; } + CRLF; + } bprintf(text[DiskNBytesFree],ultoac(space,tmp)); if(!intmp) { /* not extracting FROM temp directory */ @@ -333,16 +347,19 @@ void sbbs_t::extract(uint dirnum) for(i=0;i<cfg.total_fextrs;i++) if(!stricmp(str+9,cfg.fextr[i]->ext) && chk_ar(cfg.fextr[i]->ar,&useron,&client)) { SAFECOPY(excmd,cfg.fextr[i]->cmd); - break; } + break; + } if(i==cfg.total_fextrs) { bputs(text[UnextractableFile]); - return; } + return; + } if(!intmp && !findfile(&cfg,dirnum,f.name)) { /* not temp dir */ bputs(text[SearchingAllDirs]); for(i=0;i<usrdirs[curlib] && !msgabort();i++) { if(i==dirnum) continue; if(findfile(&cfg,usrdir[curlib][i],f.name)) - break; } + break; + } if(i==usrdirs[curlib]) { /* not found in cur lib */ bputs(text[SearchingAllLibs]); for(i=j=0;i<usrlibs;i++) { @@ -351,13 +368,17 @@ void sbbs_t::extract(uint dirnum) if(findfile(&cfg,usrdir[i][j],f.name)) break; if(j<usrdirs[i]) - break; } + break; + } if(i==usrlibs) { bputs(text[FileNotFound]); /* not in database */ - return; } - dirnum=usrdir[i][j]; } + return; + } + dirnum=usrdir[i][j]; + } else - dirnum=usrdir[curlib][i]; } + dirnum=usrdir[curlib][i]; + } if(sys_status&SS_ABORT) return; SAFEPRINTF2(path,"%s%s",cfg.dir[dirnum]->path,fname); @@ -378,7 +399,8 @@ void sbbs_t::extract(uint dirnum) else temp_cdt=f.cdt; SAFECOPY(temp_uler,f.uler); - SAFECOPY(temp_file,f.name); } /* padded filename */ + SAFECOPY(temp_file,f.name); /* padded filename */ + } if(!fexistcase(path)) { bprintf(text[FileDoesNotExist],path); /* not on disk */ return; @@ -395,7 +417,8 @@ void sbbs_t::extract(uint dirnum) if((i=external(cmdstr(excmd,path,str,NULL) ,EX_INR|EX_OUTL|EX_OUTR))!=0) { errormsg(WHERE,ERR_EXEC,cmdstr(excmd,path,str,NULL),i); - return; } + return; + } SAFEPRINTF3(tmp,"%s extracted %s from %s",useron.alias,str,path); logline(nulstr,tmp); CRLF; @@ -405,7 +428,9 @@ void sbbs_t::extract(uint dirnum) break; default: done=1; - break; } } + break; + } + } } /****************************************************************************/ @@ -423,11 +448,13 @@ ulong sbbs_t::create_filelist(const char *name, long mode) SAFEPRINTF2(str,"%s%s",cfg.temp_dir,name); if((file=nopen(str,O_CREAT|O_WRONLY|O_APPEND))==-1) { errormsg(WHERE,ERR_OPEN,str,O_CREAT|O_WRONLY|O_APPEND); - return(0); } + return(0); + } k=0; if(mode&FL_ULTIME) { SAFEPRINTF(str,"New files since: %s\r\n",timestr(ns_time)); - write(file,str,strlen(str)); } + write(file,str,strlen(str)); + } for(i=j=d=0;i<usrlibs;i++) { for(j=0;j<usrdirs[i];j++,d++) { outchar('.'); @@ -440,19 +467,23 @@ ulong sbbs_t::create_filelist(const char *name, long mode) l=listfiles(usrdir[i][j],nulstr,file,mode); if((long)l==-1) break; - k+=l; } + k+=l; + } if(j<usrdirs[i]) - break; } + break; + } if(k>1) { SAFEPRINTF(str,"\r\n%ld Files Listed.\r\n",k); - write(file,str,strlen(str)); } + write(file,str,strlen(str)); + } close(file); if(k) bprintf(text[CreatedFileList],name); else { bputs(text[NoFiles]); SAFEPRINTF2(str,"%s%s",cfg.temp_dir,name); - remove(str); } + remove(str); + } SAFECOPY(temp_file,name); SAFECOPY(temp_uler,"File List"); return(k); @@ -468,7 +499,8 @@ char * sbbs_t::temp_cmd(void) if(!cfg.total_fcomps) { errormsg(WHERE,ERR_CHK,"compressible file types",0); - return(nulstr); } + return(nulstr); + } for(i=0;i<cfg.total_fcomps;i++) if(!stricmp(useron.tmpext,cfg.fcomp[i]->ext) && chk_ar(cfg.fcomp[i]->ar,&useron,&client)) diff --git a/src/sbbs3/viewfile.cpp b/src/sbbs3/viewfile.cpp index 61b50a7210a9b50cea8ce393317d54d128fadbb0..b46fee00476875378c7f56f8868cb71cfb26b68f 100644 --- a/src/sbbs3/viewfile.cpp +++ b/src/sbbs3/viewfile.cpp @@ -73,7 +73,9 @@ int sbbs_t::viewfile(file_t* f, int ext) ext=0; continue; case CR: - return(1); } } + return(1); + } + } return(0); } @@ -91,16 +93,19 @@ void sbbs_t::viewfiles(uint dirnum, char *fspec) sprintf(viewcmd,"%s%s",cfg.dir[dirnum]->path,fspec); if(!fexist(viewcmd)) { bputs(text[FileNotFound]); - return; } + return; + } padfname(fspec,tmp); truncsp(tmp); for(i=0;i<cfg.total_fviews;i++) if(!stricmp(tmp+9,cfg.fview[i]->ext) && chk_ar(cfg.fview[i]->ar,&useron,&client)) { strcpy(viewcmd,cfg.fview[i]->cmd); - break; } + break; + } if(i==cfg.total_fviews) { bprintf(text[NonviewableFile],tmp+9); - return; } + return; + } sprintf(tmp,"%s%s",cfg.dir[dirnum]->path,fspec); if((i=external(cmdstr(viewcmd,tmp,tmp,NULL),EX_OUTL|EX_OUTR|EX_INR|EX_SH))!=0) errormsg(WHERE,ERR_EXEC,viewcmd,i); /* must of EX_SH to ^C */