+/* $Id$ */
+
/* needed to properly enable crypt() stuff on some systems */
#define _XOPEN_SOURCE
/* needed for str[n]casecmp() on some systems if the above is defined */
else {
purge = 0;
}
+
+ /*
lprintf(9, "U/R REL: <%s> <%ld> <%ld> <%d> %s\n",
visits[a].v_roomname,
visits[a].v_generation,
visits[a].v_lastseen,
visits[a].v_flags,
(purge ? "**purging**" : "") );
+ */
if (purge) {
memcpy(&visits[a], &visits[a+1],
/*
* Delete a user record *and* all of its related resources.
*/
-int purge_user(char *pname) {
+int purge_user(char pname[]) {
char filename[64];
char mailboxname[ROOMNAMELEN];
struct usersupp usbuf;
struct quickroom qrbuf;
+ char lowercase_name[32];
+ int a;
+
+ for (a=0; a<=strlen(pname); ++a) {
+ lowercase_name[a] = tolower(pname[a]);
+ }
if (getuser(&usbuf, pname) != 0) {
lprintf(5, "Cannot purge user <%s> - not found\n", pname);
return(ERROR+NO_SUCH_USER);
}
+ lprintf(5, "Deleting user <%s>\n", pname);
+
/* FIX Don't delete a user who is currently logged in. */
/* Perform any purge functions registered by server extensions */
}
/* delete the userlog entry */
- cdb_delete(CDB_USERSUPP, pname, strlen(pname));
+ cdb_delete(CDB_USERSUPP, lowercase_name, strlen(lowercase_name));
/* remove the user's bio file */
sprintf(filename, "./bio/%ld", usbuf.usernum);
return;
}
- cprintf("%d %s|%s|%u|%d|%d|%d|%ld\n",
+ cprintf("%d %s|%s|%u|%d|%d|%d|%ld|%d\n",
OK,
usbuf.fullname,
usbuf.password,
usbuf.timescalled,
usbuf.posted,
(int)usbuf.axlevel,
- usbuf.usernum);
-
+ usbuf.usernum,
+ usbuf.USuserpurge);
}
usbuf.axlevel = extract_int(cmdbuf, 5);
}
}
+ if (np > 7) {
+ usbuf.USuserpurge = extract_int(cmdbuf, 7);
+ }
lputuser(&usbuf, requested_user);
if (usbuf.axlevel == 0) {
*/
int NewMailCount() {
int num_newmsgs = 0;
+ int a;
char mailboxname[32];
+ struct quickroom mailbox;
+ struct visit vbuf;
MailboxName(mailboxname, &CC->usersupp, MAILROOM);
-
- /* FIX FIX FIX FIX FIX This needs implementation */
+ if (getroom(&mailbox, mailboxname)!=0) return(0);
+ CtdlGetRelationship(&vbuf, &CC->usersupp, &mailbox);
+
+ get_msglist(&mailbox);
+ for (a=0; a<CC->num_msgs; ++a) {
+ if (MessageFromList(a)>0L) {
+ if (MessageFromList(a) > vbuf.v_lastseen) {
+ ++num_newmsgs;
+ }
+ }
+ }
return(num_newmsgs);
}