--- sbbs/src/sbbs3/execfunc.cpp 2018/04/24 16:41:23 1.1 +++ sbbs/src/sbbs3/execfunc.cpp 2018/04/24 16:42:40 1.1.1.2 @@ -2,13 +2,13 @@ /* Hi-level command shell/module routines (functions) */ -/* $Id: execfunc.cpp,v 1.1 2018/04/24 16:41:23 root Exp $ */ +/* $Id: execfunc.cpp,v 1.1.1.2 2018/04/24 16:42:40 root Exp $ */ /**************************************************************************** * @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 2011 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,13 +110,14 @@ int sbbs_t::exec_function(csi_t *csi) xtrn_sec(); return(0); case CS_LOGOFF: - if(!noyes(text[LogOffQ])) { + if(text[LogOffQ][0]==0 || !noyes(text[LogOffQ])) { if(cfg.logoff_mod[0]) exec_bin(cfg.logoff_mod,csi); user_event(EVENT_LOGOFF); menu("logoff"); SYNC; - hangup(); } + hangup(); + } return(0); case CS_LOGOFF_FAST: SYNC; @@ -180,9 +181,10 @@ 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)) + || (cfg.msg_misc&MM_REALNAME && (i=userdatdupe(0,U_NAME,LEN_NAME,csi->str))!=0)) email(i,nulstr,nulstr,WM_EMAIL); csi->logic=!i; return(0); @@ -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,9 +216,10 @@ 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)) + || (cfg.msg_misc&MM_REALNAME && (i=userdatdupe(0,U_NAME,LEN_NAME,csi->str))!=0)) email(i,nulstr,nulstr,WM_EMAIL|WM_FILE); csi->logic=!i; return(0); @@ -271,16 +276,18 @@ int sbbs_t::exec_function(csi_t *csi) if(fexist(str)) { bputs(text[ErrorLogHdr]); printfile(str,0); - if(!noyes(text[DeleteErrorLogQ])) - remove(str); } + if(text[DeleteErrorLogQ][0] && !noyes(text[DeleteErrorLogQ])) + remove(str); + } else - bputs(text[NoErrorLogExists]); + 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])) { + if(text[ClearErrCounter][0]==0 || !noyes(text[ClearErrCounter])) { for(i=1;i<=cfg.sys_nodes;i++) { if(getnodedat(i,&node,true)==0) { node.errors=0; @@ -315,8 +322,9 @@ int sbbs_t::exec_function(csi_t *csi) if(fexist(str)) { printfile(str,0); CRLF; - if(!noyes(text[DeleteGuruLogQ])) - remove(str); } + if(text[DeleteGuruLogQ][0] && !noyes(text[DeleteGuruLogQ])) + 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;istr,"LIB")) { /* current library */ for(i=0;istr)) { 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;joffline_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;ioffline_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;istr,"LIB")) { for(i=0;ioffline_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);