X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fuser_ops.c;h=8c7b0d00a6d3f043a2973b5e84718c0f18c3034c;hb=acfea2084c5b599e967ecbfdddd88e762b3b3179;hp=6f6df898a47c33d6183b70ab4e1ce9e709eefc76;hpb=e5bb8bde105c5b5df9479d3f296a9fefaeb61750;p=citadel.git diff --git a/citadel/user_ops.c b/citadel/user_ops.c index 6f6df898a..8c7b0d00a 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -211,13 +211,11 @@ void session_startup(void) { hook_user_login(CC->cs_pid, CC->curr_user); lgetuser(&CC->usersupp,CC->curr_user); ++(CC->usersupp.timescalled); - /* */ CC->fake_username[0] = '\0'; CC->fake_postname[0] = '\0'; CC->fake_hostname[0] = '\0'; CC->fake_roomname[0] = '\0'; CC->last_pager[0] = '\0'; - /* */ time(&CC->usersupp.lastcall); /* If this user's name is the name of the system administrator @@ -329,6 +327,9 @@ void purge_user(char *pname) { char filename[64]; struct usersupp usbuf; int a; + struct cdbdata *cdbmb; + long *mailbox; + int num_mails; if (getuser(&usbuf, pname) != 0) { lprintf(5, "Cannot purge user <%s> - not found\n", pname); @@ -336,13 +337,19 @@ void purge_user(char *pname) { } /* delete any messages in the user's mailbox */ - for (a=0; a 0L) { - cdb_delete(CDB_MSGMAIN, &usbuf.mailnum[a], - sizeof(long)); + cdbmb = cdb_fetch(CDB_MAILBOXES, &usbuf.usernum, sizeof(long)); + if (cdbmb != NULL) { + num_mails = cdbmb->len / sizeof(long); + mailbox = (long *) cdbmb->ptr; + if (num_mails > 0) for (a=0; ausersupp.generation[a]=(-1); CC->usersupp.forget[a]=(-1); } - for (a=0; ausersupp.mailnum[a]=0L; - } strcpy(CC->usersupp.password,""); /* These are the default flags on new accounts */ @@ -975,6 +979,10 @@ void cmd_chek(void) { int regis = 0; int vali = 0; int a; + struct cdbdata *cdbmb; + long *mailbox; + int num_mails; + if (!(CC->logged_in)) { cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN); @@ -989,10 +997,19 @@ void cmd_chek(void) { if (CitControl.MMflags&MM_VALID) vali = 1; } - mail=0; /* check for mail */ - for (a=0; ausersupp.mailnum[a])>(CC->usersupp.lastseen[1])) - ++mail; + + /* check for mail */ + mail = 0; + cdbmb = cdb_fetch(CDB_MAILBOXES, &CC->usersupp.usernum, sizeof(long)); + if (cdbmb != NULL) { + num_mails = cdbmb->len / sizeof(long); + mailbox = (long *) cdbmb->ptr; + if (num_mails > 0) for (a=0; a (CC->usersupp.lastseen[1])) ++mail; + } + cdb_free(cdbmb); + } + cprintf("%d %d|%d|%d\n",OK,mail,regis,vali); }