Fix missing va_end call in uip/mhmisc.c
[mmh] / sbr / seq_list.c
index f5dbb65..3606f6f 100644 (file)
@@ -1,14 +1,11 @@
-
 /*
- * seq_list.c -- Get all messages in a sequence and return them
- *            -- as a space separated list of message ranges.
- *
- * $Id$
- *
- * 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.
- */
+** seq_list.c -- Get all messages in a sequence and return them
+**            -- as a space separated list of message ranges.
+**
+** 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>
@@ -24,84 +21,84 @@ static int len = 0;
 char *
 seq_list(struct msgs *mp, char *seqname)
 {
-    int i, j, seqnum;
-    char *bp;
-
-    /* On first invocation, allocate initial buffer space */
-    if (!buffer) {
-       len = MAXBUFFER;
-       buffer = mh_xmalloc ((size_t) len);
-    }
-
-    /*
-     * Special processing for "cur" sequence.  We assume that the
-     * "cur" sequence and mp->curmsg are in sync (see seq_add.c).
-     * This is returned, even if message doesn't exist or the
-     * folder is empty.
-     */
-    if (!strcmp (current, seqname)) {
-       if (mp->curmsg) {       
-           sprintf(buffer, "%s", m_name(mp->curmsg));
-           return (buffer);
-       } else
-           return (NULL);
-    }
-
-    /* If the folder is empty, just return NULL */
-    if (mp->nummsg == 0)
-       return NULL;
-
-    /* Get the index of the sequence */
-    if ((seqnum = seq_getnum (mp, seqname)) == -1)
-       return NULL;
-
-    bp = buffer;
-
-    for (i = mp->lowmsg; i <= mp->hghmsg; ++i) {
-       /*
-        * If message doesn't exist, or isn't in
-        * the sequence, then continue.
-        */
-       if (!does_exist(mp, i) || !in_sequence(mp, seqnum, i))
-           continue;
+       int i, j, seqnum;
+       char *bp;
 
-       /*
-        * See if we need to enlarge buffer.  Since we don't know
-        * exactly how many character this particular message range
-        * will need, we enlarge the buffer if we are within
-        * 50 characters of the end.
-        */
-       if (bp - buffer > len - 50) {
-           char *newbuf;
-
-           len += MAXBUFFER;
-           newbuf = mh_xrealloc (buffer, (size_t) len);
-           bp = newbuf + (bp - buffer);
-           buffer = newbuf;
+       /* On first invocation, allocate initial buffer space */
+       if (!buffer) {
+               len = MAXBUFFER;
+               buffer = mh_xcalloc(len, sizeof(char));
        }
 
        /*
-        * If this is not the first message range in
-        * the list, first add a space.
-        */
-       if (bp > buffer)
-           *bp++ = ' ';
-
-       sprintf(bp, "%s", m_name(i));
-       bp += strlen(bp);
-       j = i;                  /* Remember beginning of message range */
+       ** Special processing for the cur sequence.  We assume that the
+       ** cur sequence and mp->curmsg are in sync (see seq_add.c).
+       ** This is returned, even if message doesn't exist or the
+       ** folder is empty.
+       */
+       if (strcmp(seq_cur, seqname)==0) {
+               if (mp->curmsg) {
+                       sprintf(buffer, "%s", m_name(mp->curmsg));
+                       return (buffer);
+               } else
+                       return (NULL);
+       }
 
-       /*
-        * Scan to the end of this message range
-        */
-       for (++i; i <= mp->hghmsg && does_exist(mp, i) && in_sequence(mp, seqnum, i);
-            ++i)
-           ;
-
-       if (i - j > 1) {
-           sprintf(bp, "-%s", m_name(i - 1));
-           bp += strlen(bp);
+       /* If the folder is empty, just return NULL */
+       if (mp->nummsg == 0)
+               return NULL;
+
+       /* Get the index of the sequence */
+       if ((seqnum = seq_getnum(mp, seqname)) == -1)
+               return NULL;
+
+       bp = buffer;
+
+       for (i = mp->lowmsg; i <= mp->hghmsg; ++i) {
+               /*
+               ** If message doesn't exist, or isn't in
+               ** the sequence, then continue.
+               */
+               if (!does_exist(mp, i) || !in_sequence(mp, seqnum, i))
+                       continue;
+
+               /*
+               ** See if we need to enlarge buffer.  Since we don't know
+               ** exactly how many character this particular message range
+               ** will need, we enlarge the buffer if we are within
+               ** 50 characters of the end.
+               */
+               if (bp - buffer > len - 50) {
+                       char *newbuf;
+
+                       len += MAXBUFFER;
+                       newbuf = mh_xrealloc(buffer, len);
+                       bp = newbuf + (bp - buffer);
+                       buffer = newbuf;
+               }
+
+               /*
+               ** If this is not the first message range in
+               ** the list, first add a space.
+               */
+               if (bp > buffer)
+                       *bp++ = ' ';
+
+               sprintf(bp, "%s", m_name(i));
+               bp += strlen(bp);
+               j = i;  /* Remember beginning of message range */
+
+               /*
+               ** Scan to the end of this message range
+               */
+               for (++i; i <= mp->hghmsg && does_exist(mp, i) &&
+                               in_sequence(mp, seqnum, i); ++i)
+                       ;
+
+               if (i - j > 1) {
+                       sprintf(bp, "-%s", m_name(i - 1));
+                       bp += strlen(bp);
+               }
        }
-    }
-    return (bp > buffer? buffer : NULL);
+       return (bp > buffer? buffer : NULL);
 }