X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6c42153ad9362cc676ea66563bf400d7511b3b68..167e542ba3ddb6a8cc2eadf2d88ca482b1e657ce:/sbr/seq_add.c?ds=sidebyside diff --git a/sbr/seq_add.c b/sbr/seq_add.c index ff3e23a4..47085f88 100644 --- a/sbr/seq_add.c +++ b/sbr/seq_add.c @@ -2,8 +2,6 @@ /* * seq_add.c -- add message(s) to a sequence * - * $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. @@ -27,7 +25,8 @@ int seq_addsel (struct msgs *mp, char *cp, int public, int zero) { - int i, msgnum, new_seq = 1; + unsigned int i; + int msgnum, new_seq = 1; if (!seq_nameok (cp)) return 0; @@ -42,8 +41,8 @@ seq_addsel (struct msgs *mp, char *cp, int public, int zero) /* * Get the number for this sequence */ - for (i = 0; mp->msgattrs[i]; i++) { - if (!strcmp (mp->msgattrs[i], cp)) { + for (i = 0; i < svector_size (mp->msgattrs); i++) { + if (!strcmp (svector_at (mp->msgattrs, i), cp)) { new_seq = 0; break; } @@ -53,22 +52,17 @@ seq_addsel (struct msgs *mp, char *cp, int public, int zero) * If this is a new sequence, add a slot for it */ if (new_seq) { - if (i >= NUMATTRS) { - advise (NULL, "only %d sequences allowed (no room for %s)!", NUMATTRS, cp); - return 0; - } - if (!(mp->msgattrs[i] = strdup (cp))) { + if (!(svector_push_back (mp->msgattrs, strdup (cp)))) { advise (NULL, "strdup failed"); return 0; } - mp->msgattrs[i + 1] = NULL; } /* * If sequence is new, or zero flag is set, then first * clear the bit for this sequence from all messages. */ - if (new_seq || zero) { + if ((new_seq || zero) && mp->nummsg > 0) { for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) clear_sequence (mp, i, msgnum); } @@ -119,7 +113,8 @@ seq_addsel (struct msgs *mp, char *cp, int public, int zero) int seq_addmsg (struct msgs *mp, char *cp, int msgnum, int public, int zero) { - int i, j, new_seq = 1; + unsigned int i; + int j, new_seq = 1; if (!seq_nameok (cp)) return 0; @@ -133,8 +128,8 @@ seq_addmsg (struct msgs *mp, char *cp, int msgnum, int public, int zero) /* * Get the number for this sequence */ - for (i = 0; mp->msgattrs[i]; i++) { - if (!strcmp (mp->msgattrs[i], cp)) { + for (i = 0; i < svector_size (mp->msgattrs); i++) { + if (!strcmp (svector_at (mp->msgattrs, i), cp)) { new_seq = 0; break; } @@ -144,22 +139,17 @@ seq_addmsg (struct msgs *mp, char *cp, int msgnum, int public, int zero) * If this is a new sequence, add a slot for it */ if (new_seq) { - if (i >= NUMATTRS) { - advise (NULL, "only %d sequences allowed (no room for %s)!", NUMATTRS, cp); - return 0; - } - if (!(mp->msgattrs[i] = strdup (cp))) { + if (!(svector_push_back (mp->msgattrs, strdup (cp)))) { advise (NULL, "strdup failed"); return 0; } - mp->msgattrs[i + 1] = NULL; } /* * If sequence is new, or zero flag is set, then first * clear the bit for this sequence from all messages. */ - if (new_seq || zero) { + if ((new_seq || zero) && mp->nummsg > 0) { for (j = mp->lowmsg; j <= mp->hghmsg; j++) clear_sequence (mp, i, j); }