{ "edit [<editor> <switches>]", 0 },
#define REFILEOPT 1
{ "refile [<switches>] +folder", 0 },
-#define BUILDMIMESW 2
- { "mime [<switches>]", 0 },
-#define DISPSW 3
+#define DISPSW 2
{ "display [<switches>]", 0 },
-#define LISTSW 4
+#define LISTSW 3
{ "list [<switches>]", 0 },
-#define SENDSW 5
+#define SENDSW 4
{ "send [<switches>]", 0 },
-#define PUSHSW 6
+#define PUSHSW 5
{ "push [<switches>]", 0 },
-#define QUITSW 7
+#define QUITSW 6
{ "quit [-delete]", 0 },
-#define DELETESW 8
+#define DELETESW 7
{ "delete", 0 },
-#define CDCMDSW 9
+#define CDCMDSW 8
{ "cd [directory]", 0 },
-#define PWDCMDSW 10
+#define PWDCMDSW 9
{ "pwd", 0 },
-#define LSCMDSW 11
+#define LSCMDSW 10
{ "ls", 0 },
-#define ATTACHCMDSW 12
+#define ATTACHCMDSW 11
{ "attach", 0 },
-#define DETACHCMDSW 13
+#define DETACHCMDSW 12
{ "detach [-n]", 2 },
-#define ALISTCMDSW 14
+#define ALISTCMDSW 13
{ "alist [-ln] ", 2 },
{ NULL, 0 }
};
char *, char *, int);
static int sendfile(char **, char *, int);
static void sendit(char *, char **, char *, int);
-static int buildfile(char **, char *);
-static int check_draft(char *);
static int removefile(char *);
static void writelscmd(char *, int, char **);
static void writesomecmd(char *buf, int bufsz, char *cmd, char *trailcmd, char **argp);
advise(NULL, "no alternate message to display");
break;
- case BUILDMIMESW:
- /* Translate MIME composition file */
- buildfile(++argp, drft);
- break;
-
case EDITSW:
/* Call an editor on the draft file */
if (*++argp)
** working directory to relative path names.
** Add the attachment annotation to the draft.
*/
-
if ((f = popen_in_dir(cwd, buf, "r")) != (FILE *)0) {
while (fgets(shell, sizeof (shell), f)
!= NULL) {
#ifdef HAVE_LSTAT
int slinked = 0;
-#if 0
- int oumask; /* PJS: for setting permissions on symlinks. */
-#endif
#endif /* HAVE_LSTAT */
/* Was there a previous edit session? */
unlink(linkpath);
#ifdef HAVE_LSTAT
if (link(altpath, linkpath) == NOTOK) {
-#if 0
- /* I don't think permission on symlinks matters /JLR */
- /* PJS: else symlinks are world 'r' */
- oumask = umask(0044);
-#endif
symlink(altpath, linkpath);
-#if 0
- umask(oumask); /* PJS: else symlinks are world 'r' */
-#endif
slinked = 1;
} else {
slinked = 0;
default:
if ((status = pidwait(pid, NOTOK))) {
-#ifdef ATTVIBUG
- if ((cp = mhbasename(*ed)) && strcmp(cp, "vi") == 0 &&
- (status & 0x00ff) == 0)
- status = 0;
- else {
-#endif
if (((status & 0xff00) != 0xff00)
&& (!reedit || (status & 0x00ff))) {
if (!use && (status & 0xff00) && (rename(file, cp = m_backup (file)) != NOTOK)) {
}
status = -2; /* maybe "reedit ? -2 : -1"? */
break;
-#ifdef ATTVIBUG
- }
-#endif
}
reedit++;
int i, vecp;
char *cp, *sp, *vec[MAXARGS];
- /* Translate MIME composition file, if necessary */
- if ((cp = context_find("automimeproc")) && (strcmp(cp, "1")==0) &&
- !getenv("NOMHNPROC") && check_draft(file) &&
- (buildfile(NULL, file) == NOTOK))
- return 0;
-
- /* For backwards compatibility */
- if ((cp = context_find("automhnproc")) && !getenv("NOMHNPROC")
- && check_draft(file) && (i = editfile(&cp, NULL,
- file, NOUSE, NULL, NULL, NULL, 0)))
- return 0;
-
/*
** If the sendproc is the nmh command `send', then we call
** those routines directly rather than exec'ing the command.
}
-/*
-** Translate MIME composition file (call buildmimeproc)
-*/
-
-static int
-buildfile(char **argp, char *file)
-{
- int i;
- char **args, *ed;
-
- ed = buildmimeproc;
-
- /* allocate space for arguments */
- i = 0;
- if (argp) {
- while (argp[i])
- i++;
- }
- args = (char **) mh_xmalloc((i + 2) * sizeof(char *));
-
- /*
- ** For backward compatibility, we need to add -build
- ** if we are using mhn as buildmimeproc
- */
- i = 0;
- if (strcmp(mhbasename(ed), "mhn") == 0)
- args[i++] = "-build";
-
- /* copy any other arguments */
- while (argp && *argp)
- args[i++] = *argp++;
- args[i] = NULL;
-
- i = editfile(&ed, args, file, NOUSE, NULL, NULL, NULL, 0);
- free(args);
-
- return (i ? NOTOK : OK);
-}
-
-
-/*
-** Check if draft is a mhbuild composition file
-*/
-
-static int
-check_draft(char *msgnam)
-{
- int state;
- char buf[BUFSIZ], name[NAMESZ];
- FILE *fp;
-
- if ((fp = fopen(msgnam, "r")) == NULL)
- return 0;
- for (state = FLD;;)
- switch (state = m_getfld(state, name, buf, sizeof(buf), fp)) {
- case FLD:
- case FLDPLUS:
- case FLDEOF:
- /*
- ** If draft already contains any of the
- ** Content-XXX fields, then assume it already
- ** been converted.
- */
- if (uprf(name, XXX_FIELD_PRF)) {
- fclose(fp);
- return 0;
- }
- while (state == FLDPLUS)
- state = m_getfld(state, name, buf,
- sizeof(buf), fp);
- break;
-
- case BODY:
- do {
- char *bp;
-
- for (bp = buf; *bp; bp++)
- if (*bp != ' ' && *bp != '\t' &&
- *bp != '\n') {
- fclose(fp);
- return 1;
- }
-
- state = m_getfld(state, name, buf,
- sizeof(buf), fp);
- } while (state == BODY);
- /* and fall... */
-
- default:
- fclose(fp);
- return 0;
- }
-}
-
-
static struct swit sendswitches[] = {
#define ALIASW 0
{ "alias aliasfile", 0 },
{ "forward", 0 },
#define NFORWSW 7
{ "noforward", 0 },
-#define MIMESW 8
- { "mime", 0 },
-#define NMIMESW 9
- { "nomime", 0 },
-#define MSGDSW 10
- { "msgid", 0 },
-#define NMSGDSW 11
- { "nomsgid", 0 },
-#define SPSHSW 12
+#define SPSHSW 8
{ "push", 0 },
-#define NSPSHSW 13
+#define NSPSHSW 9
{ "nopush", 0 },
-#define UNIQSW 14
- { "unique", -6 },
-#define NUNIQSW 15
- { "nounique", -8 },
-#define VERBSW 16
+#define VERBSW 10
{ "verbose", 0 },
-#define NVERBSW 17
+#define NVERBSW 11
{ "noverbose", 0 },
-#define WATCSW 18
+#define WATCSW 12
{ "watch", 0 },
-#define NWATCSW 19
+#define NWATCSW 13
{ "nowatch", 0 },
-#define WIDTHSW 20
+#define WIDTHSW 14
{ "width columns", 0 },
-#define SVERSIONSW 21
+#define SVERSIONSW 15
{ "version", 0 },
-#define SHELPSW 22
+#define SHELPSW 16
{ "help", 0 },
-#define BITSTUFFSW 23
- { "dashstuffing", -12 },
-#define NBITSTUFFSW 24
- { "nodashstuffing", -14 },
-#define MAILSW 25
- { "mail", -4 },
-#define SAMLSW 26
- { "saml", -4 },
-#define SSNDSW 27
- { "send", -4 },
-#define SOMLSW 28
- { "soml", -4 },
-#define CLIESW 29
- { "client host", -6 },
-#define SERVSW 30
- { "server host", 6 },
-#define SNOOPSW 31
- { "snoop", -5 },
-#define PORTSW 32
- { "port server-port-name/number", 4 },
{ NULL, 0 }
};
extern int forwsw;
extern int inplace;
extern int pushsw;
-extern int unique;
extern int verbsw;
extern char *altmsg; /* .. */
#ifndef lint
int distsw = 0;
#endif
-#ifdef UCI
- FILE *fp;
-#endif
/*
** Make sure these are defined. In particular, we need
debugsw = 0;
forwsw = 1;
inplace = 1;
- unique = 0;
altmsg = NULL;
annotext = NULL;
pushed = 0;
continue;
- case UNIQSW:
- unique++;
- continue;
- case NUNIQSW:
- unique = 0;
- continue;
case FORWSW:
forwsw++;
continue;
case NFILTSW:
case FRMTSW:
case NFRMTSW:
- case BITSTUFFSW:
- case NBITSTUFFSW:
- case MIMESW:
- case NMIMESW:
- case MSGDSW:
- case NMSGDSW:
case WATCSW:
case NWATCSW:
- case MAILSW:
- case SAMLSW:
- case SSNDSW:
- case SOMLSW:
- case SNOOPSW:
vec[vecp++] = --cp;
continue;
case ALIASW:
case FILTSW:
case WIDTHSW:
- case CLIESW:
- case SERVSW:
- case PORTSW:
vec[vecp++] = --cp;
if (!(cp = *argp++) || *cp == '-') {
advise(NULL, "missing argument to %s",
dp = getcpy(cp);
for (ap = brkstring(dp, " ", "\n"); ap && *ap; ap++) {
vec[vecp++] = "-alias";
- vec[vecp++] = *ap;
+ vec[vecp++] = getcpy(etcpath(*ap));
}
}
- if ((cp = getenv("SIGNATURE")) == NULL || *cp == 0)
+ if (!(cp = getenv("SIGNATURE")) || !*cp)
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;