From: Art Cancro Date: Wed, 11 Feb 2004 03:50:49 +0000 (+0000) Subject: * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are X-Git-Tag: v7.86~5620 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=f49e475149e464d40e29fad92dc0c57524114977 * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are now presented as subfolders of INBOX when using IMAP. This is for the purpose of Kolab compatibility. --- diff --git a/citadel/ChangeLog b/citadel/ChangeLog index ee6e9db9c..3a001a0ce 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,9 @@ $Log$ + Revision 614.26 2004/02/11 03:50:49 ajc + * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are + now presented as subfolders of INBOX when using IMAP. This is for the + purpose of Kolab compatibility. + Revision 614.25 2004/02/09 22:40:57 error * oops...also close the client on EOF/error on tty OUTPUT @@ -5308,3 +5313,4 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import + diff --git a/citadel/imap_tools.c b/citadel/imap_tools.c index 47941d117..9215873aa 100644 --- a/citadel/imap_tools.c +++ b/citadel/imap_tools.c @@ -97,13 +97,27 @@ void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf) int i; /* - * For mailboxes, just do it straight... + * For mailboxes, just do it straight. + * Also handle Kolab-compatible groupware folder names. */ 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"); + } + if (!strcasecmp(buf, USERCALENDARROOM)) { + sprintf(buf, "INBOX|%s", USERCALENDARROOM); + } + if (!strcasecmp(buf, USERCONTACTSROOM)) { + sprintf(buf, "INBOX|%s", USERCONTACTSROOM); + } + if (!strcasecmp(buf, USERTASKSROOM)) { + sprintf(buf, "INBOX|%s", USERTASKSROOM); + } + if (!strcasecmp(buf, USERNOTESROOM)) { + sprintf(buf, "INBOX|%s", USERNOTESROOM); + } } /* * Otherwise, prefix the floor name as a "public folders" moniker @@ -149,11 +163,32 @@ int imap_roomname(char *rbuf, int bufsize, char *foldername) /* * Convert the crispy idiot's reserved names to our reserved names. + * Also handle Kolab-compatible groupware folder names. */ if (!strcasecmp(foldername, "INBOX")) { safestrncpy(rbuf, MAILROOM, bufsize); ret = (0 | IR_MAILBOX); } + else if ( (!strncasecmp(foldername, "INBOX", 5)) + && (!strcasecmp(&foldername[6], USERCALENDARROOM)) ) { + safestrncpy(rbuf, USERCALENDARROOM, bufsize); + ret = (0 | IR_MAILBOX); + } + else if ( (!strncasecmp(foldername, "INBOX", 5)) + && (!strcasecmp(&foldername[6], USERCONTACTSROOM)) ) { + safestrncpy(rbuf, USERCONTACTSROOM, bufsize); + ret = (0 | IR_MAILBOX); + } + else if ( (!strncasecmp(foldername, "INBOX", 5)) + && (!strcasecmp(&foldername[6], USERTASKSROOM)) ) { + safestrncpy(rbuf, USERTASKSROOM, bufsize); + ret = (0 | IR_MAILBOX); + } + else if ( (!strncasecmp(foldername, "INBOX", 5)) + && (!strcasecmp(&foldername[6], USERNOTESROOM)) ) { + safestrncpy(rbuf, USERNOTESROOM, bufsize); + ret = (0 | IR_MAILBOX); + } else if (levels > 1) { extract(floorname, foldername, 0); strcpy(roomname, &foldername[strlen(floorname)+1]); diff --git a/citadel/sysconfig.h b/citadel/sysconfig.h index 39ea373fe..257b779ef 100644 --- a/citadel/sysconfig.h +++ b/citadel/sysconfig.h @@ -100,6 +100,7 @@ #define USERCALENDARROOM "Calendar" #define USERTASKSROOM "Tasks" #define USERCONTACTSROOM "Contacts" +#define USERNOTESROOM "Notes" #define PAGELOGROOM "Sent/Received Pages" #define SYSCONFIGROOM "Local System Configuration" #define SMTP_SPOOLOUT_ROOM "__CitadelSMTPspoolout__"