X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/e491542da563673b49c6f6df9948ffaffbeed4fb..41a19760d9369daba89e4ad963a06ebb6f04321e:/sbr/seq_read.c?ds=inline diff --git a/sbr/seq_read.c b/sbr/seq_read.c index 4b9e815d..9b071a4e 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -15,7 +15,7 @@ * static prototypes */ static int seq_init (struct msgs *, char *, char *); -static void seq_public (struct msgs *, int); +static int seq_public (struct msgs *, int, int *); static void seq_private (struct msgs *); @@ -25,9 +25,11 @@ static void seq_private (struct msgs *); * or context file (for private sequences). */ -void +int seq_read (struct msgs *mp, int lockflag) { + int failed_to_lock = 0; + /* * Initialize the list of sequence names. Go ahead and * add the "cur" sequence to the list of sequences. @@ -37,13 +39,17 @@ seq_read (struct msgs *mp, int lockflag) /* If folder is empty, don't scan for sequence information */ if (mp->nummsg == 0) - return; + return OK; /* Initialize the public sequences */ - seq_public (mp, lockflag); + if (seq_public (mp, lockflag, &failed_to_lock) == NOTOK) { + if (failed_to_lock) return NOTOK; + } /* Initialize the private sequences */ seq_private (mp); + + return OK; } @@ -51,8 +57,8 @@ seq_read (struct msgs *mp, int lockflag) * read folder's sequences file for public sequences */ -static void -seq_public (struct msgs *mp, int lockflag) +static int +seq_public (struct msgs *mp, int lockflag, int *failed_to_lock) { int state; char *cp, seqfile[PATH_MAX]; @@ -61,19 +67,19 @@ seq_public (struct msgs *mp, int lockflag) m_getfld_state_t gstate = 0; /* - * If mh_seq == NULL (such as if nmh been compiled with - * NOPUBLICSEQ), or if *mh_seq == '\0' (the user has defined + * If mh_seq == NULL or if *mh_seq == '\0' (the user has defined * the "mh-sequences" profile entry, but left it empty), * then just return, and do not initialize any public sequences. */ if (mh_seq == NULL || *mh_seq == '\0') - return; + return OK; /* get filename of sequence file */ snprintf (seqfile, sizeof(seqfile), "%s/%s", mp->foldpath, mh_seq); - if ((fp = lkfopendata (seqfile, lockflag ? "r+" : "r")) == NULL) - return; + if ((fp = lkfopendata (seqfile, lockflag ? "r+" : "r", failed_to_lock)) + == NULL) + return NOTOK; /* Use m_getfld to scan sequence file */ for (;;) { @@ -117,6 +123,8 @@ seq_public (struct msgs *mp, int lockflag) } else { lkfclosedata (fp, seqfile); } + + return OK; }