use buffers instead of realloc-ed string. makes code shorter.
[apps/madmutt.git] / imap / imap.c
index 77830f9..c2cde32 100644 (file)
@@ -241,7 +241,7 @@ static int imap_get_delim (IMAP_DATA * idata)
     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 ("LIST", s, 4) == 0) {
       s = imap_next_word (s);
       s = imap_next_word (s);
@@ -276,7 +276,7 @@ static int imap_check_acl (IMAP_DATA * idata)
 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;
   }
 
@@ -329,12 +329,8 @@ IMAP_DATA *imap_conn_find (const ACCOUNT * account, int flags)
 
   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;
   }
@@ -376,7 +372,7 @@ int imap_open_connection (IMAP_DATA * idata)
     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;
@@ -412,7 +408,7 @@ int imap_open_connection (IMAP_DATA * idata)
       goto err_close_conn;
     }
   }
-  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;
@@ -535,7 +531,7 @@ static int imap_open_mailbox (CONTEXT * ctx)
     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 */
@@ -577,7 +573,7 @@ static int imap_open_mailbox (CONTEXT * ctx)
   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);
@@ -589,7 +585,7 @@ static int imap_open_mailbox (CONTEXT * ctx)
 
   /* 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;
   }
@@ -686,25 +682,8 @@ void imap_logout (IMAP_DATA * idata)
   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);
-}
-
-/*
-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_free_idata(&idata);
 }
-*/
 
 /* imap_set_flag: append str to flags if we currently have permission
  *   according to aclbit */
@@ -858,7 +837,7 @@ int imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd,
       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;
   }
@@ -958,7 +937,7 @@ int imap_sync_mailbox (CONTEXT * ctx, int expunge, int *index_hint)
     /* 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;
     }
@@ -1122,7 +1101,7 @@ int imap_mailbox_check (char *path, int new)
     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 
@@ -1296,7 +1275,7 @@ int imap_parse_list_response (IMAP_DATA * idata, char **name, int *noselect,
   if (rc != IMAP_CMD_CONTINUE)
     return -1;
 
-  s = imap_next_word (idata->cmd.buf);
+  s = imap_next_word (idata->cmd.buf.data);
   if ((ascii_strncasecmp ("LIST", s, 4) == 0) ||
       (ascii_strncasecmp ("LSUB", s, 4) == 0)) {
     *noselect = 0;
@@ -1337,11 +1316,11 @@ int imap_parse_list_response (IMAP_DATA * idata, char **name, int *noselect,
     }
     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;
@@ -1533,7 +1512,7 @@ int imap_complete (char *dest, size_t dlen, char *path) {
       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 */