** prototypes
*/
static void rcvdistout(FILE *, char *, char *);
-static void unlink_done(int) NORETURN;
+void unlink_done();
int
FILE *fp;
char *tfile = NULL;
- done=unlink_done;
+ if (atexit(unlink_done) != 0) {
+ adios(NULL, "atexit failed");
+ }
-#ifdef LOCALE
setlocale(LC_ALL, "");
-#endif
invo_name = mhbasename(argv[0]);
/* read user profile/context */
switch (smatch(++cp, switches)) {
case AMBIGSW:
ambigsw(cp, switches);
- done(1);
+ exit(1);
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);
- done(1);
+ exit(0);
case VERSIONSW:
print_version(invo_name);
- done(1);
+ exit(0);
case FORMSW:
if (!(form = *argp++) || *form == '-') {
fclose(fp);
if (distout(drft, tmpfil, backup) == NOTOK) {
- done(1);
+ /* sysexits.h EX_DATAERR */
+ exit(1);
}
vec[0] = "spost";
}
-static void
-unlink_done(int status)
+void
+unlink_done()
{
if (*backup) {
unlink(backup);
if (*tmpfil) {
unlink(tmpfil);
}
- exit(status ? RCV_MBX : RCV_MOK);
}