projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use realpath to find the mailspool
[mmh]
/
uip
/
spost.c
diff --git
a/uip/spost.c
b/uip/spost.c
index
bfa8f4b
..
476227b
100644
(file)
--- a/
uip/spost.c
+++ b/
uip/spost.c
@@
-16,6
+16,9
@@
#include <h/dropsbr.h>
#include <h/tws.h>
#include <h/utils.h>
#include <h/dropsbr.h>
#include <h/tws.h>
#include <h/utils.h>
+#include <unistd.h>
+#include <locale.h>
+#include <sysexits.h>
#define MAX_SM_FIELD 1476 /* < largest hdr field sendmail will accept */
#define MAX_SM_FIELD 1476 /* < largest hdr field sendmail will accept */
@@
-149,19
+152,19
@@
main(int argc, char **argv)
switch (smatch(++cp, switches)) {
case AMBIGSW:
ambigsw(cp, switches);
switch (smatch(++cp, switches)) {
case AMBIGSW:
ambigsw(cp, switches);
- exit(1);
+ exit(EX_USAGE);
case UNKWNSW:
case UNKWNSW:
- adios(NULL, "-%s unknown", cp);
+ adios(EX_USAGE, NULL, "-%s unknown", cp);
case HELPSW:
snprintf(buf, sizeof(buf),
"%s [switches] file",
invo_name);
print_help(buf, switches, 1);
case HELPSW:
snprintf(buf, sizeof(buf),
"%s [switches] file",
invo_name);
print_help(buf, switches, 1);
- exit(0);
+ exit(argc == 2 ? EX_OK : EX_USAGE);
case VERSIONSW:
print_version(invo_name);
case VERSIONSW:
print_version(invo_name);
- exit(0);
+ exit(argc == 2 ? EX_OK : EX_USAGE);
case DEBUGSW:
debug++;
case DEBUGSW:
debug++;
@@
-180,16
+183,16
@@
main(int argc, char **argv)
}
}
if (msg)
}
}
if (msg)
- adios(NULL, "only one message at a time!");
+ adios(EX_USAGE, NULL, "only one message at a time!");
else
msg = cp;
}
if (!msg)
else
msg = cp;
}
if (!msg)
- adios(NULL, "usage: %s [switches] file", invo_name);
+ adios(EX_USAGE, NULL, "usage: %s [switches] file", invo_name);
if ((in = fopen(msg, "r")) == NULL)
if ((in = fopen(msg, "r")) == NULL)
- adios(msg, "unable to open");
+ adios(EX_IOERR, msg, "unable to open");
if (debug) {
verbose++;
if (debug) {
verbose++;
@@
-206,7
+209,7
@@
main(int argc, char **argv)
for (ap=brkstring(dp=getcpy(cp), " ", "\n"); ap && *ap;
ap++) {
if ((state = alias(etcpath(*ap))) != AK_OK) {
for (ap=brkstring(dp=getcpy(cp), " ", "\n"); ap && *ap;
ap++) {
if ((state = alias(etcpath(*ap))) != AK_OK) {
- adios(NULL, "aliasing error in file %s: %s",
+ adios(EX_IOERR, NULL, "aliasing error in file %s: %s",
*ap, akerror(state));
}
}
*ap, akerror(state));
}
}
@@
-250,11
+253,11
@@
main(int argc, char **argv)
case LENERR:
case FMTERR:
case LENERR:
case FMTERR:
- adios(NULL, "message format error in component #%d",
+ adios(EX_DATAERR, NULL, "message format error in component #%d",
compnum);
default:
compnum);
default:
- adios(NULL, "getfld() returned %d", state);
+ adios(EX_SOFTWARE, NULL, "getfld() returned %d", state);
}
break;
}
}
break;
}
@@
-262,7
+265,7
@@
main(int argc, char **argv)
if (debug) {
/* stop here */
if (debug) {
/* stop here */
- exit(0);
+ exit(EX_OK);
}
fclose(out);
}
fclose(out);
@@
-277,7
+280,7
@@
main(int argc, char **argv)
if (!(msgflags & MVIS)) {
/* only Bcc rcpts: we're finished here */
unlink(tmpfil);
if (!(msgflags & MVIS)) {
/* only Bcc rcpts: we're finished here */
unlink(tmpfil);
- exit(0);
+ exit(EX_OK);
}
}
}
}
@@
-286,7
+289,7
@@
main(int argc, char **argv)
** the msg temp file as std in.
*/
if (!freopen(tmpfil, "r", stdin)) {
** the msg temp file as std in.
*/
if (!freopen(tmpfil, "r", stdin)) {
- adios(tmpfil, "can't reopen for sendmail");
+ adios(EX_IOERR, tmpfil, "can't reopen for sendmail");
}
unlink(tmpfil);
}
unlink(tmpfil);
@@
-300,7
+303,7
@@
main(int argc, char **argv)
}
*argp = NULL;
execv(sendmail, sargv);
}
*argp = NULL;
execv(sendmail, sargv);
- adios(sendmail, "can't exec");
+ adios(EX_OSERR, sendmail, "can't exec");
return -1;
}
return -1;
}
@@
-450,7
+453,7
@@
finish_headers(FILE *out)
}
if (badmsg) {
unlink(tmpfil);
}
if (badmsg) {
unlink(tmpfil);
- adios(NULL, "re-format message and try again");
+ adios(EX_DATAERR, NULL, "re-format message and try again");
}
}
}
}
@@
-563,7
+566,7
@@
process_fcc(char *str)
int state = 0;
if (strlen(str)+strlen(fccs) > sizeof fccs /2) {
int state = 0;
if (strlen(str)+strlen(fccs) > sizeof fccs /2) {
- adios(NULL, "Too much Fcc data");
+ adios(EX_DATAERR, NULL, "Too much Fcc data");
}
/* todo: better have three states: SEPARATOR, PLUS, WORD */
for (cp=pp=str; *cp; cp++) {
}
/* todo: better have three states: SEPARATOR, PLUS, WORD */
for (cp=pp=str; *cp; cp++) {
@@
-606,7
+609,7
@@
fcc(char *file, char *folders)
fflush(stdout);
}
if (100+strlen(file)+strlen(folders) > sizeof cmd) {
fflush(stdout);
}
if (100+strlen(file)+strlen(folders) > sizeof cmd) {
- adios(NULL, "Too much Fcc data");
+ adios(EX_DATAERR, NULL, "Too much Fcc data");
}
/* hack: read from /dev/null and refile(1) won't question us */
snprintf(cmd, sizeof cmd, "</dev/null refile -link -file '%s' %s",
}
/* hack: read from /dev/null and refile(1) won't question us */
snprintf(cmd, sizeof cmd, "</dev/null refile -link -file '%s' %s",