X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/a4f7db8d70e4a1f285fb8345d3c9173b4a0cbe17..9cc2510:/uip/new.c?ds=sidebyside diff --git a/uip/new.c b/uip/new.c index a0683dd2..2bb8c17a 100644 --- a/uip/new.c +++ b/uip/new.c @@ -95,6 +95,7 @@ get_msgnums(char *folder, char *sequences[]) char name[NAMESZ], field[BUFSIZ]; char *cp; char *msgnums = NULL, *this_msgnums, *old_msgnums; + int failed_to_lock = 0; m_getfld_state_t gstate = 0; /* copied from seq_read.c:seq_public */ @@ -112,13 +113,12 @@ get_msgnums(char *folder, char *sequences[]) if (seqfile == NULL) return NULL; - if ((fp = lkfopendata (seqfile, "r")) == NULL) { - free(seqfile); + if ((fp = lkfopendata (seqfile, "r", & failed_to_lock)) == NULL) { - if (errno == EACCES || errno == EAGAIN || errno == EWOULDBLOCK) { - /* Failed to lock sequence file. */ + if (failed_to_lock) { adios (seqfile, "failed to lock"); } else { + free(seqfile); return NULL; } } @@ -261,7 +261,9 @@ check_folders(struct node **first, struct node **last, b.sequences = sequences; if (folders == NULL) { - chdir(m_maildir("")); + if (chdir(m_maildir("")) < 0) { + advise (m_maildir(""), "chdir"); + } crawl_folders(".", crawl_callback, &b); } else { fp = fopen(folders, "r"); @@ -386,7 +388,9 @@ doit(char *cur, char *folders, char *sequences[]) /* TODO: Split enough of scan.c out so that we can call it here. */ command = concat("scan +", node->n_name, " ", sequences_s, (void *)NULL); - system(command); + if (system(command) == NOTOK) { + adios (command, "system"); + } free(command); } else { if (node->n_field == NULL) { @@ -406,8 +410,11 @@ doit(char *cur, char *folders, char *sequences[]) /* If we're fnext, we haven't checked the last node yet. If it's the * current folder, return the first node. */ - if (run_mode == FNEXT && strcmp(last->n_name, cur) == 0) { - return first; + if (run_mode == FNEXT) { + assert(last != NULL); + if (strcmp(last->n_name, cur) == 0) { + return first; + } } if (run_mode == NEW) {