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
From 449c9ad956b4d03953d6b2b97496cc06fabb10ce Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
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

Reply via email to