#include <h/mime.h>
#include <h/mhparse.h>
#include <h/utils.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <locale.h>
static struct swit switches[] = {
#define VERBSW 0
/* mhfree.c */
void free_content(CT);
extern CT *cts;
-void freects_done(int) NORETURN;
+void freects_done();
/*
** static prototypes
struct msgs *mp = NULL;
CT ct, *ctp;
- done=freects_done;
+ if (atexit(freects_done) != 0) {
+ adios(NULL, "atexit failed");
+ }
setlocale(LC_ALL, "");
invo_name = mhbasename(argv[0]);
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 PARTSW:
if (!(cp = *argp++) || *cp == '-')
/* 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 */
}