X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/3486f7adaa1ecec3b95dfa56a6c32ba45f72c8f5..e6917522:/uip/new.c?ds=sidebyside diff --git a/uip/new.c b/uip/new.c index 74d4d512..bdbdc73f 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,9 +113,14 @@ get_msgnums(char *folder, char *sequences[]) if (seqfile == NULL) return NULL; - if ((fp = lkfopendata (seqfile, "r")) == NULL) { - free(seqfile); - return NULL; + if ((fp = lkfopendata (seqfile, "r", & failed_to_lock)) == NULL) { + + if (failed_to_lock) { + adios (seqfile, "failed to lock"); + } else { + free(seqfile); + return NULL; + } } /* Use m_getfld to scan sequence file */ @@ -400,8 +406,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) { @@ -422,13 +431,7 @@ main(int argc, char **argv) char *unseen; struct node *folder; -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex(argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments;