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