From 2bc211ec1f84e90f2e07997f6921d855639200c2 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 27 Nov 2015 11:17:54 +0000 Subject: [PATCH] New feature: similar to setting New User's new-msg-scan initial values (days of messages), you can now set the Guest accounts new-msg-scan values. The default is 0 (no new messages). Using a value of 0 for this or the New User Days of Messages value results in a very fast message pointer initialization (no "Loading Message Pointers..." delay). --- src/sbbs3/data_ovl.cpp | 4 ++-- src/sbbs3/scfgdefs.h | 1 + src/sbbs3/scfglib1.c | 3 ++- src/sbbs3/scfgsave.c | 3 ++- src/sbbs3/userdat.c | 21 +++++++++++++-------- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/sbbs3/data_ovl.cpp b/src/sbbs3/data_ovl.cpp index a0d817540a..5a93184d02 100644 --- a/src/sbbs3/data_ovl.cpp +++ b/src/sbbs3/data_ovl.cpp @@ -47,13 +47,13 @@ void sbbs_t::getmsgptrs() if(!useron.number) return; bputs(text[LoadingMsgPtrs]); - ::getmsgptrs(&cfg,useron.number,subscan); + ::getmsgptrs(&cfg,(useron.rest&FLAG('G')) ? 0:useron.number,subscan); bputs(text[LoadedMsgPtrs]); } void sbbs_t::putmsgptrs() { - ::putmsgptrs(&cfg,useron.number,subscan); + ::putmsgptrs(&cfg,(useron.rest&FLAG('G')) ? 0:useron.number,subscan); } /****************************************************************************/ diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h index 66bd149f85..284594d786 100644 --- a/src/sbbs3/scfgdefs.h +++ b/src/sbbs3/scfgdefs.h @@ -499,6 +499,7 @@ typedef struct uint16_t new_expire; /* Expiration days for new user */ uchar new_prot; /* New User Default Download Protocol */ uint16_t new_msgscan_init; /* Uew User new-scan pointers initialized to msgs this old (in days) */ + uint16_t guest_msgscan_init; /* Guest new-scan pointers initialized to msgs this old (in days) */ char val_level[10]; /* Validation User Main Level */ uint32_t val_flags1[10]; /* Validation User Flags from set #1*/ uint32_t val_flags2[10]; /* Validation User Flags from set #2*/ diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index 3c3e58ca08..5a0abc29b9 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -277,7 +277,8 @@ BOOL read_main_cfg(scfg_t* cfg, char* error) cfg->new_prot=' '; get_int(cfg->new_install,instream); get_int(cfg->new_msgscan_init,instream); - for(i=0;i<6;i++) + get_int(cfg->guest_msgscan_init,instream); + for(i=0;i<5;i++) get_int(n,instream); /*************************/ diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c index 953e762aa8..c26ee943cd 100644 --- a/src/sbbs3/scfgsave.c +++ b/src/sbbs3/scfgsave.c @@ -352,8 +352,9 @@ BOOL DLLCALL write_main_cfg(scfg_t* cfg, int backup_level) put_int(cfg->new_prot,stream); put_int(cfg->new_install,stream); put_int(cfg->new_msgscan_init, stream); + put_int(cfg->guest_msgscan_init, stream); n=0; - for(i=0;i<6;i++) + for(i=0;i<5;i++) put_int(n,stream); put_int(cfg->expired_level,stream); diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 6df0f2b6c7..cc2f46deab 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -2837,7 +2837,8 @@ ulong DLLCALL loginFailure(link_list_t* list, const union xp_sockaddr* addr, con } /****************************************************************************/ -/* Message-new-scan pointer functions (moved from data_ovl.cpp): */ +/* Message-new-scan pointer/configuration functions */ +/* Pass usernumber value of 0 to indicate "Guest" login */ /****************************************************************************/ BOOL DLLCALL getmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) { @@ -2859,9 +2860,9 @@ BOOL DLLCALL getmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) subscan[i].sav_cfg=subscan[i].cfg; } - if(!usernumber) - return(FALSE); - + if(usernumber == 0) /* guest */ + return initmsgptrs(cfg, subscan, cfg->guest_msgscan_init); + SAFEPRINTF2(path,"%suser/ptrs/%4.4u.ixb", cfg->data_dir, usernumber); if((stream=fnopen(&file,path,O_RDONLY))==NULL) { if(fexist(path)) @@ -2886,8 +2887,8 @@ BOOL DLLCALL getmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) } /****************************************************************************/ -/* Writes to DATA\USER\PTRS\xxxx.DAB the msgptr array for the current user */ -/* Called from functions main and newuser */ +/* Writes to data/user/ptrs/*.ixb the msgptr array for the current user */ +/* Pass usernumber value of 0 to indicate "Guest" login */ /****************************************************************************/ BOOL DLLCALL putmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) { @@ -2899,8 +2900,8 @@ BOOL DLLCALL putmsgptrs(scfg_t* cfg, uint usernumber, subscan_t* subscan) ulong length; uint32_t l=0L; - if(!usernumber) - return(FALSE); + if(usernumber == 0) /* Guest */ + return(TRUE); SAFEPRINTF2(path,"%suser/ptrs/%4.4u.ixb", cfg->data_dir, usernumber); if((file=nopen(path,O_WRONLY|O_CREAT))==-1) { return(FALSE); @@ -2954,6 +2955,10 @@ BOOL DLLCALL initmsgptrs(scfg_t* cfg, subscan_t* subscan, unsigned days) time_t t = time(NULL) - (days * 24 * 60 * 60); for(i=0;i<cfg->total_subs;i++) { + if(days == 0) { + subscan[i].sav_ptr = subscan[i].ptr = ~0; + continue; + } ZERO_VAR(smb); SAFEPRINTF2(smb.file,"%s%s",cfg->sub[i]->data_dir,cfg->sub[i]->code); smb.retry_time=cfg->smb_retry_time; -- GitLab