Audrey Dutcher <audrey@xxxxxxxxxx> writes: > On OpenBSD, getdelim() in <stdio.h> is behind __POSIX_VISIBLE >= 200809, > which is in turn locked behind _XOPEN_SOURCE >= 700. Without this patch, > compiling on OpenBSD 7.5 or 7.6, we get implicit declaration errors > when compiling with -Werror=implicit-function-declaration (default in > clang 19). Is this a recent regression? Blaming these two line ranges ... > > [1] https://github.com/openbsd/src/blob/6a403588e27467d1f271831ca1de62a3befea6a0/include/stdio.h#L236-L237 > [2] https://github.com/openbsd/src/blob/6a403588e27467d1f271831ca1de62a3befea6a0/sys/sys/cdefs.h#L299-L302 ... in the OpenBSD repository says they haven't changed for many years, and I am wondering what triggered this all of a sudden. If we know how we used to have no issue, in addition to how we now have issue with the current OpenBSD (which you outlined very well above), and when the situation changed, please add to the proposed log message. That would help people on OpenBSD to decide when they want to upgrade their copy of Git. > Signed-off-by: Audrey Dutcher <audrey@xxxxxxxxxx> > --- > git-compat-util.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/git-compat-util.h b/git-compat-util.h > index e123288e8f..f6902ca2e8 100644 > --- a/git-compat-util.h > +++ b/git-compat-util.h > @@ -195,7 +195,7 @@ DISABLE_WARNING(-Wsign-compare) > !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \ > !defined(__TANDEM) && !defined(__QNX__) && !defined(__MirBSD__) && \ > !defined(__CYGWIN__) > -#define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */ > +#define _XOPEN_SOURCE 700 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 700 for getdelim() */ Also, I am wondering if this "A and B needs only 500 but C needs 600, hence require 600 from all three" is a healthy thing to continue. How bad it would become to split C at least from A and B, to give it an independent status, i.e. leaving the above line as-is, but insert #elif defined(OPENBSD) #define _XOPEN_SOURCE 700 before the existing catchall "#elif !defined(__APPLE__) && !defined(__FreeBSD__) ..." line? If there is somebody stilll on AIX who can test, we might go further by separating it out as well, but that would be a separate project that should be handled outside the scope of adjusting for OpenBSD. Thanks. > #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */ > #endif > #define _ALL_SOURCE 1