*/
static char *tmpfilenam = NULL;
-static void unlink_done(int) NORETURN;
+void unlink_done();
int
main(int argc, char **argv)
struct msgs *mp;
struct stat st;
- 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:
adios(NULL, "-%s unknown", cp);
"%s [+folder] [switches]",
invo_name);
print_help(buf, switches, 1);
- done(1);
+ exit(1);
case VERSIONSW:
print_version(invo_name);
- done(1);
+ exit(1);
case SEQSW:
if (!(cp = *argp++) || *cp == '-')
if (st.st_size == 0) {
unlink(tmpfilenam);
advise(NULL, "empty file");
- done(0);
+ exit(0);
}
/*
*/
if ((msgnum = folder_addmsg(&mp, tmpfilenam, 0, unseensw, 0, 0, NULL))
== -1)
- done(1);
+ exit(1);
/*
** Add the message to any extra sequences
*/
for (seqp = 0; seqs[seqp]; seqp++) {
if (!seq_addmsg(mp, seqs[seqp], msgnum, publicsw, zerosw))
- done(1);
+ exit(1);
}
seq_setunseen(mp, 1); /* add new msgs to unseen sequences */
unlink(tmpfilenam); /* remove temporary file */
tmpfilenam = NULL;
- done(0);
- return 1;
+ return 0;
}
/*
** Clean up and exit
*/
-static void
-unlink_done(int status)
+void
+unlink_done()
{
- if (tmpfilenam && *tmpfilenam)
+ if (tmpfilenam && *tmpfilenam) {
unlink(tmpfilenam);
- exit(status);
+ }
}