minicom/minicom-2.2-sigs.patch
2007-07-10 12:59:45 +00:00

36 lines
1.0 KiB
Diff

--- 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);