X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0509728c8a506f287fa3483d8e8ffaf8fb66d41d..ff30f98e6a1ea1de5ed4ea69cc3552440ee7f26c:/uip/send.c?ds=sidebyside diff --git a/uip/send.c b/uip/send.c index 297b8f04..f29bb45f 100644 --- a/uip/send.c +++ b/uip/send.c @@ -5,14 +5,39 @@ * complete copyright information. */ -#include +#include "h/mh.h" +#include "sendsbr.h" +#include "sbr/m_name.h" +#include "sbr/getarguments.h" +#include "sbr/read_switch_multiword.h" +#include "sbr/concat.h" +#include "sbr/seq_setprev.h" +#include "sbr/seq_save.h" +#include "sbr/showfile.h" +#include "sbr/smatch.h" +#include "sbr/closefds.h" +#include "sbr/cpydata.h" +#include "sbr/m_draft.h" +#include "sbr/m_convert.h" +#include "sbr/folder_read.h" +#include "sbr/context_save.h" +#include "sbr/context_find.h" +#include "sbr/brkstring.h" +#include "sbr/ambigsw.h" +#include "sbr/push.h" +#include "sbr/path.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/arglist.h" +#include "sbr/error.h" #include -#include +#include "h/done.h" +#include "h/utils.h" #ifdef OAUTH_SUPPORT -# include +#include "h/oauth.h" #endif -#include "../sbr/m_maildir.h" -#include "../sbr/m_mktemp.h" +#include "sbr/m_maildir.h" +#include "sbr/m_mktemp.h" #ifndef CYRUS_SASL # define SASLminc(a) (a) @@ -97,12 +122,12 @@ DEFINE_SWITCH_ARRAY(USE, anyl); #undef X extern int debugsw; /* from sendsbr.c */ -extern int forwsw; +extern bool forwsw; extern int inplace; -extern int pushsw; +extern bool pushsw; extern int splitsw; -extern int unique; -extern int verbsw; +extern bool unique; +extern bool verbsw; extern char *altmsg; /* .. */ extern char *annotext; @@ -112,8 +137,8 @@ extern char *distfile; int main (int argc, char **argv) { - int msgp = 0, distsw = 0, vecp; - int isdf = 0, mime = 0; + int msgp = 0, vecp; + int isdf = 0; int msgnum, status; char *cp, *dfolder = NULL, *maildir = NULL; char buf[BUFSIZ], **ap, **argp, **arguments, *program; @@ -121,10 +146,9 @@ main (int argc, char **argv) const char *user = NULL, *saslmech = NULL; struct msgs *mp; struct stat st; - int snoop = 0; char *auth_svc = NULL; - if (nmh_init(argv[0], 1)) { return 1; } + if (nmh_init(argv[0], true, true)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -132,7 +156,7 @@ main (int argc, char **argv) vec = argsplit(postproc, &program, &vecp); vec[vecp++] = "-library"; - vec[vecp++] = getcpy (m_maildir ("")); + vec[vecp++] = mh_xstrdup(m_maildir("")); if ((cp = context_find ("fileproc"))) { vec[vecp++] = "-fileproc"; @@ -157,7 +181,7 @@ main (int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown\n", cp); + die("-%s unknown\n", cp); case HELPSW: snprintf (buf, sizeof(buf), "%s [file] [switches]", invo_name); @@ -173,15 +197,15 @@ main (int argc, char **argv) case DFOLDSW: if (dfolder) - adios (NULL, "only one draft folder at a time!"); + die("only one draft folder at a time!"); if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp, *cp != '@' ? TFOLDER : TSUBCWF); continue; case DMSGSW: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); msgs[msgp++] = cp; continue; case NDFLDSW: @@ -190,51 +214,48 @@ main (int argc, char **argv) continue; case PUSHSW: - pushsw++; + pushsw = true; continue; case NPUSHSW: - pushsw = 0; + pushsw = false; continue; case SPLITSW: if (!(cp = *argp++) || sscanf (cp, "%d", &splitsw) != 1) - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case UNIQSW: - unique++; + unique = true; continue; case NUNIQSW: - unique = 0; + unique = false; continue; case FORWSW: - forwsw++; + forwsw = true; continue; case NFORWSW: - forwsw = 0; + forwsw = false; continue; case VERBSW: - verbsw++; + verbsw = true; vec[vecp++] = --cp; continue; case NVERBSW: - verbsw = 0; + verbsw = false; vec[vecp++] = --cp; continue; case MIMESW: - mime++; vec[vecp++] = --cp; continue; case NMIMESW: - mime = 0; vec[vecp++] = --cp; continue; case SNOOPSW: - snoop++; vec[vecp++] = --cp; continue; @@ -263,7 +284,7 @@ main (int argc, char **argv) case USERSW: vec[vecp++] = --cp; if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); vec[vecp++] = cp; user = cp; continue; @@ -271,15 +292,15 @@ main (int argc, char **argv) case AUTHSERVICESW: #ifdef OAUTH_SUPPORT if (!(auth_svc = *argp++) || *auth_svc == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); #else - adios (NULL, "not built with OAuth support"); + die("not built with OAuth support"); #endif continue; case SASLMECHSW: if (!(saslmech = *argp) || *saslmech == '-') - adios (NULL, "missing argument to %s", argp[-1]); + die("missing argument to %s", argp[-1]); /* FALLTHRU */ case ALIASW: @@ -293,7 +314,7 @@ main (int argc, char **argv) case MESSAGEIDSW: vec[vecp++] = --cp; if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); vec[vecp++] = cp; continue; } @@ -316,7 +337,7 @@ main (int argc, char **argv) if (dfolder == NULL) { if (msgp == 0) { - msgs[msgp++] = getcpy (m_draft (NULL, NULL, 1, &isdf)); + msgs[msgp++] = mh_xstrdup(m_draft(NULL, NULL, 1, &isdf)); if (stat (msgs[0], &st) == NOTOK) adios (msgs[0], "unable to stat draft file"); cp = concat ("Use \"", msgs[0], "\"? ", NULL); @@ -338,7 +359,7 @@ main (int argc, char **argv) } } else { for (msgnum = 0; msgnum < msgp; msgnum++) - msgs[msgnum] = getcpy (m_maildir (msgs[msgnum])); + msgs[msgnum] = mh_xstrdup(m_maildir(msgs[msgnum])); } } else { if (!context_find ("path")) @@ -353,11 +374,11 @@ main (int argc, char **argv) /* read folder and create message structure */ if (!(mp = folder_read (dfolder, 1))) - adios (NULL, "unable to read folder %s", dfolder); + die("unable to read folder %s", dfolder); /* check for empty folder */ if (mp->nummsg == 0) - adios (NULL, "no messages in %s", dfolder); + die("no messages in %s", dfolder); /* parse all the message ranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < msgp; msgnum++) @@ -397,12 +418,11 @@ go_to_it: if ((cp = getenv ("mhdist")) && *cp - && (distsw = atoi (cp)) + && atoi(cp) && altmsg) { vec[vecp++] = "-dist"; if ((cp = m_mktemp2(altmsg, invo_name, NULL, NULL)) == NULL) { - adios(NULL, "unable to create temporary file in %s", - get_temp_dir()); + die("unable to create temporary file"); } distfile = mh_xstrdup(cp); (void) m_unlink(distfile); @@ -416,7 +436,7 @@ go_to_it: adios (distfile, "unable to link %s to", altmsg); free (distfile); if ((cp = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) { - adios(NULL, "unable to create temporary file in %s", + die("unable to create temporary file in %s", get_temp_dir()); } distfile = mh_xstrdup(cp); @@ -441,11 +461,11 @@ go_to_it: #ifdef OAUTH_SUPPORT if (auth_svc == NULL) { if (saslmech && ! strcasecmp(saslmech, "xoauth2")) { - adios (NULL, "must specify -authservice with -saslmech xoauth2"); + die("must specify -authservice with -saslmech xoauth2"); } } else { if (user == NULL) { - adios (NULL, "must specify -user with -saslmech xoauth2"); + die("must specify -user with -saslmech xoauth2"); } } #else