2 ** seq_del.c -- delete message(s) from a sequence
4 ** This code is Copyright (c) 2002, by the authors of nmh. See the
5 ** COPYRIGHT file in the root directory of the nmh distribution for
6 ** complete copyright information.
13 ** Delete all SELECTED messages from sequence
15 ** If public == 1, make sequence public.
16 ** If public == 0, make sequence private.
17 ** If public == -1, leave the public/private bit alone for existing
18 ** sequences. For new sequences, set this bit based
19 ** on its readonly status.
21 ** If error, return 0, else return 1.
25 seq_delsel(struct msgs *mp, char *cp, int public, int zero)
28 int msgnum, new_seq = 1;
34 ** Get the number for this sequence
36 for (i = 0; mp->msgattrs[i]; i++) {
37 if (strcmp(mp->msgattrs[i], cp)==0) {
44 ** If the zero flag is set, first add all existing
45 ** messages in this folder to the sequence.
49 ** create the sequence, if necessary
53 advise(NULL, "only %d sequences allowed (no room for %s)!", NUMATTRS, cp);
56 if (!(mp->msgattrs[i] = strdup(cp))) {
57 advise(NULL, "strdup failed");
60 mp->msgattrs[i + 1] = NULL;
63 ** now add sequence bit to all existing messages
65 for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) {
66 if (does_exist(mp, msgnum))
67 add_sequence(mp, i, msgnum);
69 clear_sequence(mp, i, msgnum);
73 advise(NULL, "no such sequence as %s", cp);
79 ** Now clear the bit on all selected messages
81 for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
82 if (is_selected(mp, msgnum))
83 clear_sequence(mp, i, msgnum);
86 ** Set the public/private bit for this sequence.
89 make_seq_public(mp, i);
91 make_seq_private(mp, i);
94 ** If public == -1, then only set the
95 ** public/private bit for new sequences.
98 make_seq_private(mp, i);
100 make_seq_public(mp, i);
103 mp->msgflags |= SEQMOD;
109 ** Delete message from sequence.
111 ** If error, return 0, else return 1.
115 seq_delmsg(struct msgs *mp, char *cp, int msgnum)
122 for (i = 0; mp->msgattrs[i]; i++) {
123 if (strcmp(mp->msgattrs[i], cp)==0) {
124 clear_sequence(mp, i, msgnum);
125 mp->msgflags |= SEQMOD;
130 advise(NULL, "no such sequence as %s", cp);