X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fwhatnowsbr.c;h=d23d141d88f967a722a06284023ab68558127268;hb=a66c30d557c09799db7cd166ba5fa2a97dbafbb3;hp=a7194319bda6ef44cbba338f548961807471778d;hpb=e98f7f60095bceba1f32e448c421b3e862b728aa;p=mmh diff --git a/uip/whatnowsbr.c b/uip/whatnowsbr.c index a719431..d23d141 100644 --- a/uip/whatnowsbr.c +++ b/uip/whatnowsbr.c @@ -2,8 +2,6 @@ /* * whatnowsbr.c -- the WhatNow shell * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -65,6 +63,8 @@ static struct swit whatnowswitches[] = { { "help", 0 }, #define ATTACHSW 8 { "attach header-field-name", 0 }, +#define NOATTACHSW 9 + { "noattach", 0 }, { NULL, 0 } }; @@ -140,7 +140,7 @@ WhatNow (int argc, char **argv) char buf[BUFSIZ], prompt[BUFSIZ]; char **argp, **arguments; struct stat st; - char *attach = (char *)0; /* attachment header field name */ + char *attach = NMH_ATTACH_HEADER;/* attachment header field name */ char cwd[MAXPATHLEN + 1]; /* current working directory */ char file[MAXPATHLEN + 1]; /* file name buffer */ char shell[MAXPATHLEN + 1]; /* shell response buffer */ @@ -215,11 +215,13 @@ WhatNow (int argc, char **argv) continue; case ATTACHSW: - if (attach != (char *)0) - adios(NULL, "only one attachment header field name at a time!"); if (!(attach = *argp++) || *attach == '-') adios (NULL, "missing argument to %s", argp[-2]); continue; + + case NOATTACHSW: + attach = NULL; + continue; } } if (drft) @@ -411,6 +413,11 @@ WhatNow (int argc, char **argv) break; } + if (*(argp+1) == (char *)0) { + advise((char *)0, "attach command requires file argument(s)."); + break; + } + /* * Build a command line that causes the user's shell to list the file name * arguments. This handles and wildcard expansion, tilde expansion, etc. @@ -634,7 +641,7 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, struct stat st; #ifdef HAVE_LSTAT - int slinked; + int slinked = 0; #if 0 int oumask; /* PJS: for setting permissions on symlinks. */ #endif @@ -693,7 +700,7 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, context_save (); /* save the context file */ fflush (stdout); - switch (pid = vfork ()) { + switch (pid = vfork()) { case NOTOK: advise ("fork", "unable to"); status = NOTOK; @@ -723,13 +730,6 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, default: if ((status = pidwait (pid, NOTOK))) { -#ifdef ATTVIBUG - if ((cp = r1bindex (*ed, '/')) - && strcmp (cp, "vi") == 0 - && (status & 0x00ff) == 0) - status = 0; - else { -#endif if (((status & 0xff00) != 0xff00) && (!reedit || (status & 0x00ff))) { if (!use && (status & 0xff00) && @@ -741,9 +741,6 @@ editfile (char **ed, char **arg, char *file, int use, struct msgs *mp, } status = -2; /* maybe "reedit ? -2 : -1"? */ break; -#ifdef ATTVIBUG - } -#endif } reedit++; @@ -980,6 +977,12 @@ check_draft (char *msgnam) # define SASLminc(a) 0 #endif /* CYRUS_SASL */ +#ifndef TLS_SUPPORT +# define TLSminc(a) (a) +#else /* TLS_SUPPORT */ +# define TLSminc(a) 0 +#endif /* TLS_SUPPORT */ + static struct swit sendswitches[] = { #define ALIASW 0 { "alias aliasfile", 0 }, @@ -1044,7 +1047,7 @@ static struct swit sendswitches[] = { #define CLIESW 30 { "client host", -6 }, #define SERVSW 31 - { "server host", -6 }, + { "server host", 6 }, #define SNOOPSW 32 { "snoop", -5 }, #define SDRFSW 33 @@ -1055,14 +1058,26 @@ static struct swit sendswitches[] = { { "nodraftfolder", -3 }, #define SASLSW 36 { "sasl", SASLminc(-4) }, -#define SASLMECHSW 37 +#define NOSASLSW 37 + { "nosasl", SASLminc(-6) }, +#define SASLMXSSFSW 38 + { "saslmaxssf", SASLminc(-10) }, +#define SASLMECHSW 39 { "saslmech", SASLminc(-5) }, -#define USERSW 38 +#define USERSW 40 { "user", SASLminc(-4) }, -#define SNDATTACHSW 39 +#define SNDATTACHSW 41 { "attach file", 6 }, -#define SNDATTACHFORMAT 40 +#define SNDNOATTACHSW 42 + { "noattach", 0 }, +#define SNDATTACHFORMAT 43 { "attachformat", 7 }, +#define PORTSW 44 + { "port server-port-name/number", 4 }, +#define TLSSW 45 + { "tls", TLSminc(-3) }, +#define NTLSSW 46 + { "notls", TLSminc(-5) }, { NULL, 0 } }; @@ -1087,16 +1102,13 @@ sendit (char *sp, char **arg, char *file, int pushed) char *cp, buf[BUFSIZ], **argp; char **arguments, *vec[MAXARGS]; struct stat st; - char *attach = (char *)0; /* attachment header field name */ - int attachformat = 0; /* mhbuild format specifier for + char *attach = NMH_ATTACH_HEADER;/* attachment header field name */ + int attachformat = 1; /* mhbuild format specifier for attachments */ #ifndef lint int distsw = 0; #endif -#ifdef UCI - FILE *fp; -#endif /* * Make sure these are defined. In particular, we need @@ -1144,6 +1156,16 @@ sendit (char *sp, char **arg, char *file, int pushed) vec[vecp++] = "-library"; vec[vecp++] = getcpy (m_maildir ("")); + if ((cp = context_find ("fileproc"))) { + vec[vecp++] = "-fileproc"; + vec[vecp++] = cp; + } + + if ((cp = context_find ("mhlproc"))) { + vec[vecp++] = "-mhlproc"; + vec[vecp++] = cp; + } + while ((cp = *argp++)) { if (*cp == '-') { switch (smatch (++cp, sendswitches)) { @@ -1217,6 +1239,9 @@ sendit (char *sp, char **arg, char *file, int pushed) case SOMLSW: case SNOOPSW: case SASLSW: + case NOSASLSW: + case TLSSW: + case NTLSSW: vec[vecp++] = --cp; continue; @@ -1225,8 +1250,10 @@ sendit (char *sp, char **arg, char *file, int pushed) case WIDTHSW: case CLIESW: case SERVSW: + case SASLMXSSFSW: case SASLMECHSW: case USERSW: + case PORTSW: vec[vecp++] = --cp; if (!(cp = *argp++) || *cp == '-') { advise (NULL, "missing argument to %s", argp[-2]); @@ -1250,6 +1277,9 @@ sendit (char *sp, char **arg, char *file, int pushed) return; } continue; + case SNDNOATTACHSW: + attach = NULL; + continue; case SNDATTACHFORMAT: if (! *argp || **argp == '-') @@ -1285,18 +1315,6 @@ sendit (char *sp, char **arg, char *file, int pushed) if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0) if ((cp = context_find ("signature")) && *cp) m_putenv ("SIGNATURE", cp); -#ifdef UCI - else { - snprintf (buf, sizeof(buf), "%s/.signature", mypath); - if ((fp = fopen (buf, "r")) != NULL - && fgets (buf, sizeof(buf), fp) != NULL) { - fclose (fp); - if (cp = strchr (buf, '\n')) - *cp = 0; - m_putenv ("SIGNATURE", buf); - } - } -#endif /* UCI */ if ((annotext = getenv ("mhannotate")) == NULL || *annotext == 0) annotext = NULL; @@ -1312,7 +1330,8 @@ sendit (char *sp, char **arg, char *file, int pushed) #endif /* not lint */ && altmsg) { vec[vecp++] = "-dist"; - distfile = getcpy (m_scratch (altmsg, invo_name)); + distfile = getcpy (m_mktemp2(altmsg, invo_name, NULL, NULL)); + unlink(distfile); if (link (altmsg, distfile) == NOTOK) adios (distfile, "unable to link %s to", altmsg); } else { @@ -1348,7 +1367,7 @@ whomfile (char **arg, char *file) context_save (); /* save the context file */ fflush (stdout); - switch (pid = vfork ()) { + switch (pid = vfork()) { case NOTOK: advise ("fork", "unable to"); return 1;