use safer p_clear when possible.
[apps/madmutt.git] / imap / message.c
index 8423a5c..7bc797f 100644 (file)
 #include <stdlib.h>
 #include <ctype.h>
 
+#include <lib-lib/mem.h>
+#include <lib-lib/ascii.h>
+#include <lib-lib/str.h>
+
 #include "mutt.h"
-#include "ascii.h"
 #include "buffer.h"
 #include "mutt_curses.h"
 #include "imap_private.h"
@@ -30,9 +33,7 @@
 #include "pgp.h"
 #endif
 
-#include "lib/mem.h"
-#include "lib/intl.h"
-#include "lib/str.h"
+#include <lib-lib/macros.h>
 #include "lib/debug.h"
 
 #if HAVE_STDINT_H
@@ -48,7 +49,7 @@ static int msg_has_flag (LIST * flag_list, const char *flag);
 static int msg_parse_fetch (IMAP_HEADER * h, char *s);
 static char *msg_parse_flags (IMAP_HEADER * h, char *s);
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
 static int msg_fetch_header_fetch (CONTEXT * ctx, IMAP_HEADER * h, char *buf,
                                    FILE * fp);
 static size_t imap_hcache_keylen (const char *fn);
@@ -73,7 +74,7 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
   const char *want_headers =
     "DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL";
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
   void *hc = NULL;
   unsigned long *uid_validity = NULL;
   char uid_buf[64];
@@ -116,7 +117,7 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
   idata->reopen &= ~IMAP_NEWMAIL_PENDING;
   idata->newMailCount = 0;
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
   if ((hc = mutt_hcache_open (HeaderCache, ctx->path))) {
 
     snprintf (buf, sizeof (buf),
@@ -130,8 +131,8 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
         mutt_message (_("Evaluating cache... [%d/%d]"), msgno + 1, msgend + 1);
 
       rewind (fp);
-      memset (&h, 0, sizeof (h));
-      h.data = mem_calloc (1, sizeof (IMAP_HEADER_DATA));
+      p_clear(&h, 1);
+      h.data = p_new(IMAP_HEADER_DATA, 1);
       do {
         mfhrc = 0;
 
@@ -174,7 +175,7 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
 
         rewind (fp);
 
-        mem_free (&uid_validity);
+        p_delete(&uid_validity);
 
       }
       while ((rc != IMAP_CMD_OK) && ((mfhrc == -1) ||
@@ -221,8 +222,8 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
 
     /* freshen fp, h */
     rewind (fp);
-    memset (&h, 0, sizeof (h));
-    h.data = mem_calloc (1, sizeof (IMAP_HEADER_DATA));
+    p_clear(&h, 1);
+    h.data = p_new(IMAP_HEADER_DATA, 1);
 
     /* this DO loop does two things:
      * 1. handles untagged messages, so we can try again on the same msg
@@ -270,7 +271,7 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
       /* content built as a side-effect of mutt_read_rfc822_header */
       ctx->hdrs[msgno]->content->length = h.content_length;
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
       sprintf (uid_buf, "/%u", h.data->uid);
       mutt_hcache_store (hc, uid_buf, ctx->hdrs[msgno], idata->uid_validity,
                          &imap_hcache_keylen);
@@ -282,9 +283,9 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
                                    ((msgno + 1) >= fetchlast)));
 
     if ((mfhrc < -1) || ((rc != IMAP_CMD_CONTINUE) && (rc != IMAP_CMD_OK))) {
-      imap_free_header_data ((void **) &h.data);
+      imap_free_header_data ((void *)&h.data);
       fclose (fp);
-#if USE_HCACHE
+#ifdef USE_HCACHE
       mutt_hcache_close (hc);
 #endif /* USE_HCACHE */
       return -1;
@@ -300,7 +301,7 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend)
     }
   }
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
   mutt_hcache_close (hc);
 #endif /* USE_HCACHE */
 
@@ -345,7 +346,7 @@ int imap_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
       return 0;
     else {
       unlink (cache->path);
-      mem_free (&cache->path);
+      p_delete(&cache->path);
     }
   }
 
@@ -354,9 +355,9 @@ int imap_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
 
   cache->uid = HEADER_DATA (h)->uid;
   mutt_mktemp (path);
-  cache->path = str_dup (path);
+  cache->path = m_strdup(path);
   if (!(msg->fp = safe_fopen (path, "w+"))) {
-    mem_free (&cache->path);
+    p_delete(&cache->path);
     return -1;
   }
 
@@ -480,7 +481,7 @@ bail:
   safe_fclose (&msg->fp);
   if (cache->path) {
     unlink (cache->path);
-    mem_free (&cache->path);
+    p_delete(&cache->path);
   }
 
   return -1;
@@ -594,11 +595,11 @@ int imap_append_message (CONTEXT * ctx, MESSAGE * msg)
     goto fail;
   }
 
-  mem_free (&mx.mbox);
+  p_delete(&mx.mbox);
   return 0;
 
 fail:
-  mem_free (&mx.mbox);
+  p_delete(&mx.mbox);
   return -1;
 }
 
@@ -640,8 +641,8 @@ int imap_copy_messages (CONTEXT * ctx, HEADER * h, char *dest, int delete)
 
   imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox));
 
-  memset (&sync_cmd, 0, sizeof (sync_cmd));
-  memset (&cmd, 0, sizeof (cmd));
+  p_clear(&sync_cmd, 1);
+  p_clear(&cmd, 1);
   mutt_buffer_addstr (&cmd, "UID COPY ");
 
   /* Null HEADER* means copy tagged messages */
@@ -740,18 +741,18 @@ int imap_copy_messages (CONTEXT * ctx, HEADER * h, char *dest, int delete)
   }
 
   if (cmd.data)
-    mem_free (&cmd.data);
+    p_delete(&cmd.data);
   if (sync_cmd.data)
-    mem_free (&sync_cmd.data);
-  mem_free (&mx.mbox);
+    p_delete(&sync_cmd.data);
+  p_delete(&mx.mbox);
   return 0;
 
 fail:
   if (cmd.data)
-    mem_free (&cmd.data);
+    p_delete(&cmd.data);
   if (sync_cmd.data)
-    mem_free (&sync_cmd.data);
-  mem_free (&mx.mbox);
+    p_delete(&sync_cmd.data);
+  p_delete(&mx.mbox);
   return -1;
 }
 
@@ -782,7 +783,7 @@ void imap_free_header_data (void **data)
   /* this should be safe even if the list wasn't used */
   mutt_free_list (&(((IMAP_HEADER_DATA *) * data)->keywords));
 
-  mem_free (data);
+  p_delete(data);
 }
 
 /* imap_set_flags: fill out the message header according to the flags from
@@ -793,12 +794,12 @@ char *imap_set_flags (IMAP_DATA * idata, HEADER * h, char *s)
   IMAP_HEADER newh;
   unsigned char readonly;
 
-  memset (&newh, 0, sizeof (newh));
-  newh.data = mem_calloc (1, sizeof (IMAP_HEADER_DATA));
+  p_clear(&newh, 1);
+  newh.data = p_new(IMAP_HEADER_DATA, 1);
 
   debug_print (2, ("parsing FLAGS\n"));
   if ((s = msg_parse_flags (&newh, s)) == NULL) {
-    mem_free (&newh.data);
+    p_delete(&newh.data);
     return NULL;
   }
 
@@ -824,7 +825,7 @@ char *imap_set_flags (IMAP_DATA * idata, HEADER * h, char *s)
 
   mutt_free_list (&(HEADER_DATA (h)->keywords));
   HEADER_DATA (h)->keywords = newh.data->keywords;
-  mem_free (&newh.data);
+  p_delete(&newh.data);
 
   return s;
 }
@@ -890,10 +891,10 @@ static int msg_fetch_header (CONTEXT * ctx, IMAP_HEADER * h, char *buf,
   return rc;
 }
 
-#if USE_HCACHE
+#ifdef USE_HCACHE
 static size_t imap_hcache_keylen (const char *fn)
 {
-  return str_len (fn);
+  return m_strlen(fn);
 }
 
 /* msg_fetch_header: import IMAP FETCH response into an IMAP_HEADER.
@@ -949,7 +950,7 @@ static int msg_has_flag (LIST * flag_list, const char *flag)
 
   flag_list = flag_list->next;
   while (flag_list) {
-    if (!ascii_strncasecmp (flag_list->data, flag, str_len (flag_list->data)))
+    if (!ascii_strncasecmp (flag_list->data, flag, m_strlen(flag_list->data)))
       return 1;
 
     flag_list = flag_list->next;