X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fmodules%2Fimap%2Fimap_tools.c;fp=citadel%2Fmodules%2Fimap%2Fimap_tools.c;h=e32320d000beabe5286d46f08e4e256b7b8454a4;hp=bced70fd1f3e4fd50a035b368d594a284ca3eebe;hb=2b80e75820618944e1c75b9c01aeeefc8b6b0c81;hpb=beb1318d129b2d470b6e0d138e2b302953e66dd3 diff --git a/citadel/modules/imap/imap_tools.c b/citadel/modules/imap/imap_tools.c index bced70fd1..e32320d00 100644 --- a/citadel/modules/imap/imap_tools.c +++ b/citadel/modules/imap/imap_tools.c @@ -552,11 +552,12 @@ int imap_parameterize(citimap_command *Cmd) /* Convert a struct ctdlroom to an IMAP-compatible mailbox name. */ -void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf) +long imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf) { char* bufend = buf+bufsize; struct floor *fl; char* p = buf; + const char *pend; /* For mailboxes, just do it straight. * Do the Cyrus-compatible thing: all private folders are @@ -565,13 +566,17 @@ void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf) if (qrbuf->QRflags & QR_MAILBOX) { if (strcasecmp(qrbuf->QRname+11, MAILROOM) == 0) - toimap(p, bufend, "INBOX"); + { + pend = toimap(p, bufend, "INBOX"); + return pend - p; + } else { p = toimap(p, bufend, "INBOX"); if (p < bufend) *p++ = '/'; - toimap(p, bufend, qrbuf->QRname+11); + pend = toimap(p, bufend, qrbuf->QRname+11); + return pend - p; } } else @@ -582,7 +587,8 @@ void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf) p = toimap(p, bufend, fl->f_name); if (p < bufend) *p++ = '/'; - toimap(p, bufend, qrbuf->QRname); + pend = toimap(p, bufend, qrbuf->QRname); + return pend - p; } } @@ -681,33 +687,6 @@ exit: return(ret); } -/* - * Output a struct internet_address_list in the form an IMAP client wants - */ -void imap_ial_out(struct internet_address_list *ialist) -{ - struct internet_address_list *iptr; - - if (ialist == NULL) { - IAPuts("NIL"); - return; - } - IAPuts("("); - - for (iptr = ialist; iptr != NULL; iptr = iptr->next) { - IAPuts("("); - plain_imap_strout(iptr->ial_name); - IAPuts(" NIL "); - plain_imap_strout(iptr->ial_user); - IAPuts(" "); - plain_imap_strout(iptr->ial_node); - IAPuts(")"); - } - - IAPuts(")"); -} - - /* * Determine whether the supplied string is a valid message set. @@ -979,42 +958,6 @@ void IReplyPrintf(const char *Format, ...) } - -/* Output a string to the IMAP client, either as a literal or quoted. - * (We do a literal if it has any double-quotes or backslashes.) */ - -void plain_imap_strout(char *buf) -{ - int i; - int is_literal = 0; - long Len; - citimap *Imap = IMAP; - - if (buf == NULL) { /* yeah, we handle this */ - IAPuts("NIL"); - return; - } - - Len = strlen(buf); - for (i = 0; i < Len; ++i) { - if ((buf[i] == '\"') || (buf[i] == '\\')) - is_literal = 1; - } - - if (is_literal) { - StrBufAppendPrintf(Imap->Reply, "{%ld}\r\n", Len); - StrBufAppendBufPlain(Imap->Reply, buf, Len, 0); - } else { - StrBufAppendBufPlain(Imap->Reply, - HKEY("\""), 0); - StrBufAppendBufPlain(Imap->Reply, - buf, Len, 0); - StrBufAppendBufPlain(Imap->Reply, - HKEY("\""), 0); - } -} - - /* Output a string to the IMAP client, either as a literal or quoted. * (We do a literal if it has any double-quotes or backslashes.) */