]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/imap/serv_imap.c
* Made some annotations regarding bug 368 in the code.
[citadel.git] / citadel / modules / imap / serv_imap.c
index 3d5d2ac7bb8c685ae36235295c0dccf4b4fb15dc..9cd1452f690abe65dab011021eef0c20bb6152de 100644 (file)
@@ -55,7 +55,6 @@
 #include "citserver.h"
 #include "support.h"
 #include "config.h"
-#include "room_ops.h"
 #include "user_ops.h"
 #include "policy.h"
 #include "database.h"
@@ -222,10 +221,8 @@ void imap_add_single_msgid(long msgnum, void *userdata)
        ++IMAP->num_msgs;
        if (IMAP->num_msgs > IMAP->num_alloc) {
                IMAP->num_alloc += REALLOC_INCREMENT;
-               IMAP->msgids = realloc(IMAP->msgids,
-                                       (IMAP->num_alloc * sizeof(long)) );
-               IMAP->flags = realloc(IMAP->flags,
-                                       (IMAP->num_alloc * sizeof(long)) );
+               IMAP->msgids = realloc(IMAP->msgids, (IMAP->num_alloc * sizeof(long)) );
+               IMAP->flags = realloc(IMAP->flags, (IMAP->num_alloc * sizeof(long)) );
        }
        IMAP->msgids[IMAP->num_msgs - 1] = msgnum;
        IMAP->flags[IMAP->num_msgs - 1] = 0;
@@ -283,8 +280,7 @@ void imap_rescan_msgids(void)
        int num_recent = 0;
 
        if (IMAP->selected == 0) {
-               CtdlLogPrintf(CTDL_ERR,
-                       "imap_load_msgids() can't run; no room selected\n");
+               CtdlLogPrintf(CTDL_ERR, "imap_load_msgids() can't run; no room selected\n");
                return;
        }
 
@@ -292,7 +288,7 @@ void imap_rescan_msgids(void)
         * Check to see if the room's contents have changed.
         * If not, we can avoid this rescan.
         */
-       getroom(&CC->room, CC->room.QRname);
+       CtdlGetRoom(&CC->room, CC->room.QRname);
        if (IMAP->last_mtime == CC->room.QRmtime) {     /* No changes! */
                return;
        }
@@ -368,6 +364,8 @@ void imap_rescan_msgids(void)
 
        /*
         * Now peruse the room for *new* messages only.
+        * This logic is probably the cause of Bug # 368
+        * [ http://bugzilla.citadel.org/show_bug.cgi?id=368 ]
         */
        if (num_msgs > 0) {
                for (j = 0; j < num_msgs; ++j) {
@@ -717,13 +715,13 @@ void imap_select(int num_parms, char *parms[])
        roomflags = (i & 0xff00);
 
        /* First try a regular match */
-       c = getroom(&QRscratch, towhere);
+       c = CtdlGetRoom(&QRscratch, towhere);
 
        /* Then try a mailbox name match */
        if (c != 0) {
-               MailboxName(augmented_roomname, sizeof augmented_roomname,
+               CtdlMailboxName(augmented_roomname, sizeof augmented_roomname,
                            &CC->user, towhere);
-               c = getroom(&QRscratch, augmented_roomname);
+               c = CtdlGetRoom(&QRscratch, augmented_roomname);
                if (c == 0)
                        strcpy(towhere, augmented_roomname);
        }
@@ -750,11 +748,11 @@ void imap_select(int num_parms, char *parms[])
        imap_do_expunge();
 
        /*
-        * usergoto() formally takes us to the desired room, happily returning
+        * CtdlUserGoto() formally takes us to the desired room, happily returning
         * the number of messages and number of new messages.
         */
        memcpy(&CC->room, &QRscratch, sizeof(struct ctdlroom));
-       usergoto(NULL, 0, 0, &msgs, &new);
+       CtdlUserGoto(NULL, 0, 0, &msgs, &new);
        IMAP->selected = 1;
 
        if (!strcasecmp(parms[1], "EXAMINE")) {
@@ -881,7 +879,7 @@ void imap_namespace(int num_parms, char *parms[])
        /* Show all floors as shared namespaces.  Neato! */
        cprintf("(");
        for (i = 0; i < MAXFLOORS; ++i) {
-               fl = cgetfloor(i);
+               fl = CtdlGetCachedFloor(i);
                if (fl->f_flags & F_INUSE) {
                        if (floors > 0) cprintf(" ");
                        cprintf("(");
@@ -954,7 +952,7 @@ void imap_create(int num_parms, char *parms[])
        CtdlLogPrintf(CTDL_INFO, "Create new room <%s> on floor <%d> with type <%d>\n",
                roomname, floornum, newroomtype);
 
-       ret = create_room(roomname, newroomtype, "", floornum, 1, 0, newroomview);
+       ret = CtdlCreateRoom(roomname, newroomtype, "", floornum, 1, 0, newroomview);
        if (ret == 0) {
                /*** DO NOT CHANGE THIS ERROR MESSAGE IN ANY WAY!  BYNARI CONNECTOR DEPENDS ON IT! ***/
                cprintf("%s NO Mailbox already exists, or create failed\r\n", parms[0]);
@@ -970,7 +968,7 @@ void imap_create(int num_parms, char *parms[])
                        ((ret & QR_PRIVATE) ? " [private]" : ""),
                        ((ret & QR_GUESSNAME) ? " [hidden]" : "")
                );
-               aide_message(notification_message, "Room Creation Message");
+               CtdlAideMessage(notification_message, "Room Creation Message");
                free(notification_message);
        }
        CtdlLogPrintf(CTDL_DEBUG, "imap_create() completed\n");
@@ -997,13 +995,13 @@ int imap_grabroom(char *returned_roomname, char *foldername, int zapped_ok)
        }
 
        /* First try a regular match */
-       c = getroom(&QRscratch, roomname);
+       c = CtdlGetRoom(&QRscratch, roomname);
 
        /* Then try a mailbox name match */
        if (c != 0) {
-               MailboxName(augmented_roomname, sizeof augmented_roomname,
+               CtdlMailboxName(augmented_roomname, sizeof augmented_roomname,
                            &CC->user, roomname);
-               c = getroom(&QRscratch, augmented_roomname);
+               c = CtdlGetRoom(&QRscratch, augmented_roomname);
                if (c == 0)
                        strcpy(roomname, augmented_roomname);
        }
@@ -1054,14 +1052,14 @@ void imap_status(int num_parms, char *parms[])
        }
 
        /*
-        * usergoto() formally takes us to the desired room, happily returning
+        * CtdlUserGoto() formally takes us to the desired room, happily returning
         * the number of messages and number of new messages.  (If another
         * folder is selected, save its name so we can return there!!!!!)
         */
        if (IMAP->selected) {
                strcpy(savedroom, CC->room.QRname);
        }
-       usergoto(roomname, 0, 0, &msgs, &new);
+       CtdlUserGoto(roomname, 0, 0, &msgs, &new);
 
        /*
         * Tell the client what it wants to know.  In fact, tell it *more* than
@@ -1082,7 +1080,7 @@ void imap_status(int num_parms, char *parms[])
         * our happy day without violent explosions.
         */
        if (IMAP->selected) {
-               usergoto(savedroom, 0, 0, &msgs, &new);
+               CtdlUserGoto(savedroom, 0, 0, &msgs, &new);
        }
 
        /*
@@ -1115,21 +1113,21 @@ void imap_subscribe(int num_parms, char *parms[])
        }
 
        /*
-        * usergoto() formally takes us to the desired room, which has the side
+        * CtdlUserGoto() formally takes us to the desired room, which has the side
         * effect of marking the room as not-zapped ... exactly the effect
         * we're looking for.
         */
        if (IMAP->selected) {
                strcpy(savedroom, CC->room.QRname);
        }
-       usergoto(roomname, 0, 0, &msgs, &new);
+       CtdlUserGoto(roomname, 0, 0, &msgs, &new);
 
        /*
         * If another folder is selected, go back to that room so we can resume
         * our happy day without violent explosions.
         */
        if (IMAP->selected) {
-               usergoto(savedroom, 0, 0, &msgs, &new);
+               CtdlUserGoto(savedroom, 0, 0, &msgs, &new);
        }
 
        cprintf("%s OK SUBSCRIBE completed\r\n", parms[0]);
@@ -1156,12 +1154,12 @@ void imap_unsubscribe(int num_parms, char *parms[])
        }
 
        /*
-        * usergoto() formally takes us to the desired room.
+        * CtdlUserGoto() formally takes us to the desired room.
         */
        if (IMAP->selected) {
                strcpy(savedroom, CC->room.QRname);
        }
-       usergoto(roomname, 0, 0, &msgs, &new);
+       CtdlUserGoto(roomname, 0, 0, &msgs, &new);
 
        /* 
         * Now make the API call to zap the room
@@ -1179,7 +1177,7 @@ void imap_unsubscribe(int num_parms, char *parms[])
         * our happy day without violent explosions.
         */
        if (IMAP->selected) {
-               usergoto(savedroom, 0, 0, &msgs, &new);
+               CtdlUserGoto(savedroom, 0, 0, &msgs, &new);
        }
 }
 
@@ -1204,20 +1202,20 @@ void imap_delete(int num_parms, char *parms[])
        }
 
        /*
-        * usergoto() formally takes us to the desired room, happily returning
+        * CtdlUserGoto() formally takes us to the desired room, happily returning
         * the number of messages and number of new messages.  (If another
         * folder is selected, save its name so we can return there!!!!!)
         */
        if (IMAP->selected) {
                strcpy(savedroom, CC->room.QRname);
        }
-       usergoto(roomname, 0, 0, &msgs, &new);
+       CtdlUserGoto(roomname, 0, 0, &msgs, &new);
 
        /*
         * Now delete the room.
         */
        if (CtdlDoIHavePermissionToDeleteThisRoom(&CC->room)) {
-               schedule_room_for_deletion(&CC->room);
+               CtdlScheduleRoomForDeletion(&CC->room);
                cprintf("%s OK DELETE completed\r\n", parms[0]);
        } else {
                cprintf("%s NO Can't delete this folder.\r\n", parms[0]);
@@ -1228,7 +1226,7 @@ void imap_delete(int num_parms, char *parms[])
         * our happy day without violent explosions.
         */
        if (IMAP->selected) {
-               usergoto(savedroom, 0, 0, &msgs, &new);
+               CtdlUserGoto(savedroom, 0, 0, &msgs, &new);
        }
 }
 
@@ -1333,7 +1331,7 @@ void imap_rename(int num_parms, char *parms[])
         * (already did that) and create a new inbox.
         */
        if (!strcasecmp(parms[2], "INBOX")) {
-               create_room(MAILROOM, 4, "", 0, 1, 0, VIEW_MAILBOX);
+               CtdlCreateRoom(MAILROOM, 4, "", 0, 1, 0, VIEW_MAILBOX);
        }
 
        /* Otherwise, do the subfolders.  Build a list of rooms to rename... */
@@ -1341,7 +1339,7 @@ void imap_rename(int num_parms, char *parms[])
                irlparms.oldname = parms[2];
                irlparms.newname = parms[3];
                irlparms.irl = &irl;
-               ForEachRoom(imap_rename_backend, (void *) &irlparms);
+               CtdlForEachRoom(imap_rename_backend, (void *) &irlparms);
 
                /* ... and now rename them. */
                while (irl != NULL) {
@@ -1363,7 +1361,7 @@ void imap_rename(int num_parms, char *parms[])
                parms[3],
                CC->curr_user
        );
-       aide_message(buf, "IMAP folder rename");
+       CtdlAideMessage(buf, "IMAP folder rename");
 
        cprintf("%s OK RENAME completed\r\n", parms[0]);
 }
@@ -1661,7 +1659,6 @@ void imap_command_loop(void)
 
        gettimeofday(&tv2, NULL);
        total_time = (tv2.tv_usec + (tv2.tv_sec * 1000000)) - (tv1.tv_usec + (tv1.tv_sec * 1000000));
-       CtdlLogPrintf(CTDL_INFO, "IMAP: %s\n", cmdbuf); // FIXME FIXME FIXME REMOVE THIS NOW
        CtdlLogPrintf(CTDL_DEBUG, "IMAP command completed in %ld.%ld seconds\n",
                (total_time / 1000000),
                (total_time % 1000000)