From bc8d8dcfbd22ee0bdfcba2bcda6bcb7f9a5df327 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Mon, 29 Mar 2004 22:59:54 +0000 Subject: [PATCH] Cleaned up get_msg_ptrs() - only initialize default values in one place. put_msg_ptrs() now disables N/S scan cfg for unknown sub pointer indexes. --- src/sbbs3/data_ovl.cpp | 66 ++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/src/sbbs3/data_ovl.cpp b/src/sbbs3/data_ovl.cpp index b50753caba..ba77569190 100644 --- a/src/sbbs3/data_ovl.cpp +++ b/src/sbbs3/data_ovl.cpp @@ -61,35 +61,30 @@ extern "C" BOOL DLLCALL getmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subs if(!usernumber) return(FALSE); + + /* Initialize to configured defaults */ + for(i=0;i<cfg->total_subs;i++) { + subscan[i].ptr=subscan[i].sav_ptr=0; + subscan[i].last=subscan[i].sav_last=0; + subscan[i].cfg=0xff; + if(!(cfg->sub[i]->misc&SUB_NSDEF)) + subscan[i].cfg&=~SUB_CFG_NSCAN; + if(!(cfg->sub[i]->misc&SUB_SSDEF)) + subscan[i].cfg&=~SUB_CFG_SSCAN; + subscan[i].sav_cfg=subscan[i].cfg; + } + sprintf(str,"%suser/ptrs/%4.4u.ixb", cfg->data_dir,usernumber); - if((stream=fnopen(&file,str,O_RDONLY))==NULL) { - for(i=0;i<cfg->total_subs;i++) { - subscan[i].ptr=subscan[i].sav_ptr=0; - subscan[i].last=subscan[i].sav_last=0; - subscan[i].cfg=0; - if(cfg->sub[i]->misc&SUB_NSDEF) - subscan[i].cfg|=SUB_CFG_NSCAN; - if(cfg->sub[i]->misc&SUB_SSDEF) - subscan[i].cfg|=SUB_CFG_SSCAN; - subscan[i].sav_cfg=subscan[i].cfg; - } + if((stream=fnopen(&file,str,O_RDONLY))==NULL) return(TRUE); - } + length=filelength(file); for(i=0;i<cfg->total_subs;i++) { - if(length<(cfg->sub[i]->ptridx+1)*10L) { - subscan[i].ptr=subscan[i].last=0L; - subscan[i].cfg=0; - if(cfg->sub[i]->misc&SUB_NSDEF) - subscan[i].cfg|=SUB_CFG_NSCAN; - if(cfg->sub[i]->misc&SUB_SSDEF) - subscan[i].cfg|=SUB_CFG_SSCAN; - } - else { + if(length>=(cfg->sub[i]->ptridx+1)*10L) { fseek(stream,(long)cfg->sub[i]->ptridx*10L,SEEK_SET); - fread(&subscan[i].ptr,sizeof(long),1,stream); - fread(&subscan[i].last,sizeof(long),1,stream); - fread(&subscan[i].cfg,sizeof(short),1,stream); + fread(&subscan[i].ptr,sizeof(subscan[i].ptr),1,stream); + fread(&subscan[i].last,sizeof(subscan[i].last),1,stream); + fread(&subscan[i].cfg,sizeof(subscan[i].cfg),1,stream); } subscan[i].sav_ptr=subscan[i].ptr; subscan[i].sav_last=subscan[i].last; @@ -111,7 +106,7 @@ void sbbs_t::putmsgptrs() extern "C" BOOL DLLCALL putmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) { char str[256]; - ushort idx,ch; + ushort idx,scancfg; uint i,j; int file; ulong l=0L,length; @@ -135,21 +130,22 @@ extern "C" BOOL DLLCALL putmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subs for(j=0;j<cfg->total_subs;j++) if(cfg->sub[j]->ptridx==idx) break; - write(file,&l,sizeof(long)); - write(file,&l,sizeof(long)); - ch=0xff; /* default to scan ON for new sub */ + write(file,&l,sizeof(l)); + write(file,&l,sizeof(l)); + scancfg=0xff; if(j<cfg->total_subs) { if(!(cfg->sub[j]->misc&SUB_NSDEF)) - ch&=~SUB_CFG_NSCAN; + scancfg&=~SUB_CFG_NSCAN; if(!(cfg->sub[j]->misc&SUB_SSDEF)) - ch&=~SUB_CFG_SSCAN; - } - write(file,&ch,sizeof(short)); + scancfg&=~SUB_CFG_SSCAN; + } else /* default to scan OFF for unknown sub */ + scancfg&=~(SUB_CFG_NSCAN|SUB_CFG_SSCAN); + write(file,&scancfg,sizeof(scancfg)); } lseek(file,(long)((long)(cfg->sub[i]->ptridx)*10),SEEK_SET); - write(file,&(subscan[i].ptr),sizeof(long)); - write(file,&(subscan[i].last),sizeof(long)); - write(file,&(subscan[i].cfg),sizeof(short)); + write(file,&(subscan[i].ptr),sizeof(subscan[i].ptr)); + write(file,&(subscan[i].last),sizeof(subscan[i].last)); + write(file,&(subscan[i].cfg),sizeof(subscan[i].cfg)); } close(file); if(!flength(str)) /* Don't leave 0 byte files */ -- GitLab