Skip to content
Snippets Groups Projects
Commit bc8d8dcf authored by rswindell's avatar rswindell
Browse files

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.
parent 949a1677
No related branches found
No related tags found
No related merge requests found
......@@ -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 */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment