* static prototypes
*/
static int seq_init (struct msgs *, char *, char *);
-static int seq_public (struct msgs *, int);
+static int seq_public (struct msgs *, int, int *);
static void seq_private (struct msgs *);
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.
return OK;
/* Initialize the public sequences */
- if (seq_public (mp, lockflag) == NOTOK) {
- if (errno == EACCES || errno == EAGAIN || errno == EWOULDBLOCK) {
- /* Failed to lock sequence file. */
- return NOTOK;
- }
+ if (seq_public (mp, lockflag, &failed_to_lock) == NOTOK) {
+ if (failed_to_lock) return NOTOK;
}
/* Initialize the private sequences */
*/
static int
-seq_public (struct msgs *mp, int lockflag)
+seq_public (struct msgs *mp, int lockflag, int *failed_to_lock)
{
int state;
char *cp, seqfile[PATH_MAX];
/* get filename of sequence file */
snprintf (seqfile, sizeof(seqfile), "%s/%s", mp->foldpath, mh_seq);
- if ((fp = lkfopendata (seqfile, lockflag ? "r+" : "r")) == NULL)
+ if ((fp = lkfopendata (seqfile, lockflag ? "r+" : "r", failed_to_lock))
+ == NULL)
return NOTOK;
/* Use m_getfld to scan sequence file */
* Search for this sequence name to see if we've seen
* it already. If we've seen this sequence before,
* then clear the bit for this sequence from all the
- * mesages in this folder.
+ * messages in this folder.
*/
for (i = 0; i < svector_size (mp->msgattrs); i++) {
if (!strcmp (svector_at (mp->msgattrs, i), name)) {