-
-/*
- * seq_del.c -- delete message(s) from a sequence
+/* seq_del.c -- delete message(s) from 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_delsel (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;
}
* create the sequence, if necessary
*/
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;
}
/*
* now add sequence bit to all existing messages
}
} else {
if (new_seq) {
- advise (NULL, "no such sequence as %s", cp);
+ inform("no such sequence as %s", cp);
return 0;
}
}
if (is_selected (mp, msgnum))
clear_sequence (mp, i, msgnum);
+ if (! strcmp (cp, current) &&
+ mp->lowsel <= mp->curmsg && mp->curmsg <= mp->hghsel) {
+ /* Removed current message indication, so reset curmsg. */
+ mp->curmsg = 0;
+ }
+
/*
* Set the public/private bit for this sequence.
*/
int
seq_delmsg (struct msgs *mp, char *cp, int msgnum)
{
- int i;
+ size_t i;
if (!seq_nameok (cp))
return 0;
- 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)) {
clear_sequence (mp, i, msgnum);
mp->msgflags |= SEQMOD;
return 1;
}
}
- advise (NULL, "no such sequence as %s", cp);
+ inform("no such sequence as %s", cp);
return 0;
}