From 0a500b1b26b09d12049014e0d71da62030ae66bc Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 5 Sep 2001 17:51:16 +0000 Subject: [PATCH] Created logoffuserdat() function to handle common logoff user record updates. --- src/sbbs3/userdat.c | 36 ++++++++++++++++++++++++++++++++++++ src/sbbs3/userdat.h | 1 + 2 files changed, 37 insertions(+) diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 7764cabe22..b9e1f23326 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -1285,3 +1285,39 @@ void DLLCALL subtract_cdt(scfg_t* cfg, user_t* user, long amt) else /* no free credits */ user->cdt=adjustuserrec(cfg, user->number,U_CDT,10,-amt); } + +BOOL DLLCALL logoffuserdat(scfg_t* cfg, user_t* user, time_t now, time_t logontime) +{ + char str[128]; + struct tm* tm, tm_now; + + user->tlast=(now-logontime)/60; + + putuserrec(cfg,user->number,U_LASTON,8,ultoa(now,str,16)); + putuserrec(cfg,user->number,U_TLAST,5,ultoa(user->tlast,str,10)); + adjustuserrec(cfg,user->number,U_TIMEON,5,user->tlast); + adjustuserrec(cfg,user->number,U_TTODAY,5,user->tlast); + + /* Convert time_t to struct tm */ + tm=gmtime(&now); + if(tm==NULL) + return(FALSE); + tm_now=*tm; + + tm=gmtime(&logontime); + if(tm==NULL) + return(FALSE); + + /* Reset daily stats if new day */ + if(tm->tm_mday!=tm_now.tm_mday) { /* date has changed while online */ + putuserrec(cfg,user->number,U_LTODAY,5,"0"); /* so zero logons today */ + putuserrec(cfg,user->number,U_ETODAY,5,"0"); /* and e-mails today */ + putuserrec(cfg,user->number,U_PTODAY,5,"0"); /* and posts today */ + putuserrec(cfg,user->number,U_FREECDT,10 /* and free credits per day */ + ,ultoa(cfg->level_freecdtperday[user->level],str,10)); + putuserrec(cfg,user->number,U_TTODAY,5,"0"); /* and time on today */ + putuserrec(cfg,user->number,U_TEXTRA,5,"0"); /* and extra time */ + } + + return(TRUE); +} diff --git a/src/sbbs3/userdat.h b/src/sbbs3/userdat.h index 954b9386e7..453691bdbf 100644 --- a/src/sbbs3/userdat.h +++ b/src/sbbs3/userdat.h @@ -89,6 +89,7 @@ DLLEXPORT BOOL DLLCALL chk_ar(scfg_t* cfg, uchar* str, user_t* user); /* checks DLLEXPORT int DLLCALL getuserrec(scfg_t*, int usernumber, int start, int length, char *str); DLLEXPORT int DLLCALL putuserrec(scfg_t*, int usernumber, int start, uint length, char *str); DLLEXPORT ulong DLLCALL adjustuserrec(scfg_t*, int usernumber, int start, int length, long adj); +DLLEXPORT BOOL DLLCALL logoffuserdat(scfg_t*, user_t*, time_t now, time_t logontime); DLLEXPORT void DLLCALL subtract_cdt(scfg_t*, user_t*, long amt); #ifdef __cplusplus -- GitLab