// Server functions which perform operations on room objects.
//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2024 by the citadel.org team
//
// This program is open source software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, version 3.
void cmd_whok(char *cmdbuf) {
struct ctdluser temp;
- struct cdbdata *cdbus;
+ struct cdbkeyval cdbus;
int ra;
cprintf("%d Who knows room:\n", LISTING_FOLLOWS);
- void *cur = cdb_rewind(CDB_USERS);
- while (cdbus = cdb_next_item(cur, CDB_USERS), cdbus != NULL) {
+ cdb_rewind(CDB_USERS);
+ while (cdbus = cdb_next_item(CDB_USERS), cdbus.val.ptr!=NULL) { // always read to the end
memset(&temp, 0, sizeof temp);
- memcpy(&temp, cdbus->ptr, sizeof temp);
- cdb_free(cdbus);
-
+ memcpy(&temp, cdbus.val.ptr, sizeof temp);
CtdlRoomAccess(&CC->room, &temp, &ra, NULL);
- if ((!IsEmptyStr(temp.fullname)) &&
- (CC->room.QRflags & QR_INUSE) &&
- (ra & UA_KNOWN)
- )
+ if ((!IsEmptyStr(temp.fullname)) && (CC->room.QRflags & QR_INUSE) && (ra & UA_KNOWN)) {
cprintf("%s\n", temp.fullname);
+ }
}
cprintf("000\n");
}
CtdlGetRoom(&CC->room, CC->room.QRname);
cprintf("%d%c%s|%s|%s|%d|%d|%d|%d|%d|\n",
CIT_OK,
- CtdlCheckExpress(),
+ CtdlCheckExpress(CC),
((CC->room.QRflags & QR_MAILBOX) ? &CC->room.QRname[11] : CC->room.QRname),
((CC->room.QRflags & QR_PASSWORDED) ? CC->room.QRpasswd : ""),
((CC->room.QRflags & QR_DIRECTORY) ? CC->room.QRdirname : ""),
/* Directory room */
extract_token(buf, args, 2, '|', sizeof buf);
buf[15] = 0;
- safestrncpy(CC->room.QRdirname, buf,
- sizeof CC->room.QRdirname);
+ safestrncpy(CC->room.QRdirname, buf, sizeof CC->room.QRdirname);
/* Default view */
if (num_parms(args) >= 8) {
* guess-name or passworded, ensure that the private flag is
* also set.
*/
- if ((CC->room.QRflags & QR_GUESSNAME)
- || (CC->room.QRflags & QR_PASSWORDED))
- CC->room.QRflags |= QR_PRIVATE;
+ if ((CC->room.QRflags & QR_GUESSNAME) || (CC->room.QRflags & QR_PASSWORDED)) CC->room.QRflags |= QR_PRIVATE;
/* Some changes can't apply to BASEROOM */
if (!strncasecmp(CC->room.QRname, CtdlGetConfigStr("c_baseroom"), ROOMNAMELEN)) {
CC->room.QRorder = 0;
CC->room.QRpasswd[0] = '\0';
- CC->room.QRflags &= ~(QR_PRIVATE & QR_PASSWORDED &
- QR_GUESSNAME & QR_PREFONLY & QR_MAILBOX);
+ CC->room.QRflags &= ~(QR_PRIVATE & QR_PASSWORDED & QR_GUESSNAME & QR_PREFONLY & QR_MAILBOX);
CC->room.QRflags |= QR_PERMANENT;
}
else {