--- freem/src/sighnd.c 2025/01/19 02:04:04 1.1 +++ freem/src/sighnd.c 2025/05/01 21:02:31 1.11 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * sighnd.c + * $Id: sighnd.c,v 1.11 2025/05/01 21:02:31 snw Exp $ * FreeM signal handlers * * - * Author: Serena Willis + * Author: Serena Willis * Copyright (C) 1998 MUG Deutschland - * Copyright (C) 2020 Coherent Logic Development LLC + * Copyright (C) 2020, 2025 Coherent Logic Development LLC * * * This file is part of FreeM. @@ -35,6 +23,37 @@ * You should have received a copy of the GNU Affero Public License * along with FreeM. If not, see . * + * $Log: sighnd.c,v $ + * Revision 1.11 2025/05/01 21:02:31 snw + * Documentation updates + * + * 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 + * + * + * SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC + * SPDX-License-Identifier: AGPL-3.0-or-later **/ #include @@ -47,7 +66,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" @@ -56,8 +91,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) @@ -68,7 +104,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 } @@ -100,7 +136,7 @@ void sig_init(void) } -#if !defined(MSDOS) +#if !defined(MSDOS) && !defined(__OS2__) void onwinch (void) { struct winsize ws; @@ -120,13 +156,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); @@ -152,11 +195,14 @@ 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; @@ -260,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 */