Merge remote-tracking branch 'origin/master'
[mmh] / sbr / folder_read.c
index 5195592..ec51d64 100644 (file)
@@ -6,8 +6,11 @@
 ** complete copyright information.
 */
 
+#include <unistd.h>
 #include <h/mh.h>
 #include <h/utils.h>
+#include <dirent.h>
+#include <sys/stat.h>
 
 /* We allocate the `mi' array 1024 elements at a time */
 #define NUMMSGS  1024
@@ -24,7 +27,7 @@
 struct msgs *
 folder_read(char *name)
 {
-       int msgnum, prefix_len, len, *mi;
+       int msgnum, len, *mi;
        struct msgs *mp;
        struct stat st;
        struct dirent *dp;
@@ -38,6 +41,7 @@ folder_read(char *name)
 
        if (stat(name, &st) == -1) {
                free(name);
+               closedir(dd);
                return NULL;
        }
 
@@ -56,7 +60,6 @@ folder_read(char *name)
 
        if (access(name, W_OK) == -1)
                set_readonly(mp);
-       prefix_len = strlen(backup_prefix);
 
        /*
        ** Allocate a temporary place to record the
@@ -86,9 +89,9 @@ folder_read(char *name)
                                ** lowest we've seen?
                                */
                                if (msgnum < mp->lowmsg)
-                                  mp->lowmsg = msgnum;
+                                       mp->lowmsg = msgnum;
                                if (msgnum > mp->hghmsg)
-                                  mp->hghmsg = msgnum;
+                                       mp->hghmsg = msgnum;
                        }
 
                        /*
@@ -101,25 +104,10 @@ folder_read(char *name)
                        switch (dp->d_name[0]) {
                        case '.':
                        case ',':
-#ifdef MHE
-                       case '+':
-#endif /* MHE */
                                continue;
 
                        default:
                                /*
-                               ** skip any files beginning with
-                               ** backup prefix
-                               */
-                               if (strncmp(dp->d_name, backup_prefix,
-                                               prefix_len)==0)
-                                       continue;
-
-                               /* skip the altmsg link file */
-                               if (strcmp(dp->d_name, altmsglink)==0)
-                                       continue;
-
-                               /*
                                ** indicate that there are other
                                ** files in folder
                                */
@@ -138,14 +126,14 @@ folder_read(char *name)
        /* for testing, allocate minimal necessary space */
        /* mp->hghoff = max(mp->hghmsg, 1); */
 
-       /*
-       ** Allocate space for status of each message.
-       */
+       /* Allocate space for status of each message. */
+
        mp->msgstats = mh_xmalloc(MSGSTATSIZE(mp, mp->lowoff, mp->hghoff));
 
        /*
        ** Clear all the flag bits for all the message
        ** status entries we just allocated.
+       ** TODO: use memset() ?
        */
        for (msgnum = mp->lowoff; msgnum <= mp->hghoff; msgnum++)
                clear_msg_flags(mp, msgnum);