--- freem/src/sighnd.c 2025/03/09 19:50:47 1.3
+++ freem/src/sighnd.c 2025/04/30 20:03:09 1.10
@@ -1,5 +1,5 @@
/*
- * $Id: sighnd.c,v 1.3 2025/03/09 19:50:47 snw Exp $
+ * $Id: sighnd.c,v 1.10 2025/04/30 20:03:09 snw Exp $
* FreeM signal handlers
*
*
@@ -24,6 +24,27 @@
* along with FreeM. If not, see .
*
* $Log: sighnd.c,v $
+ * Revision 1.10 2025/04/30 20:03:09 snw
+ * Work on entryref parser
+ *
+ * Revision 1.9 2025/04/15 18:39:20 snw
+ * Remove extraneous CRLFs in logprintf calls
+ *
+ * Revision 1.8 2025/04/15 16:49:36 snw
+ * Make use of logprintf throughout codebase
+ *
+ * Revision 1.7 2025/04/10 01:24:38 snw
+ * Remove C++ style comments
+ *
+ * Revision 1.6 2025/03/24 04:15:25 snw
+ * Create dummy onwinch signal handler for OS/2
+ *
+ * Revision 1.5 2025/03/24 00:38:40 snw
+ * Fix termios junk in sighnd.c
+ *
+ * Revision 1.4 2025/03/24 00:34:30 snw
+ * Fix termios junk in sighnd.c
+ *
* Revision 1.3 2025/03/09 19:50:47 snw
* Second phase of REUSE compliance and header reformat
*
@@ -42,7 +63,23 @@
#include
#include
-#include
+#if !defined(__APPLE__) && !defined(__gnu_hurd__) && !defined(EMSCRIPTEN)
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__AMIGA)
+# include
+# if !defined(__AMIGA)
+# define TCGETA TIOCGETA
+# define TCSETA TIOCSETA
+# endif
+# define termio termios
+# else
+# if !defined(MSDOS)
+# include
+# endif
+# endif
+#else
+# include
+#endif
+
#include
#include "mpsdef.h"
@@ -51,8 +88,9 @@
#include "events.h"
#include "jobtab.h"
#include "shmmgr.h"
+#include "log.h"
+
-void m_log (int, const char *);
int pending_signal_type = -1;
void sig_attach(int sig, void *handler)
@@ -63,7 +101,7 @@ void sig_attach(int sig, void *handler)
#if !defined(__AMIGA)
sigaction (sig, &act, NULL);
#else
- //TODO: fill in for m68k-amigaos
+ /* TODO: fill in for m68k-amigaos */
#endif
}
@@ -95,7 +133,7 @@ void sig_init(void)
}
-#if !defined(MSDOS)
+#if !defined(MSDOS) && !defined(__OS2__)
void onwinch (void)
{
struct winsize ws;
@@ -115,13 +153,20 @@ void onwinch (void)
return;
}
+#else
+void onwinch (void)
+{
+ sig_attach (SIGWINCH, &onwinch);
+
+ return;
+}
#endif
void onintr (void)
{
sig_attach (SIGINT, &onintr); /* restore handler */
- //printf ("\r\nSIGINT codptr = '%s'\r\n", codptr);
+ /* printf ("\r\nSIGINT codptr = '%s'\r\n", codptr); */
if (first_process) {
job_request_stop (pid);
@@ -148,10 +193,16 @@ void onintr (void)
}
- if (breakon) {
+
+
+ if (breakon) {
merr_raise (INRPT);
inrpt_after_async = TRUE;
if (forsw) sigint_in_for = TRUE;
+
+ if (usermode == 1) {
+ debug_mode = TRUE;
+ }
}
else {
zcc = TRUE;
@@ -255,8 +306,7 @@ void onhup (void)
if (run_daemon == TRUE) {
- fprintf (stderr, "freem: daemon received SIGHUP\r\n");
- m_log (1, "freem: daemon received SIGHUP");
+ logprintf (FM_LOG_INFO, "environment: daemon received SIGHUP");
sig_attach (SIGHUP, &onhup); /* restore handler */