Completely reworked the path convertion functions
[mmh] / sbr / folder_read.c
index c77ea1e..c28b430 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * folder_read.c -- initialize folder structure and read folder
- *
- * 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.
- */
+** folder_read.c -- initialize folder structure and read folder
+**
+** 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/utils.h>
 #define NUMMSGS  1024
 
 /*
- * 1) Create the folder/message structure
- * 2) Read the directory (folder) and temporarily
- *    record the numbers of the messages we have seen.
- * 3) Then allocate the array for message attributes and
- *    set the initial flags for all messages we've seen.
- * 4) Read and initialize the sequence information.
- */
+** 1) Create the folder/message structure
+** 2) Read the directory (folder) and temporarily
+**    record the numbers of the messages we have seen.
+** 3) Then allocate the array for message attributes and
+**    set the initial flags for all messages we've seen.
+** 4) Read and initialize the sequence information.
+*/
 
 struct msgs *
-folder_read (char *name)
+folder_read(char *name)
 {
        int msgnum, prefix_len, len, *mi;
        struct msgs *mp;
@@ -30,21 +30,21 @@ folder_read (char *name)
        struct dirent *dp;
        DIR *dd;
 
-       name = m_mailpath (name);
-       if (!(dd = opendir (name))) {
-               free (name);
+       name = getcpy(toabsdir(name));
+       if (!(dd = opendir(name))) {
+               free(name);
                return NULL;
        }
 
-       if (stat (name, &st) == -1) {
-               free (name);
+       if (stat(name, &st) == -1) {
+               free(name);
                return NULL;
        }
 
        /* Allocate the main structure for folder information */
-       mp = (struct msgs *) mh_xmalloc ((size_t) sizeof(*mp));
+       mp = (struct msgs *) mh_xmalloc((size_t) sizeof(*mp));
 
-       clear_folder_flags (mp);
+       clear_folder_flags(mp);
        mp->foldpath = name;
        mp->lowmsg = 0;
        mp->hghmsg = 0;
@@ -54,26 +54,26 @@ folder_read (char *name)
        mp->numsel = 0;
        mp->nummsg = 0;
 
-       if (access (name, W_OK) == -1)
-               set_readonly (mp);
+       if (access(name, W_OK) == -1)
+               set_readonly(mp);
        prefix_len = strlen(backup_prefix);
 
        /*
-        * Allocate a temporary place to record the
-        * name of the messages in this folder.
-        */
+       ** Allocate a temporary place to record the
+       ** name of the messages in this folder.
+       */
        len = NUMMSGS;
-       mi = (int *) mh_xmalloc ((size_t) (len * sizeof(*mi)));
+       mi = (int *) mh_xmalloc((size_t) (len * sizeof(*mi)));
 
-       while ((dp = readdir (dd))) {
-               if ((msgnum = m_atoi (dp->d_name)) && msgnum > 0) {
+       while ((dp = readdir(dd))) {
+               if ((msgnum = m_atoi(dp->d_name)) && msgnum > 0) {
                        /*
-                        * Check if we need to allocate more
-                        * temporary elements for message names.
-                        */
+                       ** Check if we need to allocate more
+                       ** temporary elements for message names.
+                       */
                        if (mp->nummsg >= len) {
                                len += NUMMSGS;
-                               mi = (int *) mh_xrealloc (mi, (size_t) (len * sizeof(*mi)));
+                               mi = (int *) mh_xrealloc(mi, (size_t) (len * sizeof(*mi)));
                        }
 
                        /* Check if this is the first message we've seen */
@@ -81,7 +81,10 @@ folder_read (char *name)
                                mp->lowmsg = msgnum;
                                mp->hghmsg = msgnum;
                        } else {
-                               /* Check if this is it the highest or lowest we've seen? */
+                               /*
+                               ** Check if this is it the highest or
+                               ** lowest we've seen?
+                               */
                                if (msgnum < mp->lowmsg)
                                   mp->lowmsg = msgnum;
                                if (msgnum > mp->hghmsg)
@@ -89,9 +92,9 @@ folder_read (char *name)
                        }
 
                        /*
-                        * Now increment count, and record message
-                        * number in a temporary place for now.
-                        */
+                       ** Now increment count, and record message
+                       ** number in a temporary place for now.
+                       */
                        mi[mp->nummsg++] = msgnum;
 
                } else {
@@ -104,56 +107,62 @@ folder_read (char *name)
                                        continue;
 
                                default:
-                                       /* skip any files beginning with backup prefix */
-                                       if (!strncmp (dp->d_name, backup_prefix, prefix_len))
+                                       /*
+                                       ** skip any files beginning with
+                                       ** backup prefix
+                                       */
+                                       if (!strncmp(dp->d_name, backup_prefix, prefix_len))
                                                continue;
 
                                        /* skip the altmsg link file */
-                                       if (!strcmp (dp->d_name, altmsglink))
+                                       if (!strcmp(dp->d_name, altmsglink))
                                                continue;
 
-                                       /* indicate that there are other files in folder */
-                                       set_other_files (mp);
+                                       /*
+                                       ** indicate that there are other
+                                       ** files in folder
+                                       */
+                                       set_other_files(mp);
                                        continue;
                        }
                }
        }
 
-       closedir (dd);
-       mp->lowoff = max (mp->lowmsg, 1);
+       closedir(dd);
+       mp->lowoff = max(mp->lowmsg, 1);
 
        /* Go ahead and allocate space for 100 additional messages. */
        mp->hghoff = mp->hghmsg + 100;
 
        /* for testing, allocate minimal necessary space */
-       /* mp->hghoff = max (mp->hghmsg, 1); */
+       /* mp->hghoff = max(mp->hghmsg, 1); */
 
        /*
-        * Allocate space for status of each message.
-        */
-       mp->msgstats = mh_xmalloc (MSGSTATSIZE(mp, mp->lowoff, mp->hghoff));
+       ** 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.
-        */
+       ** Clear all the flag bits for all the message
+       ** status entries we just allocated.
+       */
        for (msgnum = mp->lowoff; msgnum <= mp->hghoff; msgnum++)
-               clear_msg_flags (mp, msgnum);
+               clear_msg_flags(mp, msgnum);
 
        /*
-        * Scan through the array of messages we've seen and
-        * setup the initial flags for those messages in the
-        * newly allocated mp->msgstats area.
-        */
+       ** Scan through the array of messages we've seen and
+       ** setup the initial flags for those messages in the
+       ** newly allocated mp->msgstats area.
+       */
        for (msgnum = 0; msgnum < mp->nummsg; msgnum++)
-               set_exists (mp, mi[msgnum]);
+               set_exists(mp, mi[msgnum]);
 
-       free (mi);  /* We don't need this anymore */
+       free(mi);  /* We don't need this anymore */
 
        /*
-        * Read and initialize the sequence information.
-        */
-       seq_read (mp);
+       ** Read and initialize the sequence information.
+       */
+       seq_read(mp);
 
        return mp;
 }