CtdlCheckExpress() now accepts a session context.
[citadel.git] / citadel / server / modules / ctdlproto / serv_rooms.c
index 6b3cdfc036c3953b08ffd0fd9d8fcc67163db85e..4da11284b92cc10bac1887dcb09bcfb2a6e7d081 100644 (file)
@@ -1,6 +1,6 @@
 // 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.
@@ -322,22 +322,18 @@ void cmd_goto(char *gargs) {
 
 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");
 }
@@ -438,7 +434,7 @@ void cmd_getr(char *cmdbuf) {
        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 : ""),
@@ -526,8 +522,7 @@ void cmd_setr(char *args) {
        /* 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) {
@@ -545,16 +540,13 @@ void cmd_setr(char *args) {
         * 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 {