--- sbbs/src/sbbs3/str.cpp 2018/04/24 16:41:23 1.1.1.1 +++ sbbs/src/sbbs3/str.cpp 2018/04/24 16:43:33 1.1.1.2 @@ -2,13 +2,13 @@ /* Synchronet high-level string i/o routines */ -/* $Id: str.cpp,v 1.1.1.1 2018/04/24 16:41:23 root Exp $ */ +/* $Id: str.cpp,v 1.1.1.2 2018/04/24 16:43:33 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 * @@ -69,11 +69,11 @@ void sbbs_t::userlist(long mode) if(mode==UL_SUB) { if(!usrgrps) continue; - if(!chk_ar(cfg.grp[usrgrp[curgrp]]->ar,&user)) + if(!chk_ar(cfg.grp[usrgrp[curgrp]]->ar,&user,/* client: */NULL)) continue; - if(!chk_ar(cfg.sub[usrsub[curgrp][cursub[curgrp]]]->ar,&user) + if(!chk_ar(cfg.sub[usrsub[curgrp][cursub[curgrp]]]->ar,&user,/* client: */NULL) || (cfg.sub[usrsub[curgrp][cursub[curgrp]]]->read_ar[0] - && !chk_ar(cfg.sub[usrsub[curgrp][cursub[curgrp]]]->read_ar,&user))) + && !chk_ar(cfg.sub[usrsub[curgrp][cursub[curgrp]]]->read_ar,&user,/* client: */NULL))) continue; } else if(mode==UL_DIR) { @@ -81,9 +81,9 @@ void sbbs_t::userlist(long mode) continue; if(!usrlibs) continue; - if(!chk_ar(cfg.lib[usrlib[curlib]]->ar,&user)) + if(!chk_ar(cfg.lib[usrlib[curlib]]->ar,&user,/* client: */NULL)) continue; - if(!chk_ar(cfg.dir[usrdir[curlib][curdir[curlib]]]->ar,&user)) + if(!chk_ar(cfg.dir[usrdir[curlib][curdir[curlib]]]->ar,&user,/* client: */NULL)) continue; } if(sort) { @@ -149,7 +149,7 @@ void sbbs_t::sif(char *fname, char *answ answers[0]=0; return; } - length=filelength(file); + length=(long)filelength(file); if((buf=(char *)malloc(length))==0) { close(file); errormsg(WHERE,ERR_ALLOC,str,length); @@ -250,15 +250,15 @@ void sbbs_t::sif(char *fname, char *answ cr=1; m++; } - if(isdigit(buf[m+1])) { + if(isdigit((uchar)buf[m+1])) { max=buf[++m]&0xf; - if(isdigit(buf[m+1])) + if(isdigit((uchar)buf[m+1])) max=max*10+(buf[++m]&0xf); } - if(buf[m+1]=='.' && isdigit(buf[m+2])) { + if(buf[m+1]=='.' && isdigit((uchar)buf[m+2])) { m++; min=buf[++m]&0xf; - if(isdigit(buf[m+1])) + if(isdigit((uchar)buf[m+1])) min=min*10+(buf[++m]&0xf); } if(buf[m+1]=='"') { @@ -316,7 +316,7 @@ void sbbs_t::sof(char *fname, char *answ answers[0]=0; return; } - length=filelength(file); + length=(long)filelength(file); if((buf=(char *)malloc(length))==0) { close(file); errormsg(WHERE,ERR_ALLOC,str,length); @@ -396,15 +396,15 @@ void sbbs_t::sof(char *fname, char *answ cr=1; m++; } - if(isdigit(buf[m+1])) { + if(isdigit((uchar)buf[m+1])) { max=buf[++m]&0xf; - if(isdigit(buf[m+1])) + if(isdigit((uchar)buf[m+1])) max=max*10+(buf[++m]&0xf); } - if(buf[m+1]=='.' && isdigit(buf[m+2])) { + if(buf[m+1]=='.' && isdigit((uchar)buf[m+2])) { m++; min=buf[++m]&0xf; - if(isdigit(buf[m+1])) + if(isdigit((uchar)buf[m+1])) min=min*10+(buf[++m]&0xf); } if(buf[m+1]=='"') { @@ -465,7 +465,7 @@ void sbbs_t::read_sif_dat(char *siffile, errormsg(WHERE,ERR_OPEN,datfile,O_RDONLY); return; } - length=filelength(file); + length=(long)filelength(file); if(!length) { close(file); return; @@ -486,7 +486,7 @@ void sbbs_t::read_sif_dat(char *siffile, /* First character MUST be an A,N or !. */ /* Modes - K_LINE and K_UPPER are supported. */ /****************************************************************************/ -size_t sbbs_t::gettmplt(char *strout,char *templt, long mode) +size_t sbbs_t::gettmplt(char *strout, const char *templt, long mode) { char ch,str[256]; char tmplt[128]; @@ -536,9 +536,9 @@ size_t sbbs_t::gettmplt(char *strout,cha } } else if(cpass)) { bputs(text[PasswordNotChanged]); - return(0); + return(false); } d=strlen(pass); for(c=1;cname); strupr(name); @@ -758,9 +768,9 @@ bool sbbs_t::chkpass(char *passwd, user_ ) { bputs(text[PasswordObvious]); - return(0); + return(false); } - return(1); + return(!trashcan(pass,"password")); } /****************************************************************************/ @@ -768,7 +778,7 @@ bool sbbs_t::chkpass(char *passwd, user_ /****************************************************************************/ void sbbs_t::subinfo(uint subnum) { - char str[256]; + char str[MAX_PATH+1]; bputs(text[SubInfoHdr]); bprintf(text[SubInfoLongName],cfg.sub[subnum]->lname); @@ -781,7 +791,7 @@ void sbbs_t::subinfo(uint subnum) bprintf(text[SubInfoFidoNet] ,cfg.sub[subnum]->origline ,smb_faddrtoa(&cfg.sub[subnum]->faddr,str)); - sprintf(str,"%s%s.msg",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code); + SAFEPRINTF2(str,"%s%s.msg",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code); if(fexist(str) && yesno(text[SubInfoViewFileQ])) printfile(str,0); } @@ -791,7 +801,7 @@ void sbbs_t::subinfo(uint subnum) /****************************************************************************/ void sbbs_t::dirinfo(uint dirnum) { - char str[256]; + char str[MAX_PATH+1]; bputs(text[DirInfoHdr]); bprintf(text[DirInfoLongName],cfg.dir[dirnum]->lname); @@ -799,7 +809,7 @@ void sbbs_t::dirinfo(uint dirnum) if(cfg.dir[dirnum]->exts[0]) bprintf(text[DirInfoAllowedExts],cfg.dir[dirnum]->exts); bprintf(text[DirInfoMaxFiles],cfg.dir[dirnum]->maxfiles); - sprintf(str,"%s%s.msg",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); + SAFEPRINTF2(str,"%s%s.msg",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code); if(fexist(str) && yesno(text[DirInfoViewFileQ])) printfile(str,0); } @@ -809,7 +819,7 @@ void sbbs_t::dirinfo(uint dirnum) /* Returns TRUE if found in list, FALSE if not. */ /* Displays bad.can in text directory if found. */ /****************************************************************************/ -bool sbbs_t::trashcan(char *insearchof, char *name) +bool sbbs_t::trashcan(const char *insearchof, const char *name) { char str[MAX_PATH+1]; bool result; @@ -826,7 +836,7 @@ bool sbbs_t::trashcan(char *insearchof, return(result); } -char* sbbs_t::timestr(time_t *intime) +char* sbbs_t::timestr(time_t intime) { return(::timestr(&cfg,intime,timestr_output)); } @@ -845,22 +855,25 @@ void sbbs_t::sys_info() bprintf(text[SiSysFaddr],smb_faddrtoa(&cfg.faddr[i],tmp)); if(cfg.sys_psname[0]) /* PostLink/PCRelay */ bprintf(text[SiSysPsite],cfg.sys_psname,cfg.sys_psnum); - bprintf(text[SiSysLocation],cfg.sys_location); - bprintf(text[SiSysop],cfg.sys_op); + if(cfg.sys_location[0]) + bprintf(text[SiSysLocation],cfg.sys_location); + if(cfg.sys_op[0]) + bprintf(text[SiSysop],cfg.sys_op); bprintf(text[SiSysNodes],cfg.sys_nodes); // bprintf(text[SiNodeNumberName],cfg.node_num,cfg.node_name); - bprintf(text[SiNodePhone],cfg.node_phone); + if(cfg.node_phone[0]) + bprintf(text[SiNodePhone],cfg.node_phone); bprintf(text[SiTotalLogons],ultoac(stats.logons,tmp)); bprintf(text[SiLogonsToday],ultoac(stats.ltoday,tmp)); bprintf(text[SiTotalTime],ultoac(stats.timeon,tmp)); bprintf(text[SiTimeToday],ultoac(stats.ttoday,tmp)); ver(); - if(yesno(text[ViewSysInfoFileQ])) { + if(text[ViewSysInfoFileQ][0] && yesno(text[ViewSysInfoFileQ])) { CLS; sprintf(tmp,"%ssystem.msg", cfg.text_dir); printfile(tmp,0); } - if(yesno(text[ViewLogonMsgQ])) { + if(text[ViewLogonMsgQ][0] && yesno(text[ViewLogonMsgQ])) { CLS; menu("logon"); } @@ -950,7 +963,7 @@ void sbbs_t::xfer_prot_menu(enum XFER_TY CRLF; int printed=0; for(int i=0;iar,&useron)) + if(!chk_ar(cfg.prot[i]->ar,&useron,&client)) continue; if(type==XFER_UPLOAD && cfg.prot[i]->ulcmd[0]==0) continue;