Use gnulib select module.
Collin Funk <[email protected]> Sun, 26 May 2024 00:21:59 -0700
| Newsgroups | gmane.comp.gnu.inetutils.bugs |
|---|---|
| Message-ID | <[email protected]> |
I haven't pushed this patch yet, any comments? The 'select' gnulib
module is mostly for Windows but also fixes one FreeBSD bug [1]. If
any other bugs are found they should be fixed in gnulib. Also I don't
think Windows support is impossible in Inetutils, so this is just one
step that will probably get done anyways.
The patch adds the module and adds the library to programs who use
'select'.
$ gnulib-tool --extract-link-directive select
$(SELECT_LIB)
Also, I was having a look at alot of the 'gettimeofday' calls. It is
2024 so I think that it would be nice to support nanosecond-resolution
time. Any thoughts on this idea?
I guess in some situations it doesn't matter, like ping, since ICMP
echo's use milliseconds (RFC 792, page 16-17) [2]. Even then the
'timespec' module has functions to perform arthritic on
struct timespec's. We do the same on struct timeval's but the gnulib
versions are more robust with overflow checking and such [3].
Collin
[1] https://www.gnu.org/software/gnulib/manual/html_node/select.html
[2] https://datatracker.ietf.org/doc/html/rfc792
[3] https://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/timespec.h
0001-Use-gnulib-select-module.patch
(text/x-patch, 4.3 KB)
From 449c9ad956b4d03953d6b2b97496cc06fabb10ce Mon Sep 17 00:00:00 2001 From: Collin Funk <[email protected]> Date: Sat, 25 May 2024 23:55:01 -0700 Subject: [PATCH] Use gnulib select module. * ftp/Makefile.am (LDADD): Add $(SELECT_LIB). * ping/Makefile.am (LDADD): Likewise. * src/Makefile.am (rexec_LDADD, rsh_LADD, traceroute_LDADD) (inetd_LDADD, rexecd_LDADD, rlogind_LDADD, rshd_LDADD): Likewise. * talk/Makefile.am (LDADD): Likewise. * telnet/Makefile.am (LDADD): Likewise. * telnetd/Makefile.am (LDADD): Likewise. --- bootstrap.conf | 1 + ftp/Makefile.am | 2 +- ping/Makefile.am | 2 +- src/Makefile.am | 12 +++++++----- talk/Makefile.am | 3 ++- telnet/Makefile.am | 3 ++- telnetd/Makefile.am | 3 ++- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 67fffd05..7ffc0be6 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -83,6 +83,7 @@ readme-release readutmp realloc-gnu regex +select setenv sethostname signal diff --git a/ftp/Makefile.am b/ftp/Makefile.am index 0875eb49..e1413737 100644 --- a/ftp/Makefile.am +++ b/ftp/Makefile.am @@ -26,7 +26,7 @@ AM_CPPFLAGS = \ LDADD = \ $(iu_LIBRARIES) \ $(LIBREADLINE) $(LIBHISTORY) \ - $(LIBIDN) + $(LIBIDN) $(SELECT_LIB) bin_PROGRAMS = $(ftp_BUILD) diff --git a/ping/Makefile.am b/ping/Makefile.am index 93d4fa17..fb8c1a44 100644 --- a/ping/Makefile.am +++ b/ping/Makefile.am @@ -23,7 +23,7 @@ AM_CPPFLAGS = \ LDADD = \ $(iu_LIBRARIES) \ - $(LIBIDN) + $(LIBIDN) $(SELECT_LIB) bin_PROGRAMS = $(ping_BUILD) $(ping6_BUILD) diff --git a/src/Makefile.am b/src/Makefile.am index c355196f..c5572d80 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -61,6 +61,7 @@ EXTRA_PROGRAMS += rcp bin_PROGRAMS += $(rexec_BUILD) rexec_SOURCES = rexec.c +rexec_LDADD = $(SELECT_LIB) EXTRA_PROGRAMS += rexec bin_PROGRAMS += $(rlogin_BUILD) @@ -70,7 +71,7 @@ EXTRA_PROGRAMS += rlogin bin_PROGRAMS += $(rsh_BUILD) rsh_SOURCES = rsh.c -rsh_LDADD = $(LDADD) $(LIBAUTH) +rsh_LDADD = $(LDADD) $(LIBAUTH) $(SELECT_LIB) $(SELECT_LIB) EXTRA_PROGRAMS += rsh bin_PROGRAMS += $(tftp_BUILD) @@ -80,26 +81,27 @@ EXTRA_PROGRAMS += tftp bin_PROGRAMS += $(traceroute_BUILD) traceroute_SOURCES = traceroute.c -traceroute_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) $(LIBIDN) +traceroute_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) $(LIBIDN) $(SELECT_LIB) EXTRA_PROGRAMS += traceroute inetdaemon_PROGRAMS += $(inetd_BUILD) inetd_SOURCES = inetd.c +inetd_LDADD = $(SELECT_LIB) EXTRA_PROGRAMS += inetd inetdaemon_PROGRAMS += $(rexecd_BUILD) rexecd_SOURCES = rexecd.c -rexecd_LDADD = $(LDADD) $(LIBCRYPT) $(LIBPAM) $(LIBDL) +rexecd_LDADD = $(LDADD) $(LIBCRYPT) $(LIBPAM) $(LIBDL) $(SELECT_LIB) EXTRA_PROGRAMS += rexecd inetdaemon_PROGRAMS += $(rlogind_BUILD) rlogind_SOURCES = rlogind.c -rlogind_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(LIBWRAP) +rlogind_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(LIBWRAP) $(SELECT_LIB) EXTRA_PROGRAMS += rlogind inetdaemon_PROGRAMS += $(rshd_BUILD) rshd_SOURCES = rshd.c -rshd_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) +rshd_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(SELECT_LIB) EXTRA_PROGRAMS += rshd inetdaemon_PROGRAMS += $(syslogd_BUILD) diff --git a/talk/Makefile.am b/talk/Makefile.am index cfaa8f11..f5716455 100644 --- a/talk/Makefile.am +++ b/talk/Makefile.am @@ -22,7 +22,8 @@ AM_CPPFLAGS = \ LDADD = \ $(iu_LIBRARIES) \ - $(LIBCURSES) $(LIBIDN) + $(LIBCURSES) $(LIBIDN) \ + $(SELECT_LIB) bin_PROGRAMS = $(talk_BUILD) diff --git a/telnet/Makefile.am b/telnet/Makefile.am index c13c9275..6f52e199 100644 --- a/telnet/Makefile.am +++ b/telnet/Makefile.am @@ -28,7 +28,8 @@ AM_CPPFLAGS = \ LDADD = \ $(top_builddir)/libtelnet/libtelnet.a \ $(iu_LIBRARIES) \ - $(LIBTERMCAP) $(LIBCRYPT) $(LIBAUTH) $(LIBIDN) + $(LIBTERMCAP) $(LIBCRYPT) $(LIBAUTH) $(LIBIDN) \ + $(SELECT_LIB) bin_PROGRAMS = $(telnet_BUILD) diff --git a/telnetd/Makefile.am b/telnetd/Makefile.am index a5aee63f..ab0c4ded 100644 --- a/telnetd/Makefile.am +++ b/telnetd/Makefile.am @@ -27,7 +27,8 @@ AM_CPPFLAGS = \ LDADD = \ $(top_builddir)/libtelnet/libtelnet.a \ $(iu_LIBRARIES) \ - $(LIBTERMCAP) $(LIBUTIL) $(PTY_LIB) $(LIBCRYPT) $(LIBAUTH) + $(LIBTERMCAP) $(LIBUTIL) $(PTY_LIB) $(LIBCRYPT) $(LIBAUTH) \ + $(SELECT_LIB) if ENABLE_hstrerror LDADD += $(LIBRESOLV) -- 2.45.1