- child_id = debugsw ? NOTOK : fork();
- switch (child_id) {
- case NOTOK: /* oops */
- if (!debugsw) {
- advise(NULL, "unable to fork, so doing annotations by hand...");
- }
- if (!cwd) {
- cwd = getcpy(pwd());
- }
- /* fall */
-
- case OK:
- /* block a few signals */
- sigemptyset(&set);
- sigaddset(&set, SIGHUP);
- sigaddset(&set, SIGINT);
- sigaddset(&set, SIGQUIT);
- sigaddset(&set, SIGTERM);
- SIGPROCMASK(SIG_BLOCK, &set, &oset);
-
- annoaux(fd);
- if (child_id == OK) {
- _exit(0);
- }
-
- /* reset the signal mask */
- SIGPROCMASK(SIG_SETMASK, &oset, &set);
-
- chdir(cwd);
- break;
-
- default: /* no waiting... */
- close(fd);
- break;
- }
-}
-
-
-static void
-annoaux(int fd)
-{
- int fd2, fd3, msgnum;
- char *cp, *folder, *maildir;
- char buffer[BUFSIZ], **ap;
- FILE *fp;
- struct msgs *mp;
-