On Fri, 12 Feb 2016, Konstantin Belousov wrote:
On Sat, Feb 13, 2016 at 03:56:42AM +1100, Bruce Evans wrote:
Our Standard C namespace is a subset of the POSIX namespace. Most
Standard C headers are (were) careful about this. There aren't many
Standard C headers or versions of Standard C or large variations in the
versions, so this is relatively easy to do.
We also attempt to use POSIX visibility ifdefs. This is not done so
carefully, and has more bugs due to more variations. But <signal.h>
does it fairly carefully. It has ifdefs for XSI, POSIX >= 2001,
I find the ifdefs useful for seeing when POSIX introduced a feature
but not for actual use to compile under an old standard.
So you are about the ANSI C & non-POSIX compilation environment ?
Do you mean the following:
diff --git a/include/signal.h b/include/signal.h
index 33be55c..31cded7 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -36,8 +36,10 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
#include <sys/signal.h>
+#if __POSIX_VISIBLE || __XSI_VISIBLE
#include <machine/ucontext.h>
#include <sys/_ucontext.h>
+#endif
#if __BSD_VISIBLE
/*
I can change #if __POSIX_VISIBLE to some version cap, if you prefer.
It needs a version number to be correct. Plain __POSIX_VISIBLE means
all versions. __POSIX_VISBLE >= 200112 is probably good enough for
the POSIX part. I don't know the correct number for XSI. Perhaps
it can be simply omitted. _XOPEN_SOURCE >= 600 gives
__XSI_VISIBLE >= 600 && _POSIX_C_SOURCE >= 200112. So __XSI_VISIBLE
in the above is only to support XSI before 2001. We only support 1
XSI before that -- #500 which corresponds to 1996 POSIX. Very likely
XSI did have ucontext_t then, so the above ifdef is correct. It is
just hard to read. Easier than google hits though :-). I found a
gnu man page about getcontext() being in SVID but couldn't easily
find the history.
Bruce
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"