{ NULL, 0 },
};
+char *version=VERSION;
+
/*
** This is an attempt to simplify things by putting all the
** privilege ops into macros.
case AUDSW:
if (!(cp = *argp++) || *cp == '-')
adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]);
- audfile = getcpy(expanddir(cp));
+ audfile = mh_xstrdup(expanddir(cp));
continue;
case NAUDSW:
audfile = NULL;
continue;
case FILESW:
- if (!(cp = *argp++) || *cp == '-')
+ if (!(cp = *argp++))
adios(EX_USAGE, NULL, "missing argument to %s",
argp[-2]);
- from = getcpy(expanddir(cp));
+ from = (strcmp(cp, "-")==0) ? "-" : mh_xstrdup(expanddir(cp));
/*
** If the truncate file is in default state,
if (folder)
adios(EX_USAGE, NULL, "only one folder at a time!");
else
- folder = getcpy(expandfol(cp));
+ folder = mh_xstrdup(expandfol(cp));
} else {
adios(EX_USAGE, NULL, "usage: %s [+folder] [switches]",
invo_name);
** NOTE: above this point you should use TRYDROPGROUPPRIVS(),
** not DROPGROUPPRIVS().
*/
- /* guarantee dropping group priveleges; we might not have done so earlier */
+ /* guarantee dropping group privileges; we might not have done so earlier */
DROPGROUPPRIVS();
- /*
- ** We will get the mail from a file
- ** (typically the standard maildrop)
- */
- if (from)
- newmail = from;
- else if ((newmail = getenv("MAILDROP")) && *newmail)
- newmail = toabsdir(newmail);
- else if ((newmail = context_find("maildrop")) && *newmail)
- newmail = toabsdir(newmail);
- else {
- newmail = concat(mailspool, "/", getusername(), NULL);
- }
- if (stat(newmail, &s1) == NOTOK || s1.st_size == 0)
- adios(EX_DATAERR, NULL, "no mail to incorporate");
+ if (from && strcmp(from, "-")==0) {
+ /* We'll read mail from stdin. */
+ newmail = NULL;
+ } else {
+ /* We'll read mail from a file. */
+ if (from)
+ newmail = from;
+ else if ((newmail = getenv("MAILDROP")) && *newmail)
+ newmail = toabsdir(newmail);
+ else if ((newmail = context_find("maildrop")) && *newmail)
+ newmail = toabsdir(newmail);
+ else {
+ newmail = concat(mailspool, "/", getusername(), NULL);
+ }
+ if (stat(newmail, &s1) == NOTOK || s1.st_size == 0)
+ adios(EX_DATAERR, NULL, "no mail to incorporate");
- if ((cp = strdup(newmail)) == NULL)
- adios(EX_OSERR, NULL, "error allocating memory to copy newmail");
+ if ((cp = strdup(newmail)) == NULL)
+ adios(EX_OSERR, NULL, "error allocating memory to copy newmail");
- newmail = cp;
+ newmail = cp;
+ }
if (!folder)
folder = getdeffol();
if (!(mp = folder_read(folder)))
adios(EX_IOERR, NULL, "unable to read folder %s", folder);
- if (access(newmail, W_OK) != NOTOK) {
+ if (!newmail) {
+ trnflag = 0;
+ in = stdin;
+ } else if (access(newmail, W_OK) != NOTOK) {
locked++;
if (trnflag) {
SIGNAL(SIGHUP, SIG_IGN);
dtimenow(), from);
}
- /* Get new format string */
- fmtstr = new_fs(form, FORMAT);
+ /* Set format string */
+ fmtstr = new_fs(form, scanformat);
if (noisy) {
printf("Incorporating new mail into %s...\n\n", folder);
break;
}
giveup:;
- free(maildir_copy);
+ mh_free0(&maildir_copy);
if (incerr < 0) { /* error */
if (locked) {
else
admonish(newmail, "error zero'ing");
}
- } else if (noisy) {
+ } else if (noisy && newmail) {
printf("%s not zero'd\n", newmail);
}