X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fseq_save.c;h=0c14f47db41928cc953cebce885b421b7013b67f;hb=a485ed478abbd599d8c9aab48934e7a26733ecb1;hp=94b7543215ae671d89019d96d131dbffc647897e;hpb=5dd6771b28c257af405d7248639ed0e3bcdce38b;p=mmh diff --git a/sbr/seq_save.c b/sbr/seq_save.c index 94b7543..0c14f47 100644 --- a/sbr/seq_save.c +++ b/sbr/seq_save.c @@ -1,4 +1,3 @@ - /* * seq_save.c -- 1) synchronize sequences * -- 2) save public sequences @@ -24,90 +23,90 @@ void seq_save (struct msgs *mp) { - int i; - char flags, *cp, attr[BUFSIZ], seqfile[PATH_MAX]; - FILE *fp; - sigset_t set, oset; + int i; + char flags, *cp, attr[BUFSIZ], seqfile[PATH_MAX]; + FILE *fp; + sigset_t set, oset; - /* check if sequence information has changed */ - if (!(mp->msgflags & SEQMOD)) - return; - mp->msgflags &= ~SEQMOD; + /* check if sequence information has changed */ + if (!(mp->msgflags & SEQMOD)) + return; + mp->msgflags &= ~SEQMOD; - fp = NULL; - flags = mp->msgflags; /* record folder flags */ + fp = NULL; + flags = mp->msgflags; /* record folder flags */ - /* - * If no mh-sequences file is defined, or if a mh-sequences file - * is defined but empty (*mh_seq == '\0'), then pretend folder - * is readonly. This will force all sequences to be private. - */ - if (mh_seq == NULL || *mh_seq == '\0') - set_readonly (mp); - else - snprintf (seqfile, sizeof(seqfile), "%s/%s", mp->foldpath, mh_seq); + /* + * If no mh-sequences file is defined, or if a mh-sequences file + * is defined but empty (*mh_seq == '\0'), then pretend folder + * is readonly. This will force all sequences to be private. + */ + if (mh_seq == NULL || *mh_seq == '\0') + set_readonly (mp); + else + snprintf (seqfile, sizeof(seqfile), "%s/%s", mp->foldpath, mh_seq); - for (i = 0; mp->msgattrs[i]; i++) { - snprintf (attr, sizeof(attr), "atr-%s-%s", mp->msgattrs[i], mp->foldpath); + for (i = 0; mp->msgattrs[i]; i++) { + snprintf (attr, sizeof(attr), "atr-%s-%s", mp->msgattrs[i], mp->foldpath); - /* get space separated list of sequence ranges */ - if (!(cp = seq_list(mp, mp->msgattrs[i]))) { - context_del (attr); /* delete sequence from context */ - continue; - } + /* get space separated list of sequence ranges */ + if (!(cp = seq_list(mp, mp->msgattrs[i]))) { + context_del (attr); /* delete sequence from context */ + continue; + } - if (is_readonly(mp) || is_seq_private(mp, i)) { + if (is_readonly(mp) || is_seq_private(mp, i)) { priv: - /* - * sequence is private - */ - context_replace (attr, cp); /* update sequence in context */ - } else { - /* - * sequence is public - */ - context_del (attr); /* delete sequence from context */ + /* + * sequence is private + */ + context_replace (attr, cp); /* update sequence in context */ + } else { + /* + * sequence is public + */ + context_del (attr); /* delete sequence from context */ - if (!fp) { - /* - * Attempt to open file for public sequences. - * If that fails (probably because folder is - * readonly), then make sequence private. - */ - if ((fp = lkfopen (seqfile, "w")) == NULL - && (unlink (seqfile) == -1 || - (fp = lkfopen (seqfile, "w")) == NULL)) { - admonish (attr, "unable to write"); - goto priv; + if (!fp) { + /* + * Attempt to open file for public sequences. + * If that fails (probably because folder is + * readonly), then make sequence private. + */ + if ((fp = lkfopen (seqfile, "w")) == NULL + && (unlink (seqfile) == -1 || + (fp = lkfopen (seqfile, "w")) == NULL)) { + admonish (attr, "unable to write"); + goto priv; + } + + /* block a few signals */ + sigemptyset (&set); + sigaddset(&set, SIGHUP); + sigaddset(&set, SIGINT); + sigaddset(&set, SIGQUIT); + sigaddset(&set, SIGTERM); + SIGPROCMASK (SIG_BLOCK, &set, &oset); + } + fprintf (fp, "%s: %s\n", mp->msgattrs[i], cp); } + } - /* block a few signals */ - sigemptyset (&set); - sigaddset(&set, SIGHUP); - sigaddset(&set, SIGINT); - sigaddset(&set, SIGQUIT); - sigaddset(&set, SIGTERM); - SIGPROCMASK (SIG_BLOCK, &set, &oset); - } - fprintf (fp, "%s: %s\n", mp->msgattrs[i], cp); + if (fp) { + lkfclose (fp, seqfile); + SIGPROCMASK (SIG_SETMASK, &oset, &set); /* reset signal mask */ + } else { + /* + * If folder is not readonly, and we didn't save any + * public sequences, then remove that file. + */ + if (!is_readonly(mp)) + unlink (seqfile); } - } - if (fp) { - lkfclose (fp, seqfile); - SIGPROCMASK (SIG_SETMASK, &oset, &set); /* reset signal mask */ - } else { /* - * If folder is not readonly, and we didn't save any - * public sequences, then remove that file. + * Reset folder flag, since we may be + * pretending that folder is readonly. */ - if (!is_readonly(mp)) - unlink (seqfile); - } - - /* - * Reset folder flag, since we may be - * pretending that folder is readonly. - */ - mp->msgflags = flags; + mp->msgflags = flags; }