--- minicom-2.2/src/minicom.c.sigs 2007-07-10 13:52:51.000000000 +0200 +++ minicom-2.2/src/minicom.c 2007-07-10 14:48:52.000000000 +0200 @@ -107,11 +107,17 @@ static void hangsig(int sig) /*ARGSUSED*/ static void shjump(int dummy /* __attribute__((unused)) */) { + sigset_t ss, oldss; + dummy = dummy; /* avoid compiler warning, should be optimized away... */ wleave(); signal(SIGTSTP, SIG_DFL); + sigemptyset(&ss); + sigaddset(&ss, SIGTSTP); + sigprocmask(SIG_UNBLOCK, &ss, &oldss); fputs(_("Suspended. Type \"fg\" to resume.\n"),stdout); kill(getpid(), SIGTSTP); + sigprocmask(SIG_SETMASK, &oldss, NULL); signal(SIGTSTP, shjump); wreturn(); if (use_status) @@ -1524,6 +1530,14 @@ dirty_goto: do_log("%s", _("Quit without reset while online.")); m_hupcl(portfd, 0); } + + signal(SIGTERM, SIG_IGN); + signal(SIGHUP, SIG_IGN); +#ifdef SIGTSTP + signal(SIGTSTP, SIG_DFL); +#endif + signal(SIGQUIT, SIG_DFL); + if (capfp != (FILE *)0) fclose(capfp); wclose(us, 0);