Refcounted type isn't enough, we must have a list of'em
[apps/madmutt.git] / lib-mx / mbox.c
index 9fd7a40..9eb2809 100644 (file)
@@ -38,6 +38,12 @@ static int mbox_open_new_message(MESSAGE *msg, CONTEXT *dest, HEADER *hdr)
     return 0;
 }
 
     return 0;
 }
 
+static int mbox_open_message(MESSAGE *msg, CONTEXT *ctx, int msgno)
+{
+    msg->fp = ctx->fp;
+    return 0;
+}
+
 /* prototypes */
 static int mbox_reopen_mailbox (CONTEXT*, int*);
 
 /* prototypes */
 static int mbox_reopen_mailbox (CONTEXT*, int*);
 
@@ -57,7 +63,7 @@ int mbox_lock_mailbox(CONTEXT *ctx, int excl, int retry)
     return 0;
   }
 
     return 0;
   }
 
-  return (r);
+  return r;
 }
 
 static void mbox_unlock_mailbox (CONTEXT * ctx)
 }
 
 static void mbox_unlock_mailbox (CONTEXT * ctx)
@@ -88,7 +94,7 @@ static int mbox_parse_mailbox (CONTEXT * ctx)
   /* Save information about the folder at the time we opened it. */
   if (stat (ctx->path, &sb) == -1) {
     mutt_perror (ctx->path);
   /* Save information about the folder at the time we opened it. */
   if (stat (ctx->path, &sb) == -1) {
     mutt_perror (ctx->path);
-    return (-1);
+    return -1;
   }
 
   ctx->size = sb.st_size;
   }
 
   ctx->size = sb.st_size;
@@ -219,7 +225,7 @@ static int mbox_parse_mailbox (CONTEXT * ctx)
     mx_update_context (ctx, count);
   }
 
     mx_update_context (ctx, count);
   }
 
-  return (0);
+  return 0;
 }
 
 #undef PREV
 }
 
 #undef PREV
@@ -265,12 +271,12 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint)
 
   if (stat (ctx->path, &st) == 0) {
     if (st.st_mtime == ctx->mtime && st.st_size == ctx->size)
 
   if (stat (ctx->path, &st) == 0) {
     if (st.st_mtime == ctx->mtime && st.st_size == ctx->size)
-      return (0);
+      return 0;
 
     if (st.st_size == ctx->size) {
       /* the file was touched, but it is still the same length, so just exit */
       ctx->mtime = st.st_mtime;
 
     if (st.st_size == ctx->size) {
       /* the file was touched, but it is still the same length, so just exit */
       ctx->mtime = st.st_mtime;
-      return (0);
+      return 0;
     }
 
     if (st.st_size > ctx->size) {
     }
 
     if (st.st_size > ctx->size) {
@@ -283,7 +289,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint)
            * probably the new mail arrived: no reason to wait till we can
            * parse it: we'll get it on the next pass
            */
            * probably the new mail arrived: no reason to wait till we can
            * parse it: we'll get it on the next pass
            */
-          return (M_LOCKED);
+          return M_LOCKED;
         }
         unlock = 1;
       }
         }
         unlock = 1;
       }
@@ -310,7 +316,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint)
             mutt_unblock_signals ();
           }
 
             mutt_unblock_signals ();
           }
 
-          return (M_NEW_MAIL);  /* signal that new mail arrived */
+          return M_NEW_MAIL;  /* signal that new mail arrived */
         }
         else
           modified = 1;
         }
         else
           modified = 1;
@@ -328,7 +334,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint)
         mbox_unlock_mailbox (ctx);
         mutt_unblock_signals ();
       }
         mbox_unlock_mailbox (ctx);
         mutt_unblock_signals ();
       }
-      return (M_REOPENED);
+      return M_REOPENED;
     }
   }
 
     }
   }
 
@@ -339,7 +345,7 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint)
   mutt_unblock_signals ();
   mutt_error _("Mailbox was corrupted!");
 
   mutt_unblock_signals ();
   mutt_error _("Mailbox was corrupted!");
 
-  return (-1);
+  return -1;
 }
 
 static int mbox_check_mailbox(CONTEXT *ctx, int *index_hint, int lock)
 }
 
 static int mbox_check_mailbox(CONTEXT *ctx, int *index_hint, int lock)
@@ -398,7 +404,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     mx_fastclose_mailbox (ctx);
     mutt_error _("Fatal error!  Could not reopen mailbox!");
 
     mx_fastclose_mailbox (ctx);
     mutt_error _("Fatal error!  Could not reopen mailbox!");
 
-    return (-1);
+    return -1;
   }
 
   mutt_block_signals ();
   }
 
   mutt_block_signals ();
@@ -420,7 +426,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
   }
   else if (i < 0)
     /* fatal error */
   }
   else if (i < 0)
     /* fatal error */
-    return (-1);
+    return -1;
 
   /* Create a temporary file to write the new version of the mailbox in. */
   fp = m_tempfile(tempfile, _POSIX_PATH_MAX, NONULL(mod_core.tmpdir), NULL);
 
   /* Create a temporary file to write the new version of the mailbox in. */
   fp = m_tempfile(tempfile, _POSIX_PATH_MAX, NONULL(mod_core.tmpdir), NULL);
@@ -528,7 +534,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     mx_fastclose_mailbox (ctx);
     mutt_perror (_("Can't create temporary file"));
     mutt_sleep (5);
     mx_fastclose_mailbox (ctx);
     mutt_perror (_("Can't create temporary file"));
     mutt_sleep (5);
-    return (-1);
+    return -1;
   }
 
   if (fseeko (ctx->fp, offset, SEEK_SET) != 0 /* seek the append location */
   }
 
   if (fseeko (ctx->fp, offset, SEEK_SET) != 0 /* seek the append location */
@@ -576,7 +582,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     mutt_pretty_mailbox (savefile);
     mutt_error (_("Write failed!  Saved partial mailbox to %s"), savefile);
     mutt_sleep (5);
     mutt_pretty_mailbox (savefile);
     mutt_error (_("Write failed!  Saved partial mailbox to %s"), savefile);
     mutt_sleep (5);
-    return (-1);
+    return -1;
   }
 
   /* Restore the previous access/modification times */
   }
 
   /* Restore the previous access/modification times */
@@ -590,7 +596,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
     mutt_unblock_signals ();
     mx_fastclose_mailbox (ctx);
     mutt_error _("Fatal error!  Could not reopen mailbox!");
     mutt_unblock_signals ();
     mx_fastclose_mailbox (ctx);
     mutt_error _("Fatal error!  Could not reopen mailbox!");
-    return (-1);
+    return -1;
   }
 
   /* update the offsets of the rewritten messages */
   }
 
   /* update the offsets of the rewritten messages */
@@ -607,7 +613,7 @@ static int mbox_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused))
   unlink (tempfile);            /* remove partial copy of the mailbox */
   mutt_unblock_signals ();
 
   unlink (tempfile);            /* remove partial copy of the mailbox */
   mutt_unblock_signals ();
 
-  return (0);                   /* signal success */
+  return 0;                   /* signal success */
 
 bail:                          /* Come here in case of disaster */
 
 
 bail:                          /* Come here in case of disaster */
 
@@ -635,7 +641,7 @@ bail:                          /* Come here in case of disaster */
     mutt_error _("Could not reopen mailbox!");
 
     mx_fastclose_mailbox (ctx);
     mutt_error _("Could not reopen mailbox!");
 
     mx_fastclose_mailbox (ctx);
-    return (-1);
+    return -1;
   }
 
   if (need_sort)
   }
 
   if (need_sort)
@@ -732,7 +738,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint)
     p_delete(&old_hdrs);
 
     ctx->quiet = 0;
     p_delete(&old_hdrs);
 
     ctx->quiet = 0;
-    return (-1);
+    return -1;
   }
 
   /* now try to recover the old flags */
   }
 
   /* now try to recover the old flags */
@@ -802,7 +808,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint)
 
   ctx->quiet = 0;
 
 
   ctx->quiet = 0;
 
-  return ((ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL);
+  return (ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL;
 }
 
 /*
 }
 
 /*
@@ -818,7 +824,7 @@ int mbox_check_empty (const char *path)
   if (stat (path, &st) == -1)
     return -1;
 
   if (stat (path, &st) == -1)
     return -1;
 
-  return ((st.st_size == 0));
+  return st.st_size == 0;
 }
 
 int mbox_is_magic (const char* path, struct stat* st)
 }
 
 int mbox_is_magic (const char* path, struct stat* st)
@@ -828,7 +834,7 @@ int mbox_is_magic (const char* path, struct stat* st)
   char tmp[_POSIX_PATH_MAX];
 
   if (S_ISDIR(st->st_mode))
   char tmp[_POSIX_PATH_MAX];
 
   if (S_ISDIR(st->st_mode))
-    return (-1);
+    return -1;
 
   if (st->st_size == 0) {
     return M_MBOX;
 
   if (st->st_size == 0) {
     return M_MBOX;
@@ -850,12 +856,12 @@ int mbox_is_magic (const char* path, struct stat* st)
     utime (path, &times);
   } else {
     mutt_perror (path);
     utime (path, &times);
   } else {
     mutt_perror (path);
-    return (-1);         /* fopen failed */
+    return -1;         /* fopen failed */
   }
 
   if (magic == -1 && mutt_can_read_compressed (path))
   }
 
   if (magic == -1 && mutt_can_read_compressed (path))
-    return (M_COMPRESSED);
-  return (magic);
+    return M_COMPRESSED;
+  return magic;
 }
 
 static int mbox_commit_message (MESSAGE* msg, CONTEXT* ctx) {
 }
 
 static int mbox_commit_message (MESSAGE* msg, CONTEXT* ctx) {
@@ -876,6 +882,7 @@ mx_t const mbox_mx = {
     access,
     mbox_open_mailbox,
     mbox_open_new_message,
     access,
     mbox_open_mailbox,
     mbox_open_new_message,
+    mbox_open_message,
     NULL,
     mbox_check_mailbox,
     NULL,
     NULL,
     mbox_check_mailbox,
     NULL,