X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/1ca8f21e0edfe448b71ac86de1b0cd987547a002..843bc850b2b7732c8969b9ad25e922fb09eaf4b3:/uip/whatnowsbr.c diff --git a/uip/whatnowsbr.c b/uip/whatnowsbr.c index 50001f17..7f28f34a 100644 --- a/uip/whatnowsbr.c +++ b/uip/whatnowsbr.c @@ -37,12 +37,42 @@ * by attachment number. */ -#include +#include "h/mh.h" +#include "whatnowsbr.h" +#include "sendsbr.h" +#include "annosbr.h" +#include "sbr/m_getfld.h" +#include "sbr/getarguments.h" +#ifdef READLINE_SUPPORT +#include "sbr/read_switch_multiword_via_readline.h" +#else /* ! READLINE_SUPPORT */ +#include "sbr/read_switch_multiword.h" +#endif /* READLINE_SUPPORT */ +#include "sbr/concat.h" +#include "sbr/showfile.h" +#include "sbr/smatch.h" +#include "sbr/r1bindex.h" +#include "sbr/refile.h" +#include "sbr/copyip.h" +#include "sbr/getcpy.h" +#include "sbr/m_draft.h" +#include "sbr/m_backup.h" +#include "sbr/geteditor.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 +#include "h/mime.h" +#include "h/utils.h" #ifdef OAUTH_SUPPORT -# include +#include "h/oauth.h" #endif #include "h/done.h" #include "sbr/m_maildir.h" @@ -120,14 +150,15 @@ static int copyf (char *, char *); int WhatNow (int argc, char **argv) { - int isdf = 0, nedit = 0, use = 0, atfile = 1; + int isdf = 0; + bool nedit = false; + int use = 0, atfile = 1; char *cp, *dfolder = NULL, *dmsg = NULL; char *ed = NULL, *drft = NULL, *msgnam = NULL; char buf[BUFSIZ]; char **argp, **arguments; struct stat st; char cwd[PATH_MAX + 1]; /* current working directory */ - char file[PATH_MAX + 1]; /* file name buffer */ char shell[PATH_MAX + 1]; /* shell response buffer */ FILE *f; /* read pointer for bgnd proc */ char *l; /* set on -l to alist command */ @@ -186,10 +217,10 @@ WhatNow (int argc, char **argv) case EDITRSW: if (!(ed = *argp++) || *ed == '-') die("missing argument to %s", argp[-2]); - nedit = 0; + nedit = false; continue; case NEDITSW: - nedit++; + nedit = true; continue; case PRMPTSW: @@ -209,19 +240,19 @@ WhatNow (int argc, char **argv) msgnam = (cp = getenv ("mhaltmsg")) && *cp ? mh_xstrdup(cp) : NULL; if ((cp = getenv ("mhatfile")) && *cp) - atfile = atoi(cp); + atfile = atoi(cp); if ((cp = getenv ("mhuse")) && *cp) use = atoi (cp); if (ed == NULL && ((ed = getenv ("mheditor")) == NULL || *ed == 0)) { ed = NULL; - nedit++; + nedit = true; } /* start editing the draft, unless -noedit was given */ if (!nedit && editfile (&ed, NULL, drft, use, NULL, msgnam, - NULL, 1, atfile) < 0) + NULL, 1, atfile) < 0) done (1); for (;;) { @@ -252,7 +283,7 @@ WhatNow (int argc, char **argv) if (*++argp) ed = *argp++; if (editfile (&ed, argp, drft, NOUSE, NULL, msgnam, - NULL, 1, atfile) == NOTOK) + NULL, 1, atfile) == NOTOK) done (1); break; @@ -421,13 +452,15 @@ WhatNow (int argc, char **argv) */ if ((f = popen_in_dir(cwd, buf, "r")) != NULL) { + char file[2 * PATH_MAX + 2]; /* file name buffer */ + while (fgets(shell, sizeof (shell), f) != NULL) { char *ctype; trim_suffix_c(shell, '\n'); if (*shell == '/') { - strncpy(file, shell, sizeof(file)); + strncpy(file, shell, sizeof(file)); file[sizeof(file) - 1] = '\0'; } else { snprintf(file, sizeof(file), "%s/%s", cwd, shell); @@ -634,7 +667,7 @@ popen_in_dir(const char *dir, const char *cmd, const char *type) * EDIT */ -static int reedit = 0; /* have we been here before? */ +static bool reedit; /* have we been here before? */ static char *edsave = NULL; /* the editor we used previously */ @@ -669,7 +702,7 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, if (altmsg) { if (mp == NULL || *altmsg == '/' || cwd == NULL) - strncpy (altpath, altmsg, sizeof(altpath)); + strncpy (altpath, altmsg, sizeof(altpath) - 1); else snprintf (altpath, sizeof(altpath), "%s/%s", mp->foldpath, altmsg); if (cwd == NULL) @@ -739,7 +772,7 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, break; } - reedit++; + reedit = true; if (altmsg && mp && !is_readonly(mp) @@ -956,12 +989,11 @@ DEFINE_SWITCH_ARRAY(SEND, sendswitches); extern int debugsw; /* from sendsbr.c */ -extern int forwsw; +extern bool forwsw; extern int inplace; -extern int pushsw; -extern int splitsw; -extern int unique; -extern int verbsw; +extern bool pushsw; +extern bool unique; +extern bool verbsw; extern char *altmsg; /* .. */ extern char *annotext; @@ -976,7 +1008,6 @@ sendit (char *sp, char **arg, char *file, int pushed) char **arguments, *savearg[MAXARGS], **vec; const char *user = NULL, *saslmech = NULL; char *auth_svc = NULL; - int snoop = 0; struct stat st; /* @@ -1013,9 +1044,9 @@ sendit (char *sp, char **arg, char *file, int pushed) argp = arguments; debugsw = 0; - forwsw = 1; + forwsw = true; inplace = 1; - unique = 0; + unique = false; altmsg = NULL; annotext = NULL; @@ -1071,32 +1102,25 @@ sendit (char *sp, char **arg, char *file, int pushed) pushed = 0; continue; - case SPLITSW: - if (!(cp = *argp++) || sscanf (cp, "%d", &splitsw) != 1) { - inform("missing argument to %s", argp[-2]); - return; - } - 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; @@ -1125,7 +1149,6 @@ sendit (char *sp, char **arg, char *file, int pushed) continue; case SNOOPSW: - snoop++; vec[vecp++] = --cp; continue; @@ -1237,8 +1260,6 @@ sendit (char *sp, char **arg, char *file, int pushed) if ((pushsw = pushed)) push (); - closefds (3); - if (sendsbr (vec, vecp, program, file, &st, 1, auth_svc) == OK) done (0); }