]> code.citadel.org Git - citadel.git/blobdiff - citadel/imap_tools.c
* Use syslog-compatible logging levels in lprintf(); the loglevel chosen
[citadel.git] / citadel / imap_tools.c
index 47941d117102755e3306c3759a6b8449ee9c1b7b..11b5e38a2ba53de295644163f7accfcc16a501cd 100644 (file)
@@ -95,15 +95,23 @@ void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf)
 {
        struct floor *fl;
        int i;
+       char buf2[SIZ];
 
        /*
-        * For mailboxes, just do it straight...
+        * For mailboxes, just do it straight.
+        * Do the Cyrus-compatible thing: all private folders are
+        * subfolders of INBOX.
         */
        if (qrbuf->QRflags & QR_MAILBOX) {
                safestrncpy(buf, qrbuf->QRname, bufsize);
                strcpy(buf, &buf[11]);
-               if (!strcasecmp(buf, MAILROOM))
+               if (!strcasecmp(buf, MAILROOM)) {
                        strcpy(buf, "INBOX");
+               }
+               else {
+                       sprintf(buf2, "INBOX|%s", buf);
+                       strcpy(buf, buf2);
+               }
        }
        /*
         * Otherwise, prefix the floor name as a "public folders" moniker
@@ -149,11 +157,16 @@ int imap_roomname(char *rbuf, int bufsize, char *foldername)
 
        /*
         * Convert the crispy idiot's reserved names to our reserved names.
+        * Also handle Cyrus-compatible folder names.
         */
        if (!strcasecmp(foldername, "INBOX")) {
                safestrncpy(rbuf, MAILROOM, bufsize);
                ret = (0 | IR_MAILBOX);
        }
+       else if (!strncasecmp(foldername, "INBOX|", 6)) {
+               safestrncpy(rbuf, &foldername[6], bufsize);
+               ret = (0 | IR_MAILBOX);
+       }
        else if (levels > 1) {
                extract(floorname, foldername, 0);
                strcpy(roomname, &foldername[strlen(floorname)+1]);
@@ -179,7 +192,7 @@ int imap_roomname(char *rbuf, int bufsize, char *foldername)
                ret = (0 | IR_MAILBOX);
        }
 
-       /* Undelimiterizationalize the room name (change '|') */
+       /* Undelimiterizationalisticize the room name (change '|') */
        for (i=0; i<strlen(rbuf); ++i) {
                if (rbuf[i] == '|') rbuf[i] = FDELIM;
        }
@@ -195,7 +208,7 @@ int imap_roomname(char *rbuf, int bufsize, char *foldername)
        }
  ***/
 
-       lprintf(9, "(That translates to \"%s\")\n", rbuf);
+       lprintf(CTDL_DEBUG, "(That translates to \"%s\")\n", rbuf);
        return(ret);
 }