Hi Bruno,

Bruno Haible <br...@clisp.org> writes:

> Yes. You can, for example, use your GitHub ci-scratch repository to
> collect the data about various OSes in their current version, and
> condense a unit test from that. Then commit that, and we can work
> out the situation on AIX, Haiku, and older OS versions afterwards.

Good idea.

Before improving the tests, I found two errors using ci-scratch.

1. I prematurely changed the documentation. The servent module was not
depending on netdb-h, so the header was not generated. This made the
test fail on Windows.

2. The test uses htons from arpa/inet.h. This file is missing on Windows
without the htonl module (which depends on arpa-inet-h).

Fixed those two issues with the attached patches.

Now all tests pass except for MSVC (32). The error I see there is:

    D:\a\ci-scratch\ci-scratch\testdir1\gltests\test-servent.c(25): error 
C2440: 'initializing': cannot convert from 'servent *(__stdcall *)(const char 
*,const char *)' to 'servent *(__cdecl *)(const char *,const char *)'
    D:\a\ci-scratch\ci-scratch\testdir1\gltests\test-servent.c(27): error 
C2440: 'initializing': cannot convert from 'servent *(__stdcall *)(int,const 
char *)' to 'servent *(__cdecl *)(int,const char *)'

This is fairly simple __stdcall vs. __cdecl. I know for some modules
like inet_ntop and inet_pton we override the functions because of this
declaration mismatch. But in tests/test-getaddrinfo.c we just disable
the signature test. What is the correct option in this case?

Thanks,
Collin

>From 020ebd643d58153f1fbab8faa90fb09899950bc4 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Tue, 31 Dec 2024 19:43:28 -0800
Subject: [PATCH 1/2] servent: Make sure netdb.h is generated.

* modules/servent (Depends-on): Add netdb-h.
---
 ChangeLog       | 5 +++++
 modules/servent | 1 +
 2 files changed, 6 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 6f24603e3e..489d0d985c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-12-31  Collin Funk  <collin.fu...@gmail.com>
+
+	servent: Make sure netdb.h is generated.
+	* modules/servent (Depends-on): Add netdb-h.
+
 2024-12-31  Bruno Haible  <br...@clisp.org>
 
 	getcwd: Return "/bin" instead of "//bin" on Adélie Linux.
diff --git a/modules/servent b/modules/servent
index e2b0f9646b..1c2412e72b 100644
--- a/modules/servent
+++ b/modules/servent
@@ -10,6 +10,7 @@ m4/servent.m4
 
 Depends-on:
 sys_socket-h
+netdb-h
 
 configure.ac:
 gl_SERVENT
-- 
2.47.1

>From cbe5f768350abc89d988ab489dc89d2fd64772fd Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Tue, 31 Dec 2024 19:51:26 -0800
Subject: [PATCH 2/2] servent tests: Fix failure due to missing htons
 declaration.

* modules/servent-tests (Depends-on): Add htonl.
(Makefile.am): Link program to $(HTONL_LIB).
* tests/test-servent.c (main): Fix formatting and typo.
---
 ChangeLog             | 5 +++++
 modules/servent-tests | 3 ++-
 tests/test-servent.c  | 4 ++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 489d0d985c..2f00298d38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2024-12-31  Collin Funk  <collin.fu...@gmail.com>
 
+	servent tests: Fix failure due to missing htons declaration.
+	* modules/servent-tests (Depends-on): Add htonl.
+	(Makefile.am): Link program to $(HTONL_LIB).
+	* tests/test-servent.c (main): Fix formatting and typo.
+
 	servent: Make sure netdb.h is generated.
 	* modules/servent (Depends-on): Add netdb-h.
 
diff --git a/modules/servent-tests b/modules/servent-tests
index 90bdc63809..98ef534879 100644
--- a/modules/servent-tests
+++ b/modules/servent-tests
@@ -3,10 +3,11 @@ tests/test-servent.c
 tests/signature.h
 
 Depends-on:
+htonl
 
 configure.ac:
 
 Makefile.am:
 TESTS += test-servent
 check_PROGRAMS += test-servent
-test_servent_LDADD = $(LDADD) $(SERVENT_LIB)
+test_servent_LDADD = $(LDADD) $(SERVENT_LIB) $(HTONL_LIB)
diff --git a/tests/test-servent.c b/tests/test-servent.c
index 5a9997b516..275fe883b2 100644
--- a/tests/test-servent.c
+++ b/tests/test-servent.c
@@ -38,9 +38,9 @@ main (void)
   if (result == NULL)
     fputs ("getservbyname failed\n", stderr);
 
-  result = getservbyport (htons(53), "tcp");
+  result = getservbyport (htons (53), "tcp");
   if (result == NULL)
-    fputs ("getportbyname failed\n", stderr);
+    fputs ("getservbyport failed\n", stderr);
 
   return 0;
 }
-- 
2.47.1

Reply via email to