From 1ac658f44afc9240f13e9d6c1c9d5a7816299e8e Mon Sep 17 00:00:00 2001 From: Maxim Dounin Date: Mon, 6 May 2024 00:07:33 +0300 Subject: [PATCH] Fixed compilation on NetBSD 10. NetBSD 10 changed struct kevent's udata type from "intptr_t" to "void *", similarly to how it is defined on other systems. This breaks compilation, since intptr_t is assumed on NetBSD. Fix is to limit special intptr_t handling to NetBSD versions before 10.0. To simplify testing, relevant definitions are moved from configure to code (which seems to be the right thing anyway). --- auto/unix | 20 -------------------- src/os/unix/ngx_darwin_config.h | 1 + src/os/unix/ngx_freebsd_config.h | 1 + src/os/unix/ngx_posix_config.h | 10 ++++++++++ 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/auto/unix b/auto/unix index f29e69c61..b4165d9ba 100644 --- a/auto/unix +++ b/auto/unix @@ -129,26 +129,6 @@ if test -z "$NGX_KQUEUE_CHECKED"; then fi -if [ "$NGX_SYSTEM" = "NetBSD" ]; then - - # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t" - - cat << END >> $NGX_AUTO_CONFIG_H - -#define NGX_KQUEUE_UDATA_T - -END - -else - cat << END >> $NGX_AUTO_CONFIG_H - -#define NGX_KQUEUE_UDATA_T (void *) - -END - -fi - - ngx_feature="crypt()" ngx_feature_name= ngx_feature_run=no diff --git a/src/os/unix/ngx_darwin_config.h b/src/os/unix/ngx_darwin_config.h index 0dfe63374..37f59fac9 100644 --- a/src/os/unix/ngx_darwin_config.h +++ b/src/os/unix/ngx_darwin_config.h @@ -74,6 +74,7 @@ #if (NGX_HAVE_KQUEUE) #include +#define NGX_KQUEUE_UDATA_T (void *) #endif diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h index c641108b7..2cbd85b73 100644 --- a/src/os/unix/ngx_freebsd_config.h +++ b/src/os/unix/ngx_freebsd_config.h @@ -85,6 +85,7 @@ #if (NGX_HAVE_KQUEUE) #include +#define NGX_KQUEUE_UDATA_T (void *) #endif diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h index 2a8c413e0..bdd62591e 100644 --- a/src/os/unix/ngx_posix_config.h +++ b/src/os/unix/ngx_posix_config.h @@ -124,7 +124,17 @@ #if (NGX_HAVE_KQUEUE) + #include + +/* NetBSD before 10.0 incompatibly defines kevent.udata as "intptr_t" */ + +#if (defined __NetBSD__ && __NetBSD_Version__ < 999001500) +#define NGX_KQUEUE_UDATA_T +#else +#define NGX_KQUEUE_UDATA_T (void *) +#endif + #endif