From: Arran Cudbard-Bell Date: Mon, 24 Jan 2022 18:20:34 +0000 (-0600) Subject: Use new libkqueue EVFILT_LIBKQUEUE version interface X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a6f7d0cdb54d863ff652902808f5e31b7097c37;p=thirdparty%2Ffreeradius-server.git Use new libkqueue EVFILT_LIBKQUEUE version interface This lets us retrieve the real version at runtime. --- diff --git a/src/lib/server/dependency.c b/src/lib/server/dependency.c index 61afa0cc25..0c57343a5c 100644 --- a/src/lib/server/dependency.c +++ b/src/lib/server/dependency.c @@ -317,17 +317,25 @@ void dependency_version_numbers_init(CONF_SECTION *cs) # endif #endif -#ifdef LIBKQUEUE_VERSION_STRING +#ifdef EVFILT_LIBKQUEUE { - char const *libkqueue_version = LIBKQUEUE_VERSION_STRING -# ifdef LIBKQUEUE_VERSION_COMMIT - " (git #"LIBKQUEUE_VERSION_COMMIT")" -# endif -# ifdef LIBKQUEUE_VERSION_DATE - " ("LIBKQUEUE_VERSION_DATE") retrieved at build time" -# endif - ; - dependency_version_number_add(cs, "libkqueue", libkqueue_version); + int kqfd, ret; + struct kevent kev, receipt; + + kqfd = kqueue(); + if (kqfd < 0) { + kqueue_error: + dependency_version_number_add(cs, "libkqueue", fr_syserror(errno)); + goto kqueue_done; + } + + EV_SET(&kev, 0, EVFILT_LIBKQUEUE, EV_ADD, NOTE_VERSION_STR, 0, NULL); + ret = kevent(kqfd, &kev, 1, &receipt, 1, &(struct timespec){}) ; + close(kqfd); + if (ret != 1) goto kqueue_error; + + dependency_version_number_add(cs, "libkqueue", (char *)receipt.udata); +kqueue_done: } #endif }