changeset 1001:b01f5d65d62a

misc: various fixes for glibc
author David Demelier <markand@malikania.fr>
date Sat, 13 Feb 2021 10:09:00 +0100
parents c2cb87b19307
children ec5461750efd
files extern/libcompat/CMakeLists.txt extern/libduktape/CMakeLists.txt irccd/CMakeLists.txt irccd/conf.y irccd/dl-plugin.c irccd/jsapi-directory.c irccd/transport.c lib/irccd/channel.c lib/irccd/conn.c lib/irccd/irccd.c lib/irccd/log.c lib/irccd/subst.c tests/test-plugin-tictactoe.c
diffstat 13 files changed, 40 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/extern/libcompat/CMakeLists.txt	Fri Feb 12 17:51:30 2021 +0100
+++ b/extern/libcompat/CMakeLists.txt	Sat Feb 13 10:09:00 2021 +0100
@@ -24,6 +24,7 @@
 include(CheckFunctionExists)
 include(CheckIncludeFile)
 include(CheckStructHasMember)
+include(CheckSymbolExists)
 
 set(
 	SOURCES
@@ -145,6 +146,26 @@
 		FILES ${libirccd-compat_SOURCE_DIR}/extern/queue/sys/queue.h
 		DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd/extern/sys
 	)
+else ()
+	#
+	# Make sure it has at least _SAFE macros because some implementations
+	# may provide terribly outdated queue.h (e.g. glibc).
+	#
+	check_symbol_exists(LIST_FOREACH_SAFE sys/queue.h COMPAT_HAVE_LIST_FOREACH_SAFE)
+	check_symbol_exists(SLIST_FOREACH_SAFE sys/queue.h COMPAT_HAVE_SLIST_FOREACH_SAFE)
+	check_symbol_exists(STAILQ_FOREACH_SAFE sys/queue.h COMPAT_HAVE_STAILQ_FOREACH_SAFE)
+	check_symbol_exists(TAILQ_FOREACH_SAFE sys/queue.h COMPAT_HAVE_TAILQ_FOREACH_SAFE)
+
+	if (NOT COMPAT_HAVE_LIST_FOREACH_SAFE OR
+	    NOT COMPAT_HAVE_SLIST_FOREACH_SAFE OR
+	    NOT COMPAT_HAVE_STAILQ_FOREACH_SAFE OR
+	    NOT COMPAT_HAVE_TAILQ_FOREACH_SAFE)
+		target_include_directories(
+			libirccd-compat
+			PUBLIC
+				$<BUILD_INTERFACE:${libirccd-compat_SOURCE_DIR}/extern/queue>
+		)
+	endif ()
 endif ()
 
 # Math library
--- a/extern/libduktape/CMakeLists.txt	Fri Feb 12 17:51:30 2021 +0100
+++ b/extern/libduktape/CMakeLists.txt	Sat Feb 13 10:09:00 2021 +0100
@@ -24,6 +24,8 @@
 	PUBLIC
 		$<BUILD_INTERFACE:${libirccd-duktape_SOURCE_DIR}>
 )
+target_link_libraries(libirccd-duktape m)
+
 if (BUILD_SHARED_LIBS)
 	target_compile_definitions(libirccd-duktape PUBLIC DUK_F_DLL_BUILD)
 endif ()
--- a/irccd/CMakeLists.txt	Fri Feb 12 17:51:30 2021 +0100
+++ b/irccd/CMakeLists.txt	Sat Feb 13 10:09:00 2021 +0100
@@ -75,7 +75,7 @@
 )
 
 if (IRCCD_WITH_JS)
-	target_link_libraries(irccd-fe libirccd-duktape)
+	target_link_libraries(irccd-fe libirccd-duktape -pthread ${CMAKE_DL_LIBS})
 endif ()
 
 flex_target(irccd-lex ${irccd_SOURCE_DIR}/lex.l ${irccd_BINARY_DIR}/lex.c)
--- a/irccd/conf.y	Fri Feb 12 17:51:30 2021 +0100
+++ b/irccd/conf.y	Sat Feb 13 10:09:00 2021 +0100
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <irccd/compat.h>
 #include <irccd/irccd.h>
 #include <irccd/log.h>
 #include <irccd/rule.h>
--- a/irccd/dl-plugin.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/irccd/dl-plugin.c	Sat Feb 13 10:09:00 2021 +0100
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <irccd/compat.h>
 #include <irccd/config.h>
 #include <irccd/log.h>
 #include <irccd/plugin.h>
--- a/irccd/jsapi-directory.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/irccd/jsapi-directory.c	Sat Feb 13 10:09:00 2021 +0100
@@ -30,6 +30,8 @@
 
 #include <duktape.h>
 
+#include <irccd/compat.h>
+
 #include "jsapi-system.h"
 
 enum {
--- a/irccd/transport.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/irccd/transport.c	Sat Feb 13 10:09:00 2021 +0100
@@ -27,8 +27,8 @@
 #include <sys/un.h>
 #include <unistd.h>
 
-#include <config.h>
-
+#include <irccd/compat.h>
+#include <irccd/config.h>
 #include <irccd/log.h>
 #include <irccd/transport.h>
 #include <irccd/util.h>
--- a/lib/irccd/channel.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/lib/irccd/channel.c	Sat Feb 13 10:09:00 2021 +0100
@@ -21,6 +21,7 @@
 #include <string.h>
 
 #include "channel.h"
+#include "compat.h"
 #include "util.h"
 
 static inline struct irc_channel_user *
--- a/lib/irccd/conn.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/lib/irccd/conn.c	Sat Feb 13 10:09:00 2021 +0100
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include "compat.h"
 #include "conn.h"
 #include "util.h"
 
--- a/lib/irccd/irccd.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/lib/irccd/irccd.c	Sat Feb 13 10:09:00 2021 +0100
@@ -16,8 +16,6 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <config.h>
-
 #include <sys/wait.h>
 #include <assert.h>
 #include <ctype.h>
@@ -29,6 +27,8 @@
 #include <string.h>
 #include <unistd.h>
 
+#include "compat.h"
+#include "config.h"
 #include "event.h"
 #include "irccd.h"
 #include "log.h"
--- a/lib/irccd/log.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/lib/irccd/log.c	Sat Feb 13 10:09:00 2021 +0100
@@ -54,10 +54,9 @@
 static void
 finalizer_files(void)
 {
+	/* Out and err are the same. */
 	if (out)
 		fclose(out);
-	if (err)
-		fclose(err);
 }
 
 static void
--- a/lib/irccd/subst.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/lib/irccd/subst.c	Sat Feb 13 10:09:00 2021 +0100
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "compat.h"
 #include "subst.h"
 #include "util.h"
 
--- a/tests/test-plugin-tictactoe.c	Fri Feb 12 17:51:30 2021 +0100
+++ b/tests/test-plugin-tictactoe.c	Sat Feb 13 10:09:00 2021 +0100
@@ -16,13 +16,13 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-
 #include <err.h>
 
 #define GREATEST_USE_ABBREVS 0
 #include <greatest.h>
 
 #include <irccd/compat.h>
+#include <irccd/irccd.h>
 #include <irccd/js-plugin.h>
 #include <irccd/log.h>
 #include <irccd/plugin.h>
@@ -69,7 +69,7 @@
 	if (!plugin)
 		errx(1, "could not load plugin");
 
-	irc_log_to_console();
+	irc_bot_init();
 	irc_server_incref(server);
 	irc_plugin_set_template(plugin, "draw", "draw=#{channel}:#{command}:#{nickname}:#{plugin}:#{server}");
 	irc_plugin_set_template(plugin, "invalid", "invalid=#{channel}:#{command}:#{nickname}:#{origin}:#{plugin}:#{server}");
@@ -83,7 +83,7 @@
 	irc_server_join(server, "#tictactoe", NULL);
 	irc_channel_add(LIST_FIRST(&server->channels), "a", 0, 0);
 	irc_channel_add(LIST_FIRST(&server->channels), "b", 0, 0);
-	
+
 	/* Fake server connected to send data. */
 	server->state = IRC_SERVER_STATE_CONNECTED;
 }
@@ -261,7 +261,7 @@
 
 	play("a 1");
 	GREATEST_ASSERT_STR_EQ("", server->conn.out);
-	
+
 	GREATEST_PASS();
 }