X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/9cf9f118998a7635485e13863d1bc16c1486bb05..15fde7dd84cc29c054857e5d8a7fdd4a8db10a97:/uip/comp.c diff --git a/uip/comp.c b/uip/comp.c index a7300c34..ae87209f 100644 --- a/uip/comp.c +++ b/uip/comp.c @@ -1,6 +1,4 @@ - -/* - * comp.c -- compose a message +/* comp.c -- compose a message * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -10,6 +8,7 @@ #include #include #include +#include "../sbr/m_maildir.h" #include #define COMP_SWITCHES \ @@ -31,7 +30,7 @@ X("cc address", 0, CCSW) \ X("from address", 0, FROMSW) \ X("fcc mailbox", 0, FCCSW) \ - X("width colums", 0, WIDTHSW) \ + X("width columns", 0, WIDTHSW) \ X("subject text", 0, SUBJECTSW) \ #define X(sw, minchars, id) id, @@ -83,11 +82,7 @@ main (int argc, char **argv) struct format *fmt; struct stat st; - setlocale(LC_ALL, ""); - 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; @@ -127,7 +122,7 @@ main (int argc, char **argv) case BILDSW: build++; - /* fall through */ + /* FALLTHRU */ case NWHATSW: nwhat++; continue; @@ -196,8 +191,7 @@ main (int argc, char **argv) if (*cp == '@') cp = dp = path(cp + 1, TSUBCWF); fcc = addlist(fcc, cp); - if (dp) - free(dp); + mh_xfree(dp); continue; case WIDTHSW: @@ -227,7 +221,7 @@ main (int argc, char **argv) } } - cwd = getcpy (pwd ()); + cwd = mh_xstrdup(pwd ()); if (!context_find ("path")) free (path ("./", TFOLDER)); @@ -275,7 +269,7 @@ main (int argc, char **argv) if (mp->numsel > 1) adios (NULL, "only one message at a time!"); - if ((in = open (form = getcpy (m_name (mp->lowsel)), O_RDONLY)) == NOTOK) + if ((in = open (form = mh_xstrdup(m_name (mp->lowsel)), O_RDONLY)) == NOTOK) adios (form, "unable to open message"); } else { struct comp *cptr; @@ -341,7 +335,8 @@ try_it_again: adios (drft, "unable to stat"); printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size); for (i = LISTDSW; i != YESW;) { - if (!(argp = getans ("\nDisposition? ", isdf ? aqrunl : aqrul))) + if (!(argp = read_switch_multiword ("\nDisposition? ", + isdf ? aqrunl : aqrul))) done (1); switch (i = smatch (*argp, isdf ? aqrunl : aqrul)) { case NOSW: @@ -363,7 +358,7 @@ try_it_again: i = YESW; break; default: - advise (NULL, "say what?"); + inform("say what?"); break; } } @@ -375,18 +370,21 @@ try_it_again: if ((out = creat (drft, m_gmprot ())) == NOTOK) adios (drft, "unable to create"); if (cp) { - char *scanl; + charstring_t scanl; i = format_len + 1024; - scanl = mh_xmalloc((size_t) i + 2); + scanl = charstring_create (i + 2); dat[0] = 0; dat[1] = 0; dat[2] = 0; dat[3] = outputlinelen; dat[4] = 0; - fmt_scan(fmt, scanl, i + 1, i, dat, NULL); - write(out, scanl, strlen(scanl)); - free(scanl); + fmt_scan(fmt, scanl, i, dat, NULL); + if (write(out, charstring_buffer (scanl), + charstring_bytes (scanl)) < 0) { + advise (drft, "write"); + } + charstring_free(scanl); } else { cpydata (in, out, form, drft); close (in); @@ -398,7 +396,7 @@ edit_it: if (nwhat) done (0); - what_now (ed, nedit, use, drft, NULL, 0, NULLMP, NULL, 0, cwd, 0); + what_now (ed, nedit, use, drft, NULL, 0, NULL, NULL, 0, cwd, 0); done (1); return 1; }