X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fseq_setunseen.c;h=e628393221d73ea3772941a91a92c8dc737a2046;hb=fb0594cb913cab5e14e2c295b79eb48cc675bbbf;hp=8c9fe41cf78125f224bb673b94e448bbbcf24a32;hpb=ced6090a330d3d83d0bce709f756aa3d7d65fea4;p=mmh diff --git a/sbr/seq_setunseen.c b/sbr/seq_setunseen.c index 8c9fe41..e628393 100644 --- a/sbr/seq_setunseen.c +++ b/sbr/seq_setunseen.c @@ -13,27 +13,28 @@ ** We scan through the folder and act upon all messages ** that are marked with the SELECT_UNSEEN bit. ** -** If seen == 1, delete messages from unseen sequence. -** If seen == 0, add messages to unseen sequence. +** Either add messages to or (if doadd is false) delete messages from +** the unseen sequence(s). */ - void -seq_setunseen (struct msgs *mp, int seen) +seq_setunseen(struct msgs *mp, int doadd) { - int msgnum; + int n; char **ap, *cp, *dp; /* ** Get the list of sequences for Unseen-Sequence ** and split them. */ - if ((cp = context_find (usequence))) { - dp = getcpy (cp); - if (!(ap = brkstring (dp, " ", "\n")) || !*ap) { - free (dp); - return; - } + if ((cp = context_find(usequence))) { + dp = getcpy(cp); } else { + /* not set in profile, thus use the default */ + dp = getcpy(seq_unseen); + } + if (!(ap = brkstring(dp, " ", "\n")) || !*ap) { + /* contains no sequence name, i.e. we're finished */ + free(dp); return; } @@ -42,18 +43,23 @@ seq_setunseen (struct msgs *mp, int seen) ** bit set to/from each of these sequences. */ for (; *ap; ap++) { - if (seen) { - /* make sure sequence exists first */ - if (seq_getnum(mp, *ap) != -1) - for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) - if (is_unseen (mp, msgnum)) - seq_delmsg (mp, *ap, msgnum); + if (doadd) { + for (n = mp->lowmsg; n <= mp->hghmsg; n++) { + if (is_unseen(mp, n)) { + seq_addmsg(mp, *ap, n, -1, 0); + } + } } else { - for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) - if (is_unseen (mp, msgnum)) - seq_addmsg (mp, *ap, msgnum, -1, 0); + /* make sure sequence exists first */ + if (seq_getnum(mp, *ap) != -1) { + for (n = mp->lowsel; n <= mp->hghsel; n++) { + if (is_unseen(mp, n)) { + seq_delmsg(mp, *ap, n); + } + } + } } } - free (dp); + free(dp); }