-
-/*
- * seq_add.c -- add message(s) to a sequence
- *
- * $Id$
+/* seq_add.c -- add message(s) to a sequence
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
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;
/*
* 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;
}
* 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);
+ if (!(svector_push_back (mp->msgattrs, strdup (cp)))) {
+ inform("strdup failed");
return 0;
}
- if (!(mp->msgattrs[i] = 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);
}
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;
/*
* 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;
}
* 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))) {
- advise (NULL, "strdup failed");
+ if (!(svector_push_back (mp->msgattrs, strdup (cp)))) {
+ inform("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);
}