- /*
- ** Allocate a temporary place to record the
- ** name of the messages in this folder.
- */
- len = NUMMSGS;
- mi = (int *) mh_xcalloc((size_t) len, sizeof(*mi));
-
- 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)));
- }
-
- /* Check if this is the first message we've seen */
- if (mp->nummsg == 0) {
- mp->lowmsg = msgnum;
- mp->hghmsg = msgnum;
- } else {
- /*
- ** Check if this is it the highest or
- ** lowest we've seen?
- */
- if (msgnum < mp->lowmsg)
- mp->lowmsg = msgnum;
- if (msgnum > mp->hghmsg)
- mp->hghmsg = msgnum;
- }
-
- /*
- ** Now increment count, and record message
- ** number in a temporary place for now.
- */
- mi[mp->nummsg++] = msgnum;
-
- } else {
- switch (dp->d_name[0]) {
- case '.':
- case ',':
- continue;
-
- default:
- /*
- ** indicate that there are other
- ** files in folder
- */
- set_other_files(mp);
- continue;
- }
- }
- }
+ mp->nummsg = scandir(name, &dp, msgfilter, msgnumcmp);