if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR || (*msg)->magic == M_IMAP) r = fclose ((*msg)->fp);
switch ((*msg)->magic) { case M_MH: case M_MAILDIR: r = fclose ((*msg)->fp); break;  #ifdef USE_IMAP case M_IMAP: r = fclose ((*msg)->fp); if ((*msg)->write && (*msg)->ctx->append) { r = imap_append_message ((*msg)->ctx, *msg); unlink ((*msg)->path); } #endif  default: break; }
int mx_close_message (MESSAGE **msg){  int r = 0;  if ((*msg)->write)  {    /* add the message terminator */    switch ((*msg)->magic)    {      case M_MMDF:	fputs (MMDF_SEP, (*msg)->fp);	break;      case M_MBOX:	fputc ('\n', (*msg)->fp);	break;    }  }  if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR || (*msg)->magic == M_IMAP)    r = fclose ((*msg)->fp);  free (*msg);  *msg = NULL;  return (r);}