X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/1691e80890e5d8ba258c51c214a3e91880e1db2b..c576ad2674c37a1c63f004c71049998f38854c64:/sbr/seq_del.c diff --git a/sbr/seq_del.c b/sbr/seq_del.c index ed70c5d9..59e4050d 100644 --- a/sbr/seq_del.c +++ b/sbr/seq_del.c @@ -1,8 +1,8 @@ - -/* - * seq_del.c -- delete message(s) from a sequence +/* seq_del.c -- delete message(s) from 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. */ #include @@ -23,7 +23,8 @@ 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; @@ -31,8 +32,8 @@ seq_delsel (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; } @@ -47,15 +48,10 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) * 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 @@ -68,7 +64,7 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) } } else { if (new_seq) { - advise (NULL, "no such sequence as %s", cp); + inform("no such sequence as %s", cp); return 0; } } @@ -80,6 +76,12 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) 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. */ @@ -112,19 +114,19 @@ seq_delsel (struct msgs *mp, char *cp, int public, int zero) 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; }