diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 1ef66a6b72fb294e43a15ce2f7abb99306efebf0..369bf0c803ef14afd1af94b1169571c9e7e83677 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -2867,17 +2867,9 @@ void sbbs_t::logoffstats() errormsg(WHERE,ERR_OPEN,str,O_RDWR); return; } - lseek(file,12L,SEEK_SET); /* Skip timestamp, logons and logons today */ - read(file,&stats.timeon,4); /* Total time on system */ - read(file,&stats.ttoday,4); /* Time today on system */ - read(file,&stats.uls,4); /* Uploads today */ - read(file,&stats.ulb,4); /* Upload bytes today */ - read(file,&stats.dls,4); /* Downloads today */ - read(file,&stats.dlb,4); /* Download bytes today */ - read(file,&stats.ptoday,4); /* Posts today */ - read(file,&stats.etoday,4); /* Emails today */ - read(file,&stats.ftoday,4); /* Feedback sent today */ - read(file,&stats.nusers,2); /* New users today */ + memset(&stats,0,sizeof(stats)); + lseek(file,4L,SEEK_SET); /* Skip timestamp, logons and logons today */ + read(file,&stats,sizeof(stats)); if(!(useron.rest&FLAG('Q'))) { /* Don't count QWKnet nodes */ stats.timeon+=(now-logontime)/60; @@ -2890,20 +2882,14 @@ void sbbs_t::logoffstats() stats.dlb+=logon_dlb; stats.etoday+=logon_emails; stats.ftoday+=logon_fbacks; + +#if 0 // This is now handled in newuserdat() if(sys_status&SS_NEWUSER) stats.nusers++; +#endif - lseek(file,12L,SEEK_SET); - write(file,&stats.timeon,4); /* Total time on system */ - write(file,&stats.ttoday,4); /* Time today on system */ - write(file,&stats.uls,4); /* Uploads today */ - write(file,&stats.ulb,4); /* Upload bytes today */ - write(file,&stats.dls,4); /* Downloads today */ - write(file,&stats.dlb,4); /* Download bytes today */ - write(file,&stats.ptoday,4); /* Posts today */ - write(file,&stats.etoday,4); /* Emails today */ - write(file,&stats.ftoday,4); /* Feedback sent today */ - write(file,&stats.nusers,2); /* New users today */ + lseek(file,4L,SEEK_SET); + write(file,&stats,sizeof(stats)); close(file); } } diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index acd0adb017d01175c98b357204eb686787ed1723..788a507fb2165259e0a9f1842f67b85ec90365b6 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -1744,12 +1744,14 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) char str[MAX_PATH+1]; char tmp[128]; int c; + int i; int err; int file; int unum=1; int last; long misc; FILE* stream; + stats_t stats; sprintf(str,"%suser/name.dat",cfg->data_dir); if(fexist(str)) { @@ -1811,6 +1813,22 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) sprintf(str,"%suser/%04u.sig",cfg->data_dir,user->number); /* delete signature */ remove(str); + /* Update daily statistics database (for system and node) */ + + for(i=0;i<2;i++) { + sprintf(str,"%sdsts.dab",i ? cfg->ctrl_dir : cfg->node_dir); + if((file=nopen(str,O_RDWR))==-1) { + return(errno); + } + memset(&stats,0,sizeof(stats)); + lseek(file,4L,SEEK_SET); /* Skip timestamp */ + read(file,&stats,sizeof(stats)); + stats.nusers++; + lseek(file,4L,SEEK_SET); + write(file,&stats,sizeof(stats)); + close(file); + } + return(0); }