#include "mutt.h"
#include "globals.h"
+#include "pattern.h"
#include "sort.h"
#include "browser.h"
#include "message.h"
#include "imap_private.h"
-#if defined(USE_SSL) || defined(USE_GNUTLS)
-# include <lib-sys/mutt_ssl.h>
-#endif
#include "buffy.h"
/* imap forward declarations */
return -1;
}
-#if 1
if (r == 1 && c != '\n')
fputc ('\r', fp);
}
else
r = 0;
-#endif
+
fputc (c, fp);
if (bar && !(pos % 1024))
mutt_progress_bar (bar, pos);
* than getting the delim wrong */
idata->delim = '/';
- imap_cmd_start (idata, "string_list_t \"\" \"\"");
+ imap_cmd_start (idata, "LIST \"\" \"\"");
do {
if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)
break;
- s = imap_next_word (idata->cmd.buf);
- if (ascii_strncasecmp ("string_list_t", s, 4) == 0) {
+ s = imap_next_word (idata->cmd.buf.data);
+ if (ascii_strncasecmp ("LIST", s, 4) == 0) {
s = imap_next_word (s);
s = imap_next_word (s);
if (s && s[0] == '\"' && s[1] && s[2] == '\"')
static int imap_check_capabilities (IMAP_DATA * idata)
{
if (imap_exec (idata, "CAPABILITY", 0) != 0) {
- imap_error ("imap_check_capabilities", idata->cmd.buf);
+ imap_error ("imap_check_capabilities", idata->cmd.buf.data);
return -1;
}
if (!idata) {
/* The current connection is a new connection */
- if (!(idata = imap_new_idata ())) {
- mutt_socket_free (conn);
- return NULL;
- }
-
- conn->data = idata;
+ idata = imap_new_idata();
+ conn->data = idata;
idata->conn = conn;
new = 1;
}
return -1;
}
- if (ascii_strncasecmp ("* OK", idata->cmd.buf, 4) == 0) {
+ if (ascii_strncasecmp ("* OK", idata->cmd.buf.data, 4) == 0) {
/* TODO: Parse new tagged CAPABILITY data (* OK [CAPABILITY...]) */
if (imap_check_capabilities (idata))
goto bail;
-#if defined(USE_SSL) || defined(USE_GNUTLS)
/* Attempt STARTTLS if available and desired. */
- if (!idata->conn->ssf && (option(OPTSSLFORCETLS) ||
+ if (!idata->conn->ssf && (mod_ssl.force_tls ||
mutt_bit_isset (idata->capabilities, STARTTLS))) {
int rc;
- if (option (OPTSSLFORCETLS))
+ if (mod_ssl.force_tls)
rc = M_YES;
- else if ((rc = query_quadoption (OPT_SSLSTARTTLS,
- _("Secure connection with TLS?"))) == -1)
- goto err_close_conn;
- if (rc == M_YES) {
+ else if (mod_ssl.starttls) {
if ((rc = imap_exec (idata, "STARTTLS", IMAP_CMD_FAIL_OK)) == -1)
goto bail;
if (rc != -2) {
-#if defined (USE_SSL) || defined (USE_GNUTLS)
if (mutt_ssl_starttls (idata->conn))
-#endif
{
mutt_error (_("Could not negotiate TLS connection"));
mutt_sleep (1);
}
}
- if (option(OPTSSLFORCETLS) && ! idata->conn->ssf) {
+ if (mod_ssl.force_tls && ! idata->conn->ssf) {
mutt_error _("Encrypted connection unavailable");
mutt_sleep (1);
goto err_close_conn;
}
-#endif
}
- else if (ascii_strncasecmp ("* PREAUTH", idata->cmd.buf, 9) == 0) {
+ else if (ascii_strncasecmp ("* PREAUTH", idata->cmd.buf.data, 9) == 0) {
idata->state = IMAP_AUTHENTICATED;
if (imap_check_capabilities (idata) != 0)
goto bail;
if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)
break;
- pc = idata->cmd.buf + 2;
+ pc = idata->cmd.buf.data + 2;
/* Obtain list of available flags here, may be overridden by a
* PERMANENTFLAGS tag in the OK response */
if (rc == IMAP_CMD_NO) {
char *s;
- s = imap_next_word (idata->cmd.buf); /* skip seq */
+ s = imap_next_word (idata->cmd.buf.data); /* skip seq */
s = imap_next_word (s); /* Skip response */
mutt_error ("%s", s);
mutt_sleep (2);
/* check for READ-ONLY notification */
if (!ascii_strncasecmp
- (imap_get_qualifier (idata->cmd.buf), "[READ-ONLY]", 11)
+ (imap_get_qualifier (idata->cmd.buf.data), "[READ-ONLY]", 11)
&& !mutt_bit_isset (idata->capabilities, ACL)) {
ctx->readonly = 1;
}
idata->status = IMAP_BYE;
imap_cmd_start (idata, "LOGOUT");
while (imap_cmd_step (idata) == IMAP_CMD_CONTINUE);
- p_delete(&idata->cmd.buf);
- p_delete(&idata);
+ imap_free_idata(&idata);
}
-/*
-int imap_close_connection (CONTEXT *ctx)
-{
- if (CTX_DATA->status != IMAP_BYE)
- {
- mutt_message _("Closing connection to IMAP server...");
- imap_logout (CTX_DATA);
- mutt_clear_error ();
- }
- mutt_socket_close (CTX_DATA->conn);
- CTX_DATA->state = IMAP_DISCONNECTED;
- CTX_DATA->conn->data = NULL;
- return 0;
-}
-*/
-
/* imap_set_flag: append str to flags if we currently have permission
* according to aclbit */
static void imap_set_flag(IMAP_DATA *idata, int aclbit, int flag,
err_continue && (*err_continue != M_YES))
{
*err_continue = imap_continue ("imap_sync_message: STORE failed",
- idata->cmd.buf);
+ idata->cmd.buf.data);
if (*err_continue != M_YES)
return -1;
}
/* Set expunge bit so we don't get spurious reopened messages */
idata->reopen |= IMAP_EXPUNGE_EXPECTED;
if (imap_exec (idata, "EXPUNGE", 0) != 0) {
- imap_error (_("imap_sync_mailbox: EXPUNGE failed"), idata->cmd.buf);
+ imap_error (_("imap_sync_mailbox: EXPUNGE failed"), idata->cmd.buf.data);
rc = imap_reconnect (ctx);
goto out;
}
if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)
break;
- s = imap_next_word (idata->cmd.buf);
+ s = imap_next_word (idata->cmd.buf.data);
if (ascii_strncasecmp ("STATUS", s, 6) == 0) {
s = imap_next_word (s);
/* The mailbox name may or may not be quoted here. We could try to
if (rc != IMAP_CMD_CONTINUE)
return -1;
- s = imap_next_word (idata->cmd.buf);
- if ((ascii_strncasecmp ("string_list_t", s, 4) == 0) ||
+ s = imap_next_word (idata->cmd.buf.data);
+ if ((ascii_strncasecmp ("LIST", s, 4) == 0) ||
(ascii_strncasecmp ("LSUB", s, 4) == 0)) {
*noselect = 0;
*noinferiors = 0;
}
s = imap_next_word (s); /* name */
if (s && *s == '{') { /* Literal */
- if (imap_get_literal_count (idata->cmd.buf, &bytes) < 0)
+ if (imap_get_literal_count (idata->cmd.buf.data, &bytes) < 0)
return -1;
if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)
return -1;
- *name = idata->cmd.buf;
+ *name = idata->cmd.buf.data;
}
else
*name = s;
/* fire off command */
snprintf (buf, sizeof (buf), "%s \"\" \"%s%%\"",
- option (OPTIMAPLSUB) ? "LSUB" : "string_list_t", list);
+ option (OPTIMAPLSUB) ? "LSUB" : "LIST", list);
imap_cmd_start (idata, buf);
completions++;
}
}
- while (m_strncmp(idata->cmd.seq, idata->cmd.buf, SEQLEN));
+ while (m_strncmp(idata->cmd.seq, idata->cmd.buf.data, SEQLEN));
if (completions) {
/* reformat output */
CONTEXT * dest __attribute__ ((unused)),
HEADER * hdr __attribute__ ((unused)))
{
- char tmp[_POSIX_PATH_MAX];
+ char tmp[_POSIX_PATH_MAX];
- mutt_mktemp (tmp);
- if ((msg->fp = safe_fopen (tmp, "w")) == NULL) {
- mutt_perror (tmp);
- return (-1);
- }
- msg->path = m_strdup(tmp);
- return 0;
+ msg->fp = m_tempfile(tmp, sizeof(tmp), NONULL(MCore.tmpdir), NULL);
+ if (!msg->fp) {
+ mutt_perror(tmp);
+ return -1;
+ }
+
+ msg->path = m_strdup(tmp);
+ return 0;
}
/* this ugly kludge is required since the last int to
static int imap_commit_message (MESSAGE* msg, CONTEXT* ctx) {
int r = 0;
- if ((r = safe_fclose (&msg->fp)) == 0)
+ if ((r = m_fclose(&msg->fp)) == 0)
r = imap_append_message (ctx, msg);
return (r);
}