From 4f4b749e75b38b8c08b4f67ef51c2c8740999e28 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 9 Feb 2021 22:59:51 +0100 Subject: gnu: inetutils: Update to 2.0. * gnu/packages/admin.scm (inetutils): Update to 2.0. [source](patches): Remove. * gnu/packages/patches/inetutils-hurd.patch: Remove. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. --- gnu/local.mk | 1 - gnu/packages/admin.scm | 20 +- gnu/packages/patches/inetutils-hurd.patch | 583 ------------------------------ 3 files changed, 3 insertions(+), 601 deletions(-) delete mode 100644 gnu/packages/patches/inetutils-hurd.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 3caa6c6fc9..202677fed1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1180,7 +1180,6 @@ dist_patch_DATA = \ %D%/packages/patches/id3lib-UTF16-writing-bug.patch \ %D%/packages/patches/idris-disable-test.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ - %D%/packages/patches/inetutils-hurd.patch \ %D%/packages/patches/inkscape-poppler-0.76.patch \ %D%/packages/patches/intel-xed-fix-nondeterminism.patch \ %D%/packages/patches/intltool-perl-compatibility.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 4566b5925c..f19289e553 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020 Eric Bavier @@ -614,28 +614,14 @@ re-executing them as necessary.") (define-public inetutils (package (name "inetutils") - (version "1.9.4") + (version "2.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/inetutils/inetutils-" version ".tar.gz")) - (patches (search-patches "inetutils-hurd.patch")) (sha256 (base32 - "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Fix issues with GCC 10. Can be removed for versions > 1.9.4. - (substitute* "telnetd/utility.c" - (("int not42;") - "extern int not42;")) - (substitute* "ftpd/extern.h" - (("^jmp_buf errcatch;") - "extern jmp_buf errcatch;")) - (substitute* "ftpd/ftpd.c" - (("struct credentials cred;" all) - (string-append all "\njmp_buf errcatch;"))))))) + "0j1nb69bhg29cm4xkqqjh2ln1zqcj2lnpm92v638lpwrs11dypxl")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--localstatedir=/var" diff --git a/gnu/packages/patches/inetutils-hurd.patch b/gnu/packages/patches/inetutils-hurd.patch deleted file mode 100644 index bd65c4feb1..0000000000 --- a/gnu/packages/patches/inetutils-hurd.patch +++ /dev/null @@ -1,583 +0,0 @@ -Support compiling on the Hurd. - -Taken from https://git.hadrons.org/cgit/debian/pkgs/inetutils.git/tree/debian/patches/0002-ifconfig-Improve-the-support-for-GNU-Hurd.patch - -From 9a90d9b9119906df23cb2db1503cb0f099942dd9 Mon Sep 17 00:00:00 2001 -From: Mats Erik Andersson -Date: Sat, 18 Jul 2015 01:12:41 +0200 -Subject: [PATCH 02/35] ifconfig: Improve the support for GNU/Hurd. - -Use system specific code instead of generic code. -This provides abilities similar to other systems. ---- - ChangeLog | 17 +++ - ifconfig/system.c | 10 +- - ifconfig/system.h | 2 + - ifconfig/system/Makefile.am | 4 +- - ifconfig/system/generic.c | 14 +- - ifconfig/system/hurd.c | 292 ++++++++++++++++++++++++++++++++++++ - ifconfig/system/hurd.h | 50 ++++++ - 7 files changed, 381 insertions(+), 8 deletions(-) - create mode 100644 ifconfig/system/hurd.c - create mode 100644 ifconfig/system/hurd.h - -diff --git a/ifconfig/system.c b/ifconfig/system.c -index 30677e41..e108dc2e 100644 ---- a/ifconfig/system.c -+++ b/ifconfig/system.c -@@ -25,10 +25,12 @@ - # include "system/solaris.c" - #elif defined __QNX__ - # include "system/qnx.c" --# elif defined __DragonFly__ || defined __FreeBSD__ || \ -- defined __FreeBSD_kernel__ || \ -- defined __NetBSD__ || defined __OpenBSD__ --# include "system/bsd.c" -+#elif defined __DragonFly__ || defined __FreeBSD__ || \ -+ defined __FreeBSD_kernel__ || \ -+ defined __NetBSD__ || defined __OpenBSD__ -+# include "system/bsd.c" -+#elif defined __GNU__ -+# include "system/hurd.c" - #else - # include "system/generic.c" - #endif -diff --git a/ifconfig/system.h b/ifconfig/system.h -index 8521ad95..66878d3a 100644 ---- a/ifconfig/system.h -+++ b/ifconfig/system.h -@@ -97,6 +97,8 @@ extern struct if_nameindex* (*system_if_nameindex) (void); - defined __FreeBSD_kernel__ || \ - defined __NetBSD__ || defined __OpenBSD__ - # include "system/bsd.h" -+# elif defined __GNU__ -+# include "system/hurd.h" - # else - # include "system/generic.h" - # endif -diff --git a/ifconfig/system/Makefile.am b/ifconfig/system/Makefile.am -index 954c6774..62a9f1c4 100644 ---- a/ifconfig/system/Makefile.am -+++ b/ifconfig/system/Makefile.am -@@ -26,8 +26,10 @@ noinst_HEADERS = \ - linux.h \ - solaris.h \ - qnx.h \ -+ hurd.h \ - bsd.c \ - generic.c \ - linux.c \ - solaris.c \ -- qnx.c -+ qnx.c \ -+ hurd.c -diff --git a/ifconfig/system/generic.c b/ifconfig/system/generic.c -index 9a2bda55..20a78bde 100644 ---- a/ifconfig/system/generic.c -+++ b/ifconfig/system/generic.c -@@ -22,6 +22,8 @@ - #include - - #include "../ifconfig.h" -+ -+#include - - - /* Output format stuff. */ -@@ -36,19 +38,25 @@ const char *system_help; - struct argp_child system_argp_child; - - int --system_parse_opt (struct ifconfig **ifp, char option, char *optarg) -+system_parse_opt (struct ifconfig **ifp _GL_UNUSED_PARAMETER, -+ char option _GL_UNUSED_PARAMETER, -+ char *optarg _GL_UNUSED_PARAMETER) - { - return 0; - } - - int --system_parse_opt_rest (struct ifconfig **ifp, int argc, char *argv[]) -+system_parse_opt_rest (struct ifconfig **ifp _GL_UNUSED_PARAMETER, -+ int argc _GL_UNUSED_PARAMETER, -+ char *argv[] _GL_UNUSED_PARAMETER) - { - return 0; - } - - int --system_configure (int sfd, struct ifreq *ifr, struct system_ifconfig *ifs) -+system_configure (int sfd _GL_UNUSED_PARAMETER, -+ struct ifreq *ifr _GL_UNUSED_PARAMETER, -+ struct system_ifconfig *ifs _GL_UNUSED_PARAMETER) - { - return 0; - } -diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c -new file mode 100644 -index 00000000..3bd19775 ---- /dev/null -+++ b/ifconfig/system/hurd.c -@@ -0,0 +1,292 @@ -+/* hurd.c -- Code for ifconfig specific to GNU/Hurd. -+ Copyright (C) 2015 Free Software Foundation, Inc. -+ -+ This file is part of GNU Inetutils. -+ -+ GNU Inetutils 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 3 of the License, or (at -+ your option) any later version. -+ -+ GNU Inetutils 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, see `http://www.gnu.org/licenses/'. */ -+ -+/* Mostly written by Marcus Brinkmann. -+ Adaptions to GNU/Hurd by Mats Erik Andersson. */ -+ -+#include -+ -+#include -+#include -+#include -+#include "../ifconfig.h" -+ -+#include -+ -+ -+/* Output format stuff. */ -+ -+const char *system_default_format = "gnu"; -+ -+ -+/* Argument parsing stuff. */ -+ -+const char *system_help = "NAME [ADDR]\ -+ [broadcast BRDADDR] [netmask MASK]\ -+ [mtu N] [up|down] [FLAGS]"; -+ -+struct argp_child system_argp_child; -+ -+int -+system_parse_opt (struct ifconfig **ifp _GL_UNUSED_PARAMETER, -+ char option _GL_UNUSED_PARAMETER, -+ char *optarg _GL_UNUSED_PARAMETER) -+{ -+ return 0; -+} -+ -+int -+system_parse_opt_rest (struct ifconfig **ifp, int argc, char *argv[]) -+{ -+ int i = 0, mask, rev; -+ enum { -+ EXPECT_NOTHING, -+ EXPECT_AF, -+ EXPECT_BROADCAST, -+ EXPECT_NETMASK, -+ EXPECT_METRIC, -+ EXPECT_MTU -+ } expect = EXPECT_AF; -+ -+ *ifp = parse_opt_new_ifs (argv[0]); -+ -+ while (++i < argc) -+ { -+ switch (expect) -+ { -+ case EXPECT_BROADCAST: -+ parse_opt_set_brdaddr (*ifp, argv[i]); -+ break; -+ -+ case EXPECT_NETMASK: -+ parse_opt_set_netmask (*ifp, argv[i]); -+ break; -+ -+ case EXPECT_MTU: -+ parse_opt_set_mtu (*ifp, argv[i]); -+ break; -+ -+ /* XXX: 2015-07-18, GNU/Hurd does not yet support -+ ioctl(SIOCSIFMETRIC), but we let the code -+ handle this standard ability anyway! -+ */ -+ case EXPECT_METRIC: -+ parse_opt_set_metric (*ifp, argv[i]); -+ break; -+ -+ case EXPECT_AF: -+ expect = EXPECT_NOTHING; -+ if (!strcmp (argv[i], "inet")) -+ continue; -+ else if (!strcmp (argv[i], "inet6")) -+ { -+ error (0, 0, "%s is not a supported address family", argv[i]); -+ return 0; -+ } -+ break; -+ -+ case EXPECT_NOTHING: -+ break; -+ } -+ -+ if (expect != EXPECT_NOTHING) -+ expect = EXPECT_NOTHING; -+ else if (!strcmp (argv[i], "broadcast")) -+ expect = EXPECT_BROADCAST; -+ else if (!strcmp (argv[i], "netmask")) -+ expect = EXPECT_NETMASK; -+ else if (!strcmp (argv[i], "metric")) -+ expect = EXPECT_METRIC; -+ else if (!strcmp (argv[i], "mtu")) -+ expect = EXPECT_MTU; -+ else if (!strcmp (argv[i], "up")) -+ parse_opt_set_flag (*ifp, IFF_UP | IFF_RUNNING, 0); -+ else if (!strcmp (argv[i], "down")) -+ parse_opt_set_flag (*ifp, IFF_UP, 1); -+ else if (((mask = if_nameztoflag (argv[i], &rev)) -+ & ~IU_IFF_CANTCHANGE) != 0) -+ parse_opt_set_flag (*ifp, mask, rev); -+ else -+ { -+ if (!((*ifp)->valid & IF_VALID_ADDR)) -+ parse_opt_set_address (*ifp, argv[i]); -+ else if (!((*ifp)->valid & IF_VALID_DSTADDR)) -+ parse_opt_set_dstaddr (*ifp, argv[i]); -+ } -+ } -+ -+ switch (expect) -+ { -+ case EXPECT_BROADCAST: -+ error (0, 0, "option `broadcast' requires an argument"); -+ break; -+ -+ case EXPECT_NETMASK: -+ error (0, 0, "option `netmask' requires an argument"); -+ break; -+ -+ case EXPECT_METRIC: -+ error (0, 0, "option `metric' requires an argument"); -+ break; -+ -+ case EXPECT_MTU: -+ error (0, 0, "option `mtu' requires an argument"); -+ break; -+ -+ case EXPECT_AF: -+ case EXPECT_NOTHING: -+ return 1; -+ } -+ -+ return 0; -+} -+ -+int -+system_configure (int sfd _GL_UNUSED_PARAMETER, -+ struct ifreq *ifr _GL_UNUSED_PARAMETER, -+ struct system_ifconfig *ifs _GL_UNUSED_PARAMETER) -+{ -+ return 0; -+} -+ -+struct if_nameindex* (*system_if_nameindex) (void) = if_nameindex; -+ -+static void -+print_hwaddr_ether (format_data_t form _GL_UNUSED_PARAMETER, -+ unsigned char *data) -+{ -+ *column += printf ("%02X:%02X:%02X:%02X:%02X:%02X", -+ data[0], data[1], data[2], data[3], data[4], data[5]); -+ had_output = 1; -+} -+ -+struct arphrd_symbol -+{ -+ const char *name; -+ const char *title; -+ int value; -+ void (*print_hwaddr) (format_data_t form, unsigned char *data); -+} arphrd_symbols[] = -+ { -+#ifdef ARPHRD_ETHER /* Ethernet 10/100Mbps. */ -+ { "ETHER", "Ethernet", ARPHRD_ETHER, print_hwaddr_ether}, -+#endif -+#ifdef ARPHRD_LOOPBACK /* Loopback device. */ -+ { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK, NULL}, -+#endif -+ /* XXX: The image debian-hurd-20150424 returns the value 4 -+ instead of expected ARPHRD_LOOPBACK. This has been -+ discussed in the list debian-hurd, where I was asked -+ to resist the temptation of a work around! -+ */ -+ { NULL, NULL, 0, NULL} -+ }; -+ -+struct arphrd_symbol * -+arphrd_findvalue (int value) -+{ -+ struct arphrd_symbol *arp = arphrd_symbols; -+ while (arp->name != NULL) -+ { -+ if (arp->value == value) -+ break; -+ arp++; -+ } -+ if (arp->name) -+ return arp; -+ else -+ return NULL; -+} -+ -+void -+system_fh_hwaddr_query (format_data_t form, int argc, char *argv[]) -+{ -+#ifdef SIOCGIFHWADDR -+ struct arphrd_symbol *arp; -+ -+ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) -+ select_arg (form, argc, argv, 1); -+ -+ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); -+ select_arg (form, argc, argv, (arp && arp->print_hwaddr) ? 0 : 1); -+#else -+ select_arg (form, argc, argv, 1); -+#endif -+} -+ -+void -+system_fh_hwaddr (format_data_t form, int argc _GL_UNUSED_PARAMETER, -+ char *argv[] _GL_UNUSED_PARAMETER) -+{ -+#ifdef SIOCGIFHWADDR -+ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) -+ error (EXIT_FAILURE, errno, -+ "SIOCGIFHWADDR failed for interface `%s'", -+ form->ifr->ifr_name); -+ else -+ { -+ struct arphrd_symbol *arp; -+ -+ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); -+ if (arp && arp->print_hwaddr) -+ arp->print_hwaddr (form, -+ (unsigned char *) form->ifr->ifr_hwaddr.sa_data); -+ else -+ put_string (form, "(hwaddr unknown)"); -+ } -+#else -+ *column += printf ("(not available)"); -+ had_output = 1; -+#endif -+} -+ -+void -+system_fh_hwtype_query (format_data_t form, int argc, char *argv[]) -+{ -+#ifdef SIOCGIFHWADDR -+ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) >= 0) -+ select_arg (form, argc, argv, 0); -+ else -+#endif -+ select_arg (form, argc, argv, 1); -+} -+ -+void -+system_fh_hwtype (format_data_t form, int argc _GL_UNUSED_PARAMETER, -+ char *argv[] _GL_UNUSED_PARAMETER) -+{ -+#ifdef SIOCGIFHWADDR -+ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) -+ error (EXIT_FAILURE, errno, -+ "SIOCGIFHWADDR failed for interface `%s'", -+ form->ifr->ifr_name); -+ else -+ { -+ struct arphrd_symbol *arp; -+ -+ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); -+ if (arp) -+ put_string (form, arp->title); -+ else -+ put_string (form, "(hwtype unknown)"); -+ } -+#else -+ *column += printf ("(not available)"); -+ had_output = 1; -+#endif -+} -diff --git a/ifconfig/system/hurd.h b/ifconfig/system/hurd.h -new file mode 100644 -index 00000000..bab14565 ---- /dev/null -+++ b/ifconfig/system/hurd.h -@@ -0,0 +1,50 @@ -+/* -+ Copyright (C) 2015 Free Software Foundation, Inc. -+ -+ This file is part of GNU Inetutils. -+ -+ GNU Inetutils 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 3 of the License, or (at -+ your option) any later version. -+ -+ GNU Inetutils 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, see `http://www.gnu.org/licenses/'. */ -+ -+/* Written by Mats Erik Andersson. */ -+ -+#ifndef IFCONFIG_SYSTEM_HURD_H -+# define IFCONFIG_SYSTEM_HURD_H -+ -+# include "../printif.h" -+# include "../options.h" -+ -+ -+/* Option support. */ -+ -+struct system_ifconfig -+{ -+ int valid; -+}; -+ -+ -+/* Output format support. */ -+ -+# define SYSTEM_FORMAT_HANDLER \ -+ { "hurd", fh_nothing}, \ -+ { "hwaddr?", system_fh_hwaddr_query}, \ -+ { "hwaddr", system_fh_hwaddr}, \ -+ { "hwtype?", system_fh_hwtype_query}, \ -+ { "hwtype", system_fh_hwtype}, -+ -+void system_fh_hwaddr_query (format_data_t form, int argc, char *argv[]); -+void system_fh_hwaddr (format_data_t form, int argc, char *argv[]); -+void system_fh_hwtype_query (format_data_t form, int argc, char *argv[]); -+void system_fh_hwtype (format_data_t form, int argc, char *argv[]); -+ -+#endif /* !IFCONFIG_SYSTEM_HURD_H */ --- -2.23.0.rc1.170.gbd704faa3e - -From 589dab9c7d3119da82837dabae34c8a3d16cbe49 Mon Sep 17 00:00:00 2001 -From: Mats Erik Andersson -Date: Thu, 30 Jul 2015 01:06:42 +0200 -Subject: [PATCH 07/35] ifconfig: Hardware detection in GNU/Hurd. - -A work-around needed to distinguish hardware type. ---- - ChangeLog | 10 ++++++++++ - ifconfig/system/hurd.c | 19 ++++++++++++------- - 2 files changed, 22 insertions(+), 7 deletions(-) - -diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c -index 3bd19775..b6261a00 100644 ---- a/ifconfig/system/hurd.c -+++ b/ifconfig/system/hurd.c -@@ -175,6 +175,16 @@ print_hwaddr_ether (format_data_t form _GL_UNUSED_PARAMETER, - had_output = 1; - } - -+/* GNU/Hurd and Mach are using a mixture of BSD definitions -+ * and GNU/Linux interface headers, which in this situation -+ * means that sa_family_t is an unsigned char, from BSD, while -+ * all ARPHRD_* come from GNU/Linux and are thus 16 bits wide. -+ * We must account for this. The following bitmask will -+ * adapt to any future change! -+ */ -+ -+#define _ARP_MASK ((sizeof (sa_family_t) == 1) ? 0xff : 0xffff) -+ - struct arphrd_symbol - { - const char *name; -@@ -184,16 +194,11 @@ struct arphrd_symbol - } arphrd_symbols[] = - { - #ifdef ARPHRD_ETHER /* Ethernet 10/100Mbps. */ -- { "ETHER", "Ethernet", ARPHRD_ETHER, print_hwaddr_ether}, -+ { "ETHER", "Ethernet", ARPHRD_ETHER & _ARP_MASK, print_hwaddr_ether}, - #endif - #ifdef ARPHRD_LOOPBACK /* Loopback device. */ -- { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK, NULL}, -+ { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK & _ARP_MASK, NULL}, - #endif -- /* XXX: The image debian-hurd-20150424 returns the value 4 -- instead of expected ARPHRD_LOOPBACK. This has been -- discussed in the list debian-hurd, where I was asked -- to resist the temptation of a work around! -- */ - { NULL, NULL, 0, NULL} - }; - --- -2.23.0.rc1.170.gbd704faa3e - -From d379784b4461d17b2536effd1b52bae21cd28a32 Mon Sep 17 00:00:00 2001 -From: Guillem Jover -Date: Fri, 16 Aug 2019 00:34:03 +0200 -Subject: [PATCH 35/35] telnet: Several ioctls have been disabled in the Hurd's - glibc - -But not the related option macros. inetutils uses those macros to decide -whether the ioctls are available, so it is FTBFS now. The Hurd's glibc -is being fixed, but we'll use this for now to get the builds going. ---- - telnet/sys_bsd.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/telnet/sys_bsd.c b/telnet/sys_bsd.c -index 662536ab..5eb35cb5 100644 ---- a/telnet/sys_bsd.c -+++ b/telnet/sys_bsd.c -@@ -63,6 +63,7 @@ - #include - #include - #include -+#include - #include - - #include "ring.h" -@@ -157,7 +158,7 @@ TerminalRead (char *buf, int n) - int - TerminalAutoFlush (void) - { --#if defined LNOFLSH -+#if defined TIOCLGET && defined LNOFLSH - int flush; - - ioctl (0, TIOCLGET, (char *) &flush); -@@ -260,7 +261,9 @@ TerminalSaveState (void) - ioctl (0, TIOCGETP, (char *) &ottyb); - ioctl (0, TIOCGETC, (char *) &otc); - ioctl (0, TIOCGLTC, (char *) &oltc); -+#ifdef TIOCLGET - ioctl (0, TIOCLGET, (char *) &olmode); -+#endif - - ntc = otc; - nltc = oltc; -@@ -755,7 +758,9 @@ TerminalNewMode (register int f) - #endif - } - #ifndef USE_TERMIO -+#ifdef TIOCLSET - ioctl (tin, TIOCLSET, (char *) &lmode); -+#endif - ioctl (tin, TIOCSLTC, (char *) <c); - ioctl (tin, TIOCSETC, (char *) &tc); - ioctl (tin, TIOCSETN, (char *) &sb); --- -2.23.0.rc1.170.gbd704faa3e - -- cgit v1.2.3