X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffolder_read.c;h=35dc1950a4f7dde864da0ea93c444cc27cf5f639;hp=574316664bc7a4381e66a913d0faf3c54c71a16b;hb=30292c537fe4eab052f303f1d3179c0e2fd037d8;hpb=ced6090a330d3d83d0bce709f756aa3d7d65fea4 diff --git a/sbr/folder_read.c b/sbr/folder_read.c index 5743166..35dc195 100644 --- a/sbr/folder_read.c +++ b/sbr/folder_read.c @@ -22,7 +22,7 @@ */ struct msgs * -folder_read (char *name) +folder_read(char *name) { int msgnum, prefix_len, len, *mi; struct msgs *mp; @@ -30,21 +30,22 @@ 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); + closedir(dd); 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,8 +55,8 @@ 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); /* @@ -63,17 +64,17 @@ folder_read (char *name) ** 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. */ 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 */ @@ -99,55 +100,49 @@ folder_read (char *name) } else { switch (dp->d_name[0]) { - case '.': - case ',': -#ifdef MHE - case '+': -#endif /* MHE */ - continue; + case '.': + case ',': + continue; - default: - /* - ** 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)) - continue; - - /* - ** indicate that there are other - ** files in folder - */ - set_other_files (mp); + default: + /* + ** skip any files beginning with + ** backup prefix + */ + if (strncmp(dp->d_name, backup_prefix, + prefix_len)==0) continue; + + /* + ** 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. + ** TODO: use memset() ? */ 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 @@ -155,14 +150,14 @@ folder_read (char *name) ** 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); + seq_read(mp); return mp; }