X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/4eb3c86131807ffa6d36047df51ddad3b5d67a48..843bc850b2b7732c8969b9ad25e922fb09eaf4b3:/uip/whatnowsbr.c diff --git a/uip/whatnowsbr.c b/uip/whatnowsbr.c index 68a56ba3..7f28f34a 100644 --- a/uip/whatnowsbr.c +++ b/uip/whatnowsbr.c @@ -38,14 +38,21 @@ */ #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/closefds.h" #include "sbr/copyip.h" #include "sbr/getcpy.h" #include "sbr/m_draft.h" @@ -152,7 +159,6 @@ WhatNow (int argc, char **argv) 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 */ @@ -234,7 +240,7 @@ 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); @@ -246,7 +252,7 @@ WhatNow (int argc, char **argv) /* 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 (;;) { @@ -277,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; @@ -446,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); @@ -659,7 +667,7 @@ popen_in_dir(const char *dir, const char *cmd, const char *type) * EDIT */ -static bool reedit; /* have we been here before? */ +static bool reedit; /* have we been here before? */ static char *edsave = NULL; /* the editor we used previously */ @@ -694,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) @@ -984,7 +992,6 @@ extern int debugsw; /* from sendsbr.c */ extern bool forwsw; extern int inplace; extern bool pushsw; -extern int splitsw; extern bool unique; extern bool verbsw; @@ -1095,13 +1102,6 @@ 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 = true; continue; @@ -1260,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); }