diff --git a/src/main.c b/src/main.c index d363811..44cedf2 100644 --- a/src/main.c +++ b/src/main.c @@ -29,11 +29,15 @@ #include "log.h" #include "error.h" #include "print.h" +#include "signals.h" int main(int argc, char *argv[]) { int status = 0; + /* Handle received signals */ + signal_handlers_install(); + /* Add error exit handler */ atexit(&error_exit); diff --git a/src/meson.build b/src/meson.build index 6c9a160..3feac16 100644 --- a/src/meson.build +++ b/src/meson.build @@ -11,7 +11,8 @@ tio_sources = [ 'misc.c', 'tty.c', 'print.c', - 'configfile.c' + 'configfile.c', + 'signals.c' ] tio_dep = dependency('inih', required: true) diff --git a/src/signals.c b/src/signals.c new file mode 100644 index 0000000..364de8b --- /dev/null +++ b/src/signals.c @@ -0,0 +1,41 @@ +/* + * tio - a simple serial terminal I/O tool + * + * Copyright (c) 2022 Martin Lund + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include "config.h" +#include +#include +#include +#include +#include "error.h" +#include "print.h" +#include "misc.h" + +static void signal_handler(int signum) +{ + UNUSED(signum); + tio_printf("Received hangup signal!"); + exit(EXIT_FAILURE); +} + +void signal_handlers_install(void) +{ + signal(SIGHUP, signal_handler); +} diff --git a/src/signals.h b/src/signals.h new file mode 100644 index 0000000..8d8d70f --- /dev/null +++ b/src/signals.h @@ -0,0 +1,24 @@ +/* + * tio - a simple serial terminal I/O tool + * + * Copyright (c) 2022 Martin Lund + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#pragma once + +void signal_handlers_install();