ihandle SIGINT and SIGTERM: cleanup on these signals - teed - A multiplex relay tee(1) daemon. Err bitreich.org 70
hgit clone git://bitreich.org/teed git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/teed URL:git://bitreich.org/teed git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/teed bitreich.org 70
1Log /scm/teed/log.gph bitreich.org 70
1Files /scm/teed/files.gph bitreich.org 70
1Refs /scm/teed/refs.gph bitreich.org 70
1Tags /scm/teed/tag bitreich.org 70
1README /scm/teed/file/README.md.gph bitreich.org 70
1LICENSE /scm/teed/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 7ea6a417f78562629bd6f579dd593d44a5372acb /scm/teed/commit/7ea6a417f78562629bd6f579dd593d44a5372acb.gph bitreich.org 70
1parent c9671740957f58aa168262f3e76ad2f72542f05b /scm/teed/commit/c9671740957f58aa168262f3e76ad2f72542f05b.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Mon, 14 Aug 2023 15:09:01 +0200 Err bitreich.org 70
i Err bitreich.org 70
ihandle SIGINT and SIGTERM: cleanup on these signals Err bitreich.org 70
i Err bitreich.org 70
iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M teed.c | 17 ++++++++++++++++- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 16 insertions(+), 1 deletion(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/teed.c b/teed.c /scm/teed/file/teed.c.gph bitreich.org 70
i@@ -14,6 +14,8 @@ Err bitreich.org 70
i #include <sys/stat.h> Err bitreich.org 70
i #include <sys/select.h> Err bitreich.org 70
i Err bitreich.org 70
i+volatile sig_atomic_t isrunning = 1; Err bitreich.org 70
i+ Err bitreich.org 70
i void * Err bitreich.org 70
i memdup(void *p, int l) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -144,9 +146,22 @@ llist_del(llist **l, llist *e) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i+sighandler(int signo) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ switch (signo) { Err bitreich.org 70
i+ case SIGINT: Err bitreich.org 70
i+ case SIGTERM: Err bitreich.org 70
i+ isrunning = 0; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+void Err bitreich.org 70
i initsignals(void) Err bitreich.org 70
i { Err bitreich.org 70
i signal(SIGPIPE, SIG_IGN); Err bitreich.org 70
i+ signal(SIGINT, sighandler); Err bitreich.org 70
i+ signal(SIGTERM, sighandler); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i int Err bitreich.org 70
i@@ -215,7 +230,7 @@ main(int argc, char *argv[]) Err bitreich.org 70
i Err bitreich.org 70
i timeout.tv_sec = 1; Err bitreich.org 70
i timeout.tv_nsec = 0; Err bitreich.org 70
i- for (;;) { Err bitreich.org 70
i+ for (;isrunning;) { Err bitreich.org 70
i maxsfd = 0; Err bitreich.org 70
i FD_ZERO(&fdset); Err bitreich.org 70
i forllist(lfds, e) { Err bitreich.org 70
.
Response:
text/plain