#include <fcntl.h>
#include <h/signals.h>
#include <errno.h>
-#include <setjmp.h>
#include <signal.h>
#include <h/tws.h>
#include <h/mime.h>
#define AUTOSW 0
{ "auto", 0 },
#define NAUTOSW 1
- { "noauto", 0 },
+ { "noauto", 2 },
#define FILESW 2 /* interface from show */
{ "file file", 0 },
#define PARTSW 3
/* mhfree.c */
void free_content(CT);
extern CT *cts; /* The list of top-level contents to display */
-void freects_done(int) NORETURN;
+void freects_done();
/*
** static prototypes
CT ct, *ctp;
FILE *fp;
- done=freects_done;
+ if (atexit(freects_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:
adios(NULL, "-%s unknown", cp);
case HELPSW:
snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
print_help(buf, switches, 1);
- done(1);
+ exit(0);
case VERSIONSW:
print_version(invo_name);
- done(1);
+ exit(0);
case AUTOSW:
autosw++;
/* parse all the message ranges/sequences and set SELECTED */
for (msgnum = 0; msgnum < msgs.size; msgnum++)
if (!m_convert(mp, msgs.msgs[msgnum]))
- done(1);
+ exit(1);
seq_setprev(mp); /* set the previous-sequence */
if (!(cts = (CT *) calloc((size_t) (mp->numsel + 1),
}
if (!*cts)
- done(1);
+ exit(1);
userrs = 1;
SIGNAL(SIGQUIT, quitser);
context_save(); /* save the context file */
}
- done(0);
- return 1;
+ return 0;
}
fflush(stderr);
}
- done(1);
+ exit(1);
/* NOTREACHED */
}