sigset_t set, oset;
/* check if sequence information has changed */
- if (!(mp->msgflags & SEQMOD))
+ if (!(mp->msgflags & SEQMOD)) {
+ if (mp->seqhandle) {
+ lkfclosedata (mp->seqhandle, mp->seqname);
+ mp->seqhandle = NULL;
+ free(mp->seqname);
+ mp->seqname = NULL;
+ }
return;
+ }
mp->msgflags &= ~SEQMOD;
fp = NULL;
* If that fails (probably because folder is
* readonly), then make sequence private.
*/
- if ((fp = lkfopendata (seqfile, "w")) == NULL
+
+ if (mp->seqhandle) {
+ fp = mp->seqhandle;
+ mp->seqhandle = NULL;
+ free(mp->seqname);
+ mp->seqname = NULL;
+ rewind(fp);
+ ftruncate(fileno(fp), 0);
+ } else if ((fp = lkfopendata (seqfile, "w")) == NULL
&& (unlink (seqfile) == -1 ||
(fp = lkfopendata (seqfile, "w")) == NULL)) {
admonish (attr, "unable to write");