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,
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;
case BILDSW:
build++;
- /* fall through */
+ /* FALLTHRU */
case NWHATSW:
nwhat++;
continue;
if (*cp == '@')
cp = dp = path(cp + 1, TSUBCWF);
fcc = addlist(fcc, cp);
- if (dp)
- free(dp);
+ mh_xfree(dp);
continue;
case WIDTHSW:
}
}
- cwd = getcpy (pwd ());
+ cwd = mh_xstrdup(pwd ());
if (!context_find ("path"))
free (path ("./", TFOLDER));
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;
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:
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);