diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 86a79dddb001861ce14d4667dcdc8270358c7676..a7da2cadd76a84689339a302b6e9b3fabdb09b06 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -1472,6 +1472,7 @@ void event_thread(void* arg) int file; int offset; bool check_semaphores; + bool packed_rep; ulong l; time_t now; time_t start; @@ -1816,7 +1817,10 @@ void event_thread(void* arg) } if(file!=-1) close(file); - if(sbbs->pack_rep(i)) { + sbbs->console|=CON_L_ECHO; + packed_rep=sbbs->pack_rep(i); + sbbs->console&=~CON_L_ECHO; + if(packed_rep) { if((file=sbbs->nopen(str,O_WRONLY|O_CREAT))==-1) sbbs->errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT); else { @@ -3163,7 +3167,9 @@ void node_thread(void* arg) char str[128]; char uname[LEN_ALIAS+1]; int file; - uint i,j; + uint i; + uint usernum; + uint lastusernum; uint curshell=0; time_t now; node_t node; @@ -3290,30 +3296,34 @@ void node_thread(void* arg) lprintf(LOG_INFO,"Node %d Checking for inactive/expired user records..." ,sbbs->cfg.node_num); - j=lastuser(&sbbs->cfg); - for(i=1;i<=j;i++) { + lastusernum=lastuser(&sbbs->cfg); + for(usernum=2;usernum<=lastusernum;usernum++) { - sprintf(str,"%5u of %-5u",i,j); + sprintf(str,"%5u of %-5u",usernum,lastusernum); status(str); - user.number=i; - getuserdat(&sbbs->cfg,&user); + user.number=usernum; + if((i=getuserdat(&sbbs->cfg,&user))!=0) { + sprintf(str,"user record %u",usernum); + sbbs->errormsg(WHERE,ERR_READ,str,i); + continue; + } /***********************************************/ /* Fix name (name.dat and user.dat) mismatches */ /***********************************************/ - username(&sbbs->cfg,i,uname); + username(&sbbs->cfg,user.number,uname); if(user.misc&DELETED) { if(strcmp(uname,"DELETED USER")) - putusername(&sbbs->cfg,i,nulstr); + putusername(&sbbs->cfg,user.number,nulstr); continue; } if(strcmp(user.alias,uname)) - putusername(&sbbs->cfg,i,user.alias); + putusername(&sbbs->cfg,user.number,user.alias); if(!(user.misc&(DELETED|INACTIVE)) && user.expire && (ulong)user.expire<=(ulong)now) { - putsmsg(&sbbs->cfg,i,sbbs->text[AccountHasExpired]); + putsmsg(&sbbs->cfg,user.number,sbbs->text[AccountHasExpired]); sprintf(str,"%s #%u Expired",user.alias,user.number); sbbs->logentry("!%",str); if(sbbs->cfg.level_misc[user.level]&LEVEL_EXPTOVAL @@ -3344,14 +3354,14 @@ void node_thread(void* arg) user.rest|=sbbs->cfg.expired_rest; user.expire=0; } - putuserrec(&sbbs->cfg,i,U_LEVEL,2,ultoa(user.level,str,10)); - putuserrec(&sbbs->cfg,i,U_FLAGS1,8,ultoa(user.flags1,str,16)); - putuserrec(&sbbs->cfg,i,U_FLAGS2,8,ultoa(user.flags2,str,16)); - putuserrec(&sbbs->cfg,i,U_FLAGS3,8,ultoa(user.flags3,str,16)); - putuserrec(&sbbs->cfg,i,U_FLAGS4,8,ultoa(user.flags4,str,16)); - putuserrec(&sbbs->cfg,i,U_EXPIRE,8,ultoa(user.expire,str,16)); - putuserrec(&sbbs->cfg,i,U_EXEMPT,8,ultoa(user.exempt,str,16)); - putuserrec(&sbbs->cfg,i,U_REST,8,ultoa(user.rest,str,16)); + putuserrec(&sbbs->cfg,user.number,U_LEVEL,2,ultoa(user.level,str,10)); + putuserrec(&sbbs->cfg,user.number,U_FLAGS1,8,ultoa(user.flags1,str,16)); + putuserrec(&sbbs->cfg,user.number,U_FLAGS2,8,ultoa(user.flags2,str,16)); + putuserrec(&sbbs->cfg,user.number,U_FLAGS3,8,ultoa(user.flags3,str,16)); + putuserrec(&sbbs->cfg,user.number,U_FLAGS4,8,ultoa(user.flags4,str,16)); + putuserrec(&sbbs->cfg,user.number,U_EXPIRE,8,ultoa(user.expire,str,16)); + putuserrec(&sbbs->cfg,user.number,U_EXEMPT,8,ultoa(user.exempt,str,16)); + putuserrec(&sbbs->cfg,user.number,U_REST,8,ultoa(user.rest,str,16)); if(sbbs->cfg.expire_mod[0]) { sbbs->useron=user; sbbs->online=ON_LOCAL; @@ -3369,9 +3379,9 @@ void node_thread(void* arg) > sbbs->cfg.sys_autodel)) { /* Inactive too long */ sprintf(str,"Auto-Deleted %s #%u",user.alias,user.number); sbbs->logentry("!*",str); - sbbs->delallmail(i); - putusername(&sbbs->cfg,i,nulstr); - putuserrec(&sbbs->cfg,i,U_MISC,8,ultoa(user.misc|DELETED,str,16)); + sbbs->delallmail(user.number); + putusername(&sbbs->cfg,user.number,nulstr); + putuserrec(&sbbs->cfg,user.number,U_MISC,8,ultoa(user.misc|DELETED,str,16)); } }