From 8b80c6ba24a7fea63a24a9b169d1284eedfa8457 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Fri, 31 Jan 2025 15:07:24 +0100 Subject: [PATCH] Move GSSAPI includes into its own header Discussion: https://postgr.es/m/20240708173204.3f3xjilglx5wuzx6@awork3.anarazel.d --- contrib/sslinfo/sslinfo.c | 11 ------- src/include/libpq/be-gssapi-common.h | 8 +----- src/include/libpq/libpq-be.h | 6 +--- src/include/libpq/pg-gssapi.h | 43 ++++++++++++++++++++++++++++ src/interfaces/libpq/libpq-int.h | 8 +----- 5 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 src/include/libpq/pg-gssapi.h diff --git a/contrib/sslinfo/sslinfo.c b/contrib/sslinfo/sslinfo.c index 5fd46b987413..30cae0bb985e 100644 --- a/contrib/sslinfo/sslinfo.c +++ b/contrib/sslinfo/sslinfo.c @@ -19,17 +19,6 @@ #include "miscadmin.h" #include "utils/builtins.h" -/* - * On Windows, includes a #define for X509_NAME, which breaks our - * ability to use OpenSSL's version of that symbol if is pulled - * in after ... and, at least on some builds, it is. We - * can't reliably fix that by re-ordering #includes, because libpq/libpq-be.h - * #includes . Instead, just zap the #define again here. - */ -#ifdef X509_NAME -#undef X509_NAME -#endif - PG_MODULE_MAGIC; static Datum X509_NAME_field_to_text(X509_NAME *name, text *fieldName); diff --git a/src/include/libpq/be-gssapi-common.h b/src/include/libpq/be-gssapi-common.h index 72f05748b6d3..bfe8d7656ede 100644 --- a/src/include/libpq/be-gssapi-common.h +++ b/src/include/libpq/be-gssapi-common.h @@ -16,13 +16,7 @@ #ifdef ENABLE_GSS -#if defined(HAVE_GSSAPI_H) -#include -#include -#else -#include -#include -#endif +#include "libpq/pg-gssapi.h" extern void pg_GSS_error(const char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat); diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h index 7fe92b15477e..508a6979c995 100644 --- a/src/include/libpq/libpq-be.h +++ b/src/include/libpq/libpq-be.h @@ -28,11 +28,7 @@ #include #ifdef ENABLE_GSS -#if defined(HAVE_GSSAPI_H) -#include -#else -#include -#endif /* HAVE_GSSAPI_H */ +#include "libpq/pg-gssapi.h" #endif /* ENABLE_GSS */ #ifdef ENABLE_SSPI diff --git a/src/include/libpq/pg-gssapi.h b/src/include/libpq/pg-gssapi.h new file mode 100644 index 000000000000..f442691c91cb --- /dev/null +++ b/src/include/libpq/pg-gssapi.h @@ -0,0 +1,43 @@ +/*------------------------------------------------------------------------- + * + * pg-gssapi.h + * Definitions for including GSSAPI headers + * + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/libpq/pg-gssapi.h + * + *------------------------------------------------------------------------- + */ + +#ifndef PG_GSSAPI_H +#define PG_GSSAPI_H + +#ifdef ENABLE_GSS + +/* IWYU pragma: begin_exports */ +#if defined(HAVE_GSSAPI_H) +#include +#include +#else +#include +#include +#endif +/* IWYU pragma: end_exports */ + +/* +* On Windows, includes a #define for X509_NAME, which breaks our +* ability to use OpenSSL's version of that symbol if is pulled +* in after ... and, at least on some builds, it is. We +* can't reliably fix that by re-ordering #includes, because libpq/libpq-be.h +* #includes . Instead, just zap the #define again here. +*/ +#ifdef X509_NAME +#undef X509_NAME +#endif + +#endif /* ENABLE_GSS */ + +#endif /* PG_GSSAPI_H */ + diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index f36f7f19d585..411398922592 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -44,15 +44,9 @@ #include "fe-auth-sasl.h" #include "pqexpbuffer.h" -/* IWYU pragma: begin_exports */ #ifdef ENABLE_GSS -#if defined(HAVE_GSSAPI_H) -#include -#else -#include -#endif +#include "libpq/pg-gssapi.h" #endif -/* IWYU pragma: end_exports */ #ifdef ENABLE_SSPI #define SECURITY_WIN32