X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/2e08fdfc0ef872c968c2e42b7ee0ede42aee14aa..3b5cb2c248fa8fbdefe9bb9d6aa791070ba5ea28:/sbr/seq_save.c?ds=sidebyside diff --git a/sbr/seq_save.c b/sbr/seq_save.c index 837b4bab..a431804e 100644 --- a/sbr/seq_save.c +++ b/sbr/seq_save.c @@ -30,8 +30,15 @@ seq_save (struct msgs *mp) 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; @@ -74,7 +81,15 @@ priv: * 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");