char buf[BUFSIZ], prompt[BUFSIZ];
char **argp, **arguments;
struct stat st;
- char *attach = (char *)0; /* attachment header field name */
+ char *attach = NULL; /* 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 */
** Get the initial current working directory.
*/
- if (getcwd(cwd, sizeof (cwd)) == (char *)0) {
+ if (getcwd(cwd, sizeof (cwd)) == NULL) {
adios("getcwd", "could not get working directory");
}
continue;
case ATTACHSW:
- if (attach != (char *)0)
+ if (attach != NULL)
adios(NULL, "only one attachment header field name at a time!");
if (!(attach = *argp++) || *attach == '-')
adios(NULL, "missing argument to %s",
** the absolute path.
*/
- if (*(argp+1) == (char *)0) {
+ if (*(argp+1) == NULL) {
sprintf(buf, "$SHELL -c \"cd;pwd\"");
} else {
writesomecmd(buf, BUFSIZ, "cd", "pwd", argp);
if ((f = popen_in_dir(cwd, buf, "r")) != (FILE *)0) {
fgets(cwd, sizeof (cwd), f);
- if (strchr(cwd, '\n') != (char *)0)
+ if (strchr(cwd, '\n') != NULL)
*strchr(cwd, '\n') = '\0';
pclose(f);
** -n numbers listing
*/
- if (attach == (char *)0) {
- advise((char *)0, "can't list because no header field name was given.");
+ if (attach == NULL) {
+ advise(NULL, "can't list because no header field name was given.");
break;
}
- l = (char *)0;
+ l = NULL;
n = 0;
- while (*++argp != (char *)0) {
+ while (*++argp != NULL) {
if (strcmp(*argp, "-l") == 0)
l = "/";
}
if (n == -1)
- advise((char *)0, "usage is alist [-ln].");
+ advise(NULL, "usage is alist [-ln].");
else
annolist(drft, attach, l, n);
** Attach files to current draft.
*/
- if (attach == (char *)0) {
- advise((char *)0, "can't attach because no header field name was given.");
+ if (attach == NULL) {
+ advise(NULL, "can't attach because no header field name was given.");
break;
}
- if (*(argp+1) == (char *)0) {
- advise((char *)0, "attach command requires file argument(s).");
+ if (*(argp+1) == NULL) {
+ advise(NULL, "attach command requires file argument(s).");
break;
}
if ((f = popen_in_dir(cwd, buf, "r")) != (FILE *)0) {
while (fgets(shell, sizeof (shell), f)
- != (char *)0) {
+ != NULL) {
*(strchr(shell, '\n')) = '\0';
if (*shell == '/')
** Detach files from current draft.
*/
- if (attach == (char *)0) {
- advise((char *)0, "can't detach because no header field name was given.");
+ if (attach == NULL) {
+ advise(NULL, "can't detach because no header field name was given.");
break;
}
*/
for (n = 0, arguments = argp + 1;
- *arguments != (char *)0;
+ *arguments != NULL;
arguments++) {
if (strcmp(*arguments, "-n") == 0) {
n = 1;
if (n == 1) {
for (arguments = argp + 1;
- *arguments != (char *)0;
+ *arguments != NULL;
arguments++) {
if (strcmp(*arguments, "-n") == 0)
continue;
annotate(drft, attach, NULL,
1, 0, n, 1);
- for (argp = arguments + 1; *argp != (char *)0; argp++) {
+ for (argp = arguments + 1; *argp != NULL; argp++) {
if (atoi(*argp) > n) {
if (atoi(*argp) == 1)
*argp = "";
*/
int trailln = strlen(trailcmd) + 3;
if (ln < 0 || ln + trailln > bufsz)
- adios((char *)0, "arguments too long");
+ adios(NULL, "arguments too long");
cp = buf + ln;
- while (*++argp != (char *)0) {
+ while (*++argp != NULL) {
ln = strlen(*argp);
/* +1 for leading space */
if (ln + trailln + 1 > bufsz - (cp-buf))
- adios((char *)0, "arguments too long");
+ adios(NULL, "arguments too long");
*cp++ = ' ';
memcpy(cp, *argp, ln+1);
cp += ln;
context_save(); /* save the context file */
fflush(stdout);
- switch (pid = vfork()) {
- case NOTOK:
- advise("fork", "unable to");
- status = NOTOK;
- break;
-
- case OK:
- if (cwd)
- chdir(cwd);
- if (altmsg) {
- if (mp)
- m_putenv("mhfolder", mp->foldpath);
- m_putenv("editalt", altpath);
- }
-
- vecp = 0;
- vec[vecp++] = mhbasename(*ed);
- if (arg)
- while (*arg)
- vec[vecp++] = *arg++;
- vec[vecp++] = file;
- vec[vecp] = NULL;
-
- execvp(*ed, vec);
- fprintf(stderr, "unable to exec ");
- perror(*ed);
- _exit(-1);
+ switch (pid = fork()) {
+ case NOTOK:
+ advise("fork", "unable to");
+ status = NOTOK;
+ break;
+
+ case OK:
+ if (cwd)
+ chdir(cwd);
+ if (altmsg) {
+ if (mp)
+ m_putenv("mhfolder", mp->foldpath);
+ m_putenv("editalt", altpath);
+ }
- default:
- if ((status = pidwait(pid, NOTOK))) {
+ vecp = 0;
+ vec[vecp++] = mhbasename(*ed);
+ if (arg)
+ while (*arg)
+ vec[vecp++] = *arg++;
+ vec[vecp++] = file;
+ vec[vecp] = NULL;
+
+ execvp(*ed, vec);
+ fprintf(stderr, "unable to exec ");
+ perror(*ed);
+ _exit(-1);
+
+ default:
+ if ((status = pidwait(pid, NOTOK))) {
#ifdef ATTVIBUG
- if ((cp = mhbasename(*ed)) &&
- strcmp(cp, "vi") == 0 &&
- (status & 0x00ff) == 0)
- status = 0;
- else {
+ 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)) {
- advise(NULL, "problems with edit--draft left in %s", cp);
- } else {
- advise(NULL, "problems with edit--%s preserved", file);
- }
+ if (((status & 0xff00) != 0xff00)
+ && (!reedit || (status & 0x00ff))) {
+ if (!use && (status & 0xff00) && (rename(file, cp = m_backup (file)) != NOTOK)) {
+ advise(NULL, "problems with edit--draft left in %s", cp);
+ } else {
+ advise(NULL, "problems with edit--%s preserved", file);
}
- status = -2; /* maybe "reedit ? -2 : -1"? */
- break;
+ }
+ status = -2; /* maybe "reedit ? -2 : -1"? */
+ break;
#ifdef ATTVIBUG
- }
-#endif
}
+#endif
+ }
- reedit++;
+ reedit++;
#ifdef HAVE_LSTAT
- if (altmsg && mp && !is_readonly(mp) && (slinked ?
- lstat (linkpath, &st) != NOTOK &&
- S_ISREG(st.st_mode) &&
- copyf(linkpath, altpath) == NOTOK :
- stat(linkpath, &st) != NOTOK &&
- st.st_nlink == 1 &&
- (unlink(altpath) == NOTOK ||
- link(linkpath, altpath) == NOTOK)))
- advise(linkpath, "unable to update %s from", altmsg);
+ if (altmsg && mp && !is_readonly(mp) && (slinked ?
+ lstat (linkpath, &st) != NOTOK &&
+ S_ISREG(st.st_mode) &&
+ copyf(linkpath, altpath) == NOTOK :
+ stat(linkpath, &st) != NOTOK &&
+ st.st_nlink == 1 &&
+ (unlink(altpath) == NOTOK ||
+ link(linkpath, altpath) == NOTOK)))
+ advise(linkpath, "unable to update %s from", altmsg);
#else /* HAVE_LSTAT */
- if (altmsg && mp && !is_readonly(mp) &&
- stat(linkpath, &st) != NOTOK &&
- st.st_nlink == 1 &&
- (unlink(altpath) == NOTOK ||
- link(linkpath, altpath) == NOTOK))
- advise(linkpath, "unable to update %s from",
- altmsg);
+ if (altmsg && mp && !is_readonly(mp) &&
+ stat(linkpath, &st) != NOTOK &&
+ st.st_nlink == 1 &&
+ (unlink(altpath) == NOTOK ||
+ link(linkpath, altpath) == NOTOK))
+ advise(linkpath, "unable to update %s from", altmsg);
#endif /* HAVE_LSTAT */
}
context_save(); /* save the context file */
fflush(stdout);
- for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++)
+ for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
sleep(5);
switch (child_id) {
- case NOTOK:
- advise(NULL, "unable to fork, so sending directly...");
- case OK:
- vecp = 0;
- vec[vecp++] = invo_name;
- if (pushsw)
- vec[vecp++] = "-push";
- if (arg)
- while (*arg)
- vec[vecp++] = *arg++;
- vec[vecp++] = file;
- vec[vecp] = NULL;
-
- execvp(sendproc, vec);
- fprintf(stderr, "unable to exec ");
- perror(sendproc);
- _exit(-1);
-
- default:
- if (pidwait(child_id, OK) == 0)
- done(0);
- return 1;
+ case NOTOK:
+ advise(NULL, "unable to fork, so sending directly...");
+ case OK:
+ vecp = 0;
+ vec[vecp++] = invo_name;
+ if (pushsw)
+ vec[vecp++] = "-push";
+ if (arg)
+ while (*arg)
+ vec[vecp++] = *arg++;
+ vec[vecp++] = file;
+ vec[vecp] = NULL;
+
+ execvp(sendproc, vec);
+ fprintf(stderr, "unable to exec ");
+ perror(sendproc);
+ _exit(-1);
+
+ default:
+ if (pidwait(child_id, OK) == 0)
+ done(0);
+ return 1;
}
}
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 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;
+ case BODY:
+ do {
+ char *bp;
- for (bp = buf; *bp; bp++)
- if (*bp != ' ' && *bp != '\t' && *bp != '\n') {
- fclose(fp);
- return 1;
- }
+ 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... */
+ state = m_getfld(state, name, buf,
+ sizeof(buf), fp);
+ } while (state == BODY);
+ /* and fall... */
- default:
- fclose(fp);
- return 0;
+ default:
+ fclose(fp);
+ return 0;
}
}
char *cp, buf[BUFSIZ], **argp;
char **arguments, *vec[MAXARGS];
struct stat st;
- char *attach = (char *)0; /* attachment header field name */
+ char *attach = NULL; /* attachment header field name */
int attachformat = 0; /* mhbuild format specifier for attachments */
#ifndef lint
while ((cp = *argp++)) {
if (*cp == '-') {
switch (smatch(++cp, sendswitches)) {
- case AMBIGSW:
- ambigsw(cp, sendswitches);
- return;
- case UNKWNSW:
- advise(NULL, "-%s unknown\n", cp);
- return;
+ case AMBIGSW:
+ ambigsw(cp, sendswitches);
+ return;
+ case UNKWNSW:
+ advise(NULL, "-%s unknown\n", cp);
+ return;
- case SHELPSW:
- snprintf(buf, sizeof(buf),
- "%s [switches]", sp);
- print_help(buf, sendswitches, 1);
- return;
- case SVERSIONSW:
- print_version(invo_name);
+ case SHELPSW:
+ snprintf(buf, sizeof(buf),
+ "%s [switches]", sp);
+ print_help(buf, sendswitches, 1);
+ return;
+ case SVERSIONSW:
+ print_version(invo_name);
+ return;
+
+ case SPSHSW:
+ pushed++;
+ continue;
+ case NSPSHSW:
+ pushed = 0;
+ continue;
+
+ case UNIQSW:
+ unique++;
+ continue;
+ case NUNIQSW:
+ unique = 0;
+ continue;
+ case FORWSW:
+ forwsw++;
+ continue;
+ case NFORWSW:
+ forwsw = 0;
+ continue;
+
+ case VERBSW:
+ verbsw++;
+ vec[vecp++] = --cp;
+ continue;
+ case NVERBSW:
+ verbsw = 0;
+ vec[vecp++] = --cp;
+ continue;
+
+ case DEBUGSW:
+ debugsw++; /* fall */
+ 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",
+ argp[-2]);
return;
+ }
+ vec[vecp++] = cp;
+ continue;
- case SPSHSW:
- pushed++;
- continue;
- case NSPSHSW:
- pushed = 0;
- continue;
-
- case UNIQSW:
- unique++;
- continue;
- case NUNIQSW:
- unique = 0;
- continue;
- case FORWSW:
- forwsw++;
- continue;
- case NFORWSW:
- forwsw = 0;
- continue;
-
- case VERBSW:
- verbsw++;
- vec[vecp++] = --cp;
- continue;
- case NVERBSW:
- verbsw = 0;
- vec[vecp++] = --cp;
- continue;
-
- case DEBUGSW:
- debugsw++; /* fall */
- 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", argp[-2]);
- return;
- }
- vec[vecp++] = cp;
- continue;
-
- case SNDATTACHSW:
- if (!(attach = *argp++) ||
- *attach == '-') {
- advise(NULL, "missing argument to %s", argp[-2]);
- return;
- }
- continue;
+ case SNDATTACHSW:
+ if (!(attach = *argp++) || *attach == '-') {
+ advise(NULL, "missing argument to %s",
+ argp[-2]);
+ return;
+ }
+ continue;
- case SNDATTACHFORMAT:
- if (! *argp || **argp == '-')
- adios(NULL, "missing argument to %s", argp[-1]);
- else {
- attachformat = atoi(*argp);
- if (attachformat < 0 || attachformat > ATTACHFORMATS - 1) {
- advise(NULL, "unsupported attachformat %d", attachformat);
- continue;
- }
+ case SNDATTACHFORMAT:
+ if (! *argp || **argp == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-1]);
+ else {
+ attachformat = atoi(*argp);
+ if (attachformat < 0 || attachformat > ATTACHFORMATS - 1) {
+ advise(NULL, "unsupported attachformat %d", attachformat);
+ continue;
}
- ++argp;
- continue;
+ }
+ ++argp;
+ continue;
}
}
advise(NULL, "usage: %s [switches]", sp);