num_msgs = cdbfr->len / sizeof(long);
cdb_free(cdbfr);
} else {
- MARKM_syslog(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"extNotify_getConfigMessage: "
"No config messages found");
return eNone; /* No messages at all? No further action. */
if (IsEmptyStr(CtdlGetConfigStr("c_pager_program")) &&
IsEmptyStr(CtdlGetConfigStr("c_funambol_host")))
{
- MARKM_syslog(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"No external notifiers configured on system/user");
return;
}
/*
* Go ahead and run the queue
*/
- MARKM_syslog(LOG_DEBUG, "serv_extnotify: processing notify queue");
+ syslog(LOG_DEBUG, "serv_extnotify: processing notify queue");
memset(&Ctx, 0, sizeof(NotifyContext));
if ((GetNotifyHosts(&Ctx) > 0) &&
}
CtdlForEachMessage(MSGS_ALL, 0L, NULL,
SPOOLMIME, NULL, process_notify, &Ctx);
- MARKM_syslog(LOG_DEBUG, "serv_extnotify: queue run completed");
+ syslog(LOG_DEBUG, "serv_extnotify: queue run completed");
doing_queue = 0;
if (Ctx.nNotifyHosts > 0)
{
/*
* Functions which implement RFC2086 (and maybe RFC4314) (IMAP ACL extension)
*
- *
- * Copyright (c) 2007-2011 by the citadel.org team
+ * Copyright (c) 2007-2017 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 as published by
/*
- * Copyright (c) 2007-2012 by the citadel.org team
+ * Copyright (c) 2007-2017 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.
- *
- *
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- *
- *
- *
*/
void imap_setacl(int num_parms, ConstStr *Params);
* Implements the FETCH command in IMAP.
* This is a good example of the protocol's gratuitous complexity.
*
- * Copyright (c) 2001-2015 by the citadel.org team
+ * Copyright (c) 2001-2017 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 as published by
text_size = 0;
}
- IMAP_syslog(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"RFC822: headers=" SIZE_T_FMT
", text=" SIZE_T_FMT
", total=" SIZE_T_FMT,
void *content, char *cbtype, char *cbcharset, size_t length, char *encoding,
char *cbid, void *cbuserdata)
{
- struct CitContext *CCC = CC;
char mimebuf2[SIZ];
StrBuf *desired_section;
desired_section = (StrBuf *)cbuserdata;
- IMAP_syslog(LOG_DEBUG, "imap_load_part() looking for %s, found %s",
+ syslog(LOG_DEBUG, "imap_load_part() looking for %s, found %s",
ChrPtr(desired_section),
partnum
);
if (strchr(ChrPtr(section), '[') != NULL) {
StrBufStripAllBut(section, '[', ']');
}
- IMAP_syslog(LOG_DEBUG, "Section is: [%s]",
- (StrLength(section) == 0) ? "(empty)" : ChrPtr(section)
- );
+ syslog(LOG_DEBUG, "Section is: [%s]", (StrLength(section) == 0) ? "(empty)" : ChrPtr(section));
/* Burn the cache if we don't have the same section of the
* same message again.
is_partial = 1;
}
if ( (is_partial == 1) && (StrLength(partial) > 0) ) {
- IMAP_syslog(LOG_DEBUG, "Partial is <%s>", ChrPtr(partial));
+ syslog(LOG_DEBUG, "Partial is <%s>", ChrPtr(partial));
}
if (Imap->cached_body == NULL) {
/* debug output the parsed vector */
{
int i;
- IMAP_syslog(LOG_DEBUG, "----- %ld params", Cmd->num_parms);
+ syslog(LOG_DEBUG, "----- %ld params", Cmd->num_parms);
for (i=0; i < Cmd->num_parms; i++) {
if (Cmd->Params[i].len != strlen(Cmd->Params[i].Key))
- IMAP_syslog(LOG_DEBUG, "*********** %ld != %ld : %s",
+ syslog(LOG_DEBUG, "*********** %ld != %ld : %s",
Cmd->Params[i].len,
strlen(Cmd->Params[i].Key),
Cmd->Params[i].Key);
else
- IMAP_syslog(LOG_DEBUG, "%ld : %s",
+ syslog(LOG_DEBUG, "%ld : %s",
Cmd->Params[i].len,
Cmd->Params[i].Key);
}}
MakeStringOf(Cmd.CmdBuf, 4);
#if 0
- IMAP_syslog(LOG_DEBUG, "-------%s--------", ChrPtr(Cmd.CmdBuf));
+ syslog(LOG_DEBUG, "-------%s--------", ChrPtr(Cmd.CmdBuf));
#endif
num_items = imap_extract_data_items(&Cmd);
if (num_items < 1) {
/*
- * Copyright (c) 2001-2012 by the citadel.org team
+ * Copyright (c) 2001-2017 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.
- *
- *
+ * 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.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- *
- *
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
void imap_pick_range(const char *range, int is_uid);
/*
* Implements the LIST and LSUB commands.
*
- * Copyright (c) 2000-2009 by Art Cancro and others.
+ * Copyright (c) 2000-2017 by Art Cancro and others.
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
&Params[i],
1);
- IMAP_syslog(LOG_DEBUG, "evaluating <%s>", Params[i].Key);
+ syslog(LOG_DEBUG, "evaluating <%s>", Params[i].Key);
if (!strcasecmp(Params[i].Key, "SUBSCRIBED")) {
ImapFilter.return_subscribed = 1;
*
* This is an implementation of the Bynari variant of the METADATA extension.
*
- * Copyright (c) 2007-2009 by the citadel.org team
+ * Copyright (c) 2007-2017 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 as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
- * Copyright (c) 2007-2012 by the citadel.org team
+ * Copyright (c) 2007-2017 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.
- *
- *
+ * 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.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- *
- *
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
void imap_getmetadata(int num_parms, ConstStr *Params);
/*
- * Copyright (c) 1987-2015 by the citadel.org team
+ * Copyright (c) 1987-2017 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 as published by
client_getln(dummy, sizeof dummy);
/* Convert RFC822 newlines (CRLF) to Unix newlines (LF) */
- IMAPM_syslog(LOG_DEBUG, "Converting CRLF to LF");
+ syslog(LOG_DEBUG, "Converting CRLF to LF");
StrBufToUnixLF(Imap->TransmittedMessage);
- IMAPM_syslog(LOG_DEBUG, "Converting message format");
+ syslog(LOG_DEBUG, "Converting message format");
msg = convert_internet_message_buf(&Imap->TransmittedMessage);
ret = imap_grabroom(roomname, Params[2].Key, 1);
/*
- * Copyright (c) 2001-2012 by the citadel.org team
+ * Copyright (c) 2001-2017 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.
- *
- *
+ * 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.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- *
- *
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
void imap_copy(int num_parms, ConstStr *Params);
/*
- * Copyright (c) 2001-2012 by the citadel.org team
+ * Copyright (c) 2001-2017 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.
- *
- *
+ * 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.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- *
- *
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
void imap_search(int num_parms, ConstStr *Params);
/*
- * Copyright (c) 2001-2012 by the citadel.org team
+ * Copyright (c) 2001-2017 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.
- *
- *
+ * 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.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- *
- *
- *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
void imap_store(int num_parms, ConstStr *Params);
/*
* Utility functions for the IMAP module.
*
- * Copyright (c) 2001-2009 by the citadel.org team and others, except for
+ * Copyright (c) 2001-2017 by the citadel.org team and others, except for
* most of the UTF7 and UTF8 handling code which was lifted from Evolution.
*
* This program is open source software; you can redistribute it and/or modify
*destp = 0;
string_init(&dest, destp, destend-destp);
- /* IMAP_syslog(LOG_DEBUG, "toimap %s", src); */
+ /* syslog(LOG_DEBUG, "toimap %s", src); */
for (;;)
{
if (state == 1)
utf7_closeb64(&dest, v, i);
- /* IMAP_syslog(LOG_DEBUG, " -> %s", destp); */
+ /* syslog(LOG_DEBUG, " -> %s", destp); */
return string_end(&dest);
}
*destp = 0;
string_init(&dest, destp, destend-destp);
- /* IMAP_syslog(LOG_DEBUG, "fromimap %s", src); */
+ /* syslog(LOG_DEBUG, "fromimap %s", src); */
do {
c = *p++;
}
} while (c != '\0');
- /* IMAP_syslog(LOG_DEBUG, " -> %s", destp); */
+ /* syslog(LOG_DEBUG, " -> %s", destp); */
return string_end(&dest);
}
int imap_roomname(char *rbuf, int bufsize, const char *foldername)
{
- struct CitContext *CCC = CC;
int levels;
char floorname[ROOMNAMELEN*2];
char roomname[ROOMNAMELEN];
ret = (0 | IR_MAILBOX);
exit:
- IMAP_syslog(LOG_DEBUG, "(That translates to \"%s\")", rbuf);
+ syslog(LOG_DEBUG, "(That translates to \"%s\")", rbuf);
return(ret);
}
/*
* IMAP server for the Citadel system
*
- * Copyright (C) 2000-2015 by Art Cancro and others.
+ * Copyright (C) 2000-2017 by Art Cancro and others.
* This code is released under the terms of the GNU General Public License.
*
* WARNING: the IMAP protocol is badly designed. No implementation of it
#include "imap_misc.h"
#include "ctdl_module.h"
-int IMAPDebugEnabled = 0;
HashList *ImapCmds = NULL;
void registerImapCMD(const char *First, long FLen,
const char *Second, long SLen,
StrBufPlain(Imap->Reply, CKEY(Params[1]));
StrBufUpCase(Imap->Reply);
- IMAP_syslog(LOG_DEBUG, "---- Looking up [%s] -----",
- ChrPtr(Imap->Reply));
+ syslog(LOG_DEBUG, "---- Looking up [%s] -----", ChrPtr(Imap->Reply));
if (GetHash(ImapCmds, SKEY(Imap->Reply), &v))
{
- IMAPM_syslog(LOG_DEBUG, "Found.");
+ syslog(LOG_DEBUG, "Found.");
FlushStrBuf(Imap->Reply);
return (imap_handler_hook *) v;
}
if (num_parms == 1)
{
- IMAPM_syslog(LOG_DEBUG, "NOT Found.");
+ syslog(LOG_DEBUG, "NOT Found.");
FlushStrBuf(Imap->Reply);
return NULL;
}
- IMAP_syslog(LOG_DEBUG, "---- Looking up [%s] -----",
- ChrPtr(Imap->Reply));
+ syslog(LOG_DEBUG, "---- Looking up [%s] -----", ChrPtr(Imap->Reply));
StrBufAppendBufPlain(Imap->Reply, CKEY(Params[2]), 0);
StrBufUpCase(Imap->Reply);
if (GetHash(ImapCmds, SKEY(Imap->Reply), &v))
{
- IMAPM_syslog(LOG_DEBUG, "Found.");
+ syslog(LOG_DEBUG, "Found.");
FlushStrBuf(Imap->Reply);
return (imap_handler_hook *) v;
}
- IMAPM_syslog(LOG_DEBUG, "NOT Found.");
+ syslog(LOG_DEBUG, "NOT Found.");
FlushStrBuf(Imap->Reply);
return NULL;
}
citimap *Imap = CCCIMAP;
if (Imap->selected == 0) {
- IMAPM_syslog(LOG_ERR, "imap_load_msgids() can't run; no room selected");
+ syslog(LOG_ERR, "imap_load_msgids() can't run; no room selected");
return;
}
int num_recent = 0;
if (Imap->selected == 0) {
- IMAPM_syslog(LOG_ERR, "imap_load_msgids() can't run; no room selected");
+ syslog(LOG_ERR, "imap_load_msgids() can't run; no room selected");
return;
}
imap_do_expunge();
}
- IMAPM_syslog(LOG_DEBUG, "Performing IMAP cleanup hook");
+ syslog(LOG_DEBUG, "Performing IMAP cleanup hook");
imap_free_msgids();
imap_free_transmitted_message();
FreeStrBuf(&Imap->Reply);
if (Imap->Cmd.Params != NULL) free(Imap->Cmd.Params);
free(Imap);
- IMAPM_syslog(LOG_DEBUG, "Finished IMAP cleanup hook");
+ syslog(LOG_DEBUG, "Finished IMAP cleanup hook");
}
long *delmsgs = NULL;
int num_delmsgs = 0;
- IMAPM_syslog(LOG_DEBUG, "imap_do_expunge() called");
+ syslog(LOG_DEBUG, "imap_do_expunge() called");
if (Imap->selected == 0) {
return (0);
}
imap_rescan_msgids();
}
- IMAP_syslog(LOG_DEBUG, "Expunged %d messages from <%s>", num_expunged, CC->room.QRname);
+ syslog(LOG_DEBUG, "Expunged %d messages from <%s>", num_expunged, CC->room.QRname);
return (num_expunged);
}
*/
void imap_create(int num_parms, ConstStr *Params)
{
- struct CitContext *CCC = CC;
int ret;
char roomname[ROOMNAMELEN];
int floornum;
if (strchr(Params[2].Key, '\\') != NULL) {
IReply("NO Invalid character in folder name");
- IMAPM_syslog(LOG_ERR, "invalid character in folder name");
+ syslog(LOG_ERR, "invalid character in folder name");
return;
}
ret = imap_roomname(roomname, sizeof roomname, Params[2].Key);
if (ret < 0) {
IReply("NO Invalid mailbox name or location");
- IMAPM_syslog(LOG_ERR, "invalid mailbox name or location");
+ syslog(LOG_ERR, "invalid mailbox name or location");
return;
}
floornum = (ret & 0x00ff); /* lower 8 bits = floor number */
if (flags & IR_MAILBOX) {
if (strncasecmp(Params[2].Key, "INBOX/", 6)) {
IReply("NO Personal folders must be created under INBOX");
- IMAPM_syslog(LOG_ERR, "not subordinate to inbox");
+ syslog(LOG_ERR, "not subordinate to inbox");
return;
}
}
newroomview = VIEW_BBS;
}
- IMAP_syslog(LOG_INFO, "Create new room <%s> on floor <%d> with type <%d>",
+ syslog(LOG_INFO, "Create new room <%s> on floor <%d> with type <%d>",
roomname, floornum, newroomtype);
ret = CtdlCreateRoom(roomname, newroomtype, "", floornum, 1, 0, newroomview);
CtdlAideMessage(notification_message, "Room Creation Message");
free(notification_message);
}
- IMAPM_syslog(LOG_DEBUG, "imap_create() completed");
+ syslog(LOG_DEBUG, "imap_create() completed");
}
irl->irl_newroom,
irl->irl_newfloor);
if (r != crr_ok) {
- struct CitContext *CCC = CC;
/* FIXME handle error returns better */
- IMAP_syslog(LOG_ERR, "CtdlRenameRoom() error %d", r);
+ syslog(LOG_ERR, "CtdlRenameRoom() error %d", r);
}
irlp = irl;
irl = irl->next;
FlushStrBuf(Imap->Cmd.CmdBuf);
if (CtdlClientGetLine(Imap->Cmd.CmdBuf) < 1) {
- IMAPM_syslog(LOG_ERR, "client disconnected: ending session.");
+ syslog(LOG_ERR, "client disconnected: ending session.");
CC->kill_me = KILLME_CLIENT_DISCONNECTED;
return;
}
if (Imap->authstate == imap_as_expecting_password) {
- IMAPM_syslog(LOG_INFO, "<password>");
+ syslog(LOG_INFO, "<password>");
}
else if (Imap->authstate == imap_as_expecting_plainauth) {
- IMAPM_syslog(LOG_INFO, "<plain_auth>");
+ syslog(LOG_INFO, "<plain_auth>");
}
else if ((Imap->authstate == imap_as_expecting_multilineusername) ||
cbmstrcasestr(ChrPtr(Imap->Cmd.CmdBuf), " LOGIN ")) {
- IMAPM_syslog(LOG_INFO, "LOGIN...");
+ syslog(LOG_INFO, "LOGIN...");
}
else {
- IMAP_syslog(LOG_DEBUG, "%s", ChrPtr(Imap->Cmd.CmdBuf));
+ syslog(LOG_DEBUG, "%s", ChrPtr(Imap->Cmd.CmdBuf));
}
pchs = ChrPtr(Imap->Cmd.CmdBuf);
/* debug output the parsed vector */
{
int i;
- IMAP_syslog(LOG_DEBUG, "----- %ld params", Imap->Cmd.num_parms);
+ syslog(LOG_DEBUG, "----- %ld params", Imap->Cmd.num_parms);
for (i=0; i < Imap->Cmd.num_parms; i++) {
if (Imap->Cmd.Params[i].len != strlen(Imap->Cmd.Params[i].Key))
- IMAP_syslog(LOG_DEBUG, "*********** %ld != %ld : %s",
+ syslog(LOG_DEBUG, "*********** %ld != %ld : %s",
Imap->Cmd.Params[i].len,
strlen(Imap->Cmd.Params[i].Key),
Imap->Cmd.Params[i].Key);
else
- IMAP_syslog(LOG_DEBUG, "%ld : %s",
+ syslog(LOG_DEBUG, "%ld : %s",
Imap->Cmd.Params[i].len,
Imap->Cmd.Params[i].Key);
}}
gettimeofday(&tv2, NULL);
total_time = (tv2.tv_usec + (tv2.tv_sec * 1000000)) - (tv1.tv_usec + (tv1.tv_sec * 1000000));
- IMAP_syslog(LOG_DEBUG, "IMAP command completed in %ld.%ld seconds",
+ syslog(LOG_DEBUG, "IMAP command completed in %ld.%ld seconds",
(total_time / 1000000),
(total_time % 1000000)
);
const char *CitadelServiceIMAP="IMAP";
const char *CitadelServiceIMAPS="IMAPS";
-void SetIMAPDebugEnabled(const int n)
-{
- IMAPDebugEnabled = n;
-}
/*
* This function is called to register the IMAP extension with Citadel.
*/
if (!threading)
{
- CtdlRegisterDebugFlagHook(HKEY("imapsrv"), SetIMAPDebugEnabled, &IMAPDebugEnabled);
CtdlRegisterServiceHook(CtdlGetConfigInt("c_imap_port"),
NULL, imap_greeting, imap_command_loop, NULL, CitadelServiceIMAP);
#ifdef HAVE_OPENSSL
#define FDELIM '\\'
-extern int IMAPDebugEnabled;
-
#define IMAP ((citimap *)CC->session_specific_data)
#define CCCIMAP ((citimap *)CCC->session_specific_data)
#define IMAPDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (IMAPDebugEnabled != 0))
-#define CCCID CCC->cs_pid
-#define IMAP_syslog(LEVEL, FORMAT, ...) \
- IMAPDBGLOG(LEVEL) syslog(LEVEL, \
- "IMAP %s CC[%d] " FORMAT, \
- IOSTR, CCCID, __VA_ARGS__)
-
-#define IMAPM_syslog(LEVEL, FORMAT) \
- IMAPDBGLOG(LEVEL) syslog(LEVEL, \
- "IMAP %s CC[%d] " FORMAT, \
- IOSTR, CCCID)
#define I_FLAG_NONE (0)
#define I_FLAG_LOGGED_IN (1<<0)