The following feature-test macros are used to control the Curses
and Socket subsets of the C RTL library:
o _BSD44_CURSES
This macro selects the Curses package from the 4.4BSD Berkeley
Software Distribution.
o _VMS_CURSES
This macro selects a Curses package based on the VAX C
compiler. This is the default Curses package.
o _SOCKADDR_LEN
This macro is used to select 4.4BSD-compatible and XPG4 V2-
compatible socket interfaces. These interfaces require support
in your underlying TCP/IP software. Contact your TCP/IP vendor
to inquire if the version of TCP/IP software you run supports
4.4BSD sockets.
Strict XPG4 V2 compliance requires the 4.4BSD-compatible socket
interface. Therefore, if _XOPEN_SOURCE_EXTENDED is defined on
OpenVMS Version 7.0 or higher, _SOCKADDR_LEN is defined to be 1.
The following examples help clarify the use of these macros:
o Symbolic constants like AE, AL, AS, AM, BC, which represent
pointers to termcap fields used by the BSD Curses package, are
only visible in <curses.h> if _BSD44_CURSES is defined.
o The <socket.h> header file defines a 4.4BSD sockaddr structure
only if _SOCKADDR_LEN or _XOPEN_SOURCE_EXTENDED is defined.
Otherwise, <socket.h> defines a pre-4.4BSD sockaddr structure.
If _SOCKADDR_LEN is defined and _XOPEN_SOURCE_EXTENDED is not
defined,
The <socket.h> header file also defines an osockaddr
structure, which is a 4.3BSD sockaddr structure to be used
for compatibility purposes. Since XPG4 V2 does not define
an osockaddr structure, it is not visible in _XOPEN_SOURCE_
EXTENDED mode.