#include <unistd.h>
#include <sys/stat.h>
#include <locale.h>
+#include <sysexits.h>
static struct swit switches[] = {
#define FORMSW 0
char *tfile = NULL;
if (atexit(unlink_done) != 0) {
- adios(NULL, "atexit failed");
+ adios(EX_OSERR, NULL, "atexit failed");
}
setlocale(LC_ALL, "");
switch (smatch(++cp, switches)) {
case AMBIGSW:
ambigsw(cp, switches);
- exit(1);
+ exit(EX_USAGE);
case UNKWNSW:
vec[vecp++] = --cp;
continue;
case HELPSW:
snprintf(buf, sizeof(buf), "%s [switches] [switches for spost] address ...", invo_name);
print_help(buf, switches, 1);
- exit(0);
+ exit(argc == 2 ? EX_OK : EX_USAGE);
case VERSIONSW:
print_version(invo_name);
- exit(0);
+ exit(argc == 2 ? EX_OK : EX_USAGE);
case FORMSW:
if (!(form = *argp++) || *form == '-') {
- adios(NULL, "missing argument to %s",
+ adios(EX_USAGE, NULL, "missing argument to %s",
argp[-2]);
}
continue;
}
if (!addrs) {
- adios(NULL, "usage: %s [switches] [switches for spost] address ...", invo_name);
+ adios(EX_USAGE, NULL, "usage: %s [switches] [switches for spost] address ...", invo_name);
}
umask(~m_gmprot());
tfile = m_mktemp2(NULL, invo_name, NULL, &fp);
- if (tfile == NULL) adios("rcvdist", "unable to create temporary file");
+ if (tfile == NULL) adios(EX_CANTCREAT, "rcvdist", "unable to create temporary file");
strncpy(tmpfil, tfile, sizeof(tmpfil));
cpydata(fileno(stdin), fileno(fp), "message", tmpfil);
fseek(fp, 0L, SEEK_SET);
tfile = m_mktemp2(NULL, invo_name, NULL, NULL);
- if (tfile == NULL) adios("forw", "unable to create temporary file");
+ if (tfile == NULL) adios(EX_CANTCREAT, "forw", "unable to create temporary file");
strncpy(drft, tfile, sizeof(tmpfil));
rcvdistout(fp, form, addrs);
fclose(fp);
if (distout(drft, tmpfil, backup) == NOTOK) {
- /* sysexits.h EX_DATAERR */
- exit(1);
+ exit(EX_IOERR);
}
vec[0] = "spost";
execvp(*vec, vec);
fprintf(stderr, "unable to exec ");
perror(*vec);
- _exit(1);
+ _exit(EX_OSERR);
return 0; /* dead code to satisfy the compiler */
}
FILE *out;
if (!(out = fopen(drft, "w"))) {
- adios(drft, "unable to create");
+ adios(EX_CANTCREAT, drft, "unable to create");
}
/* get new format string */
ncomps = fmt_compile(cp, &fmt) + 1;
if (!(nxtbuf = compbuffers =
(char **) calloc((size_t) ncomps, sizeof(char *)))) {
- adios(NULL, "unable to allocate component buffers");
+ adios(EX_OSERR, NULL, "unable to allocate component buffers");
}
if (!(savecomp = used_buf =
(struct comp **) calloc((size_t) (ncomps + 1),
sizeof(struct comp *)))) {
- adios(NULL, "unable to allocate component buffer stack");
+ adios(EX_OSERR, NULL, "unable to allocate component buffer stack");
}
savecomp += ncomps + 1;
*--savecomp = 0;
goto finished;
default:
- adios(NULL, "m_getfld() returned %d", state);
+ adios(EX_SOFTWARE, NULL, "m_getfld() returned %d", state);
}
}
finished: ;
fputs(scanl, out);
if (ferror(out)) {
- adios(drft, "error writing");
+ adios(EX_IOERR, drft, "error writing");
}
fclose(out);