]> diplodocus.org Git - nmh/blobdiff - sbr/folder_free.c
seq_del.c: Move interface to own file.
[nmh] / sbr / folder_free.c
index f06bbf5ce44d3e202ec884bdd03f9bce1de2744e..66c07d0eb5cc8dd214f834e4cfd0a9850c4876a8 100644 (file)
@@ -1,32 +1,43 @@
-
-/*
- * folder_free.c -- free a folder/message structure
- *
- * $Id$
+/* folder_free.c -- free a folder/message structure
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
  */
 
-#include <h/mh.h>
+#include "h/mh.h"
+#include "h/utils.h"
+#include "lock_file.h"
 
 
 void
 folder_free (struct msgs *mp)
 {
-    int i;
+    size_t i;
+    struct bvector *v;
 
     if (!mp)
        return;
 
-    if (mp->foldpath)
-       free (mp->foldpath);
+    free(mp->foldpath);
 
     /* free the sequence names */
-    for (i = 0; mp->msgattrs[i]; i++)
-       free (mp->msgattrs[i]);
+    for (i = 0; i < svector_size (mp->msgattrs); i++)
+       free (svector_at (mp->msgattrs, i));
+    svector_free (mp->msgattrs);
+
+    for (i = 0, v = mp->msgstats; i < mp->num_msgstats; ++i, ++v) {
+       bvector_fini(v);
+    }
+    free (mp->msgstats);
+
+    /* Close/free the sequence file if it is open */
+
+    if (mp->seqhandle)
+       lkfclosedata (mp->seqhandle, mp->seqname);
+
+    free(mp->seqname);
 
-    free (mp->msgstats);       /* free message status area   */
+    bvector_free (mp->attrstats);
     free (mp);                 /* free main folder structure */
 }