X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/de4636bb664106d9932ae7acb517e471b848f1f3..a3211dcfdbc9c01fbab732cc40722d22f3aafbe3:/uip/comp.c diff --git a/uip/comp.c b/uip/comp.c index 0b0ac369..02feefaa 100644 --- a/uip/comp.c +++ b/uip/comp.c @@ -24,6 +24,7 @@ X("nouse", 0, NUSESW) \ X("whatnowproc program", 0, WHATSW) \ X("nowhatnowproc", 0, NWHATSW) \ + X("build", 5, BILDSW) \ X("version", 0, VERSIONSW) \ X("help", 0, HELPSW) \ X("to address", 0, TOSW) \ @@ -69,7 +70,7 @@ static struct swit aqrul[] = { int main (int argc, char **argv) { - int use = NOUSE, nedit = 0, nwhat = 0; + int use = NOUSE, nedit = 0, nwhat = 0, build = 0; int i, in = NOTOK, isdf = 0, out, dat[5], format_len = 0; int outputlinelen = OUTPUTLINELEN; char *cp, *cwd, *maildir, *dfolder = NULL; @@ -82,13 +83,7 @@ main (int argc, char **argv) struct format *fmt; struct stat st; -#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; @@ -125,6 +120,10 @@ main (int argc, char **argv) adios (NULL, "missing argument to %s", argp[-2]); nwhat = 0; continue; + + case BILDSW: + build++; + /* fall through */ case NWHATSW: nwhat++; continue; @@ -256,7 +255,7 @@ main (int argc, char **argv) adios (maildir, "unable to change directory to"); /* read folder and create message structure */ - if (!(mp = folder_read (folder))) + if (!(mp = folder_read (folder, 1))) adios (NULL, "unable to read folder %s", folder); /* check for empty folder */ @@ -267,6 +266,7 @@ main (int argc, char **argv) if (!m_convert (mp, msg)) done (1); seq_setprev (mp); /* set the previous-sequence */ + seq_save (mp); if (mp->numsel > 1) adios (NULL, "only one message at a time!"); @@ -315,12 +315,13 @@ main (int argc, char **argv) } try_it_again: - strncpy (drft, m_draft (dfolder, file, use, &isdf), sizeof(drft)); + strncpy (drft, build ? m_maildir ("draft") + : m_draft (dfolder, file, use, &isdf), sizeof(drft)); /* * Check if we have an existing draft */ - if ((out = open (drft, O_RDONLY)) != NOTOK) { + if (!build && (out = open (drft, O_RDONLY)) != NOTOK) { i = fdcompare (in, out); close (out); @@ -379,7 +380,7 @@ try_it_again: dat[2] = 0; dat[3] = outputlinelen; dat[4] = 0; - fmt_scan(fmt, scanl, i + 1, i, dat); + fmt_scan(fmt, scanl, i + 1, i, dat, NULL); write(out, scanl, strlen(scanl)); free(scanl); } else {