Loading...
--- Libc/Libc-1725.40.4/gen/compat.5
+++ /dev/null
@@ -1,137 +0,0 @@
-.Dd July 21, 2020
-.Os Darwin
-.Dt COMPAT 5
-.Sh NAME
-.Nm compat
-.Nd manipulate compatibility settings
-.Sh SYNOPSIS
-.Ev COMMAND_MODE=legacy|unix2003
-.br
-.Ev SYSTEM_VERSION_COMPAT=1
-.Lp
-.Fd #define _POSIX_C_SOURCE
-.Fd #define _DARWIN_C_SOURCE
-.Fd #define _NONSTD_SOURCE
-.Fd defined(__LP64__)
-.Lp
-.In sys/cdefs.h
-.Fd defined(_DARWIN_FEATURE_UNIX_CONFORMANCE)
-.Sh DESCRIPTION
-Setting the environment variable
-.Ev COMMAND_MODE
-to the value legacy causes utility programs to behave as closely to
-Mac OS X 10.3's utility programs as possible. When in this mode all of 10.3's
-flags are accepted, and in some cases extra flags are accepted, but no flags
-that were used in 10.3 will have been removed or changed in meaning. Any
-behavioral changes in this mode are documented in the LEGACY sections of the
-individual utilities.
-.Pp
-Setting the environment variable
-.Ev COMMAND_MODE
-to the value unix2003 causes utility programs to obey the
-.St -susv3
-standards even if doing so would alter the behavior of flags used in 10.3.
-.Pp
-The value of
-.Ev COMMAND_MODE
-is case insensitive and if it is unset or set to something other than legacy
-or unix2003 it behaves as if it were set to unix2003.
-.Pp
-Setting the environment variable
-.Ev SYSTEM_VERSION_COMPAT
-to 1 causes the system version to be reported as 10.16 when running on macOS 11 or later.
-.Sh COMPILATION
-Defining
-.Dv _NONSTD_SOURCE
-will result in a compilation error.
-This is no longer supported.
-.Pp
-Defining
-.Dv _POSIX_C_SOURCE
-or
-.Dv _DARWIN_C_SOURCE
-causes library and kernel calls to conform to the SUSv3
-standards even if doing so would alter the behavior of functions used in 10.3.
-Defining
-.Dv _POSIX_C_SOURCE
-also removes functions, types, and other interfaces that are not part of SUSv3
-from the normal C namespace, unless
-.Dv _DARWIN_C_SOURCE
-is also defined (i.e.,
-.Dv _DARWIN_C_SOURCE
-is
-.Dv _POSIX_C_SOURCE
-with non-POSIX extensions).
-In any of these cases, the
-.Dv _DARWIN_FEATURE_UNIX_CONFORMANCE
-feature macro will be defined to the SUS conformance level (it is undefined
-otherwise).
-.Pp
-Starting in Mac OS X 10.5, if none of the macros
-.Dv _NONSTD_SOURCE ,
-.Dv _POSIX_C_SOURCE
-or
-.Dv _DARWIN_C_SOURCE
-are defined, and the environment variable
-.Ev MACOSX_DEPLOYMENT_TARGET
-is either undefined or set to 10.5 or greater (or equivalently, the
-.Xr clang 1
-option
-.Fl mmacosx-version-min
-is either not specified or set to 10.5 or greater), then UNIX conformance will
-be on by default, and non-POSIX extensions will also be available
-(this is the equivalent of defining
-.Dv _DARWIN_C_SOURCE ) .
-.Pp
-In order to provide both legacy and conformance versions of functions, two
-versions of affected functions are provided. Legacy variants have symbol names
-with no suffix in order to maintain ABI compatibility. Conformance versions
-have a $UNIX2003 suffix appended to their symbol name. These $UNIX2003
-suffixes are automatically appended by the compiler tool-chain and should not
-be used directly.
-.Pp
-All currently supported platforms only have conformance variants available and
-do not have the legacy $UNIX2003 suffix.
-.Pp
-.TS
-center;
-c c | c c c
-c c | c c c
-li c | c c c
-li c | c s s
-li c | c c c
-li c | c c c.
-=
-user defines deployment namespace conformance suffix
- target
-_
-(none) (any) full SUSv3 conformance (none)
-_NONSTD_SOURCE (any) (error)
-_DARWIN_C_SOURCE (any) full SUSv3 conformance (none)
-_POSIX_C_SOURCE (any) strict SUSv3 conformance (none)
-_
-.TE
-.Sh STANDARDS
-With COMMAND_MODE set to anything other than legacy, utility functions conform to
-.St -susv3 .
-.Pp
-With
-.Dv _POSIX_C_SOURCE
-or
-.Dv _DARWIN_C_SOURCE
-system and library calls conform to
-.St -susv3 .
-.Sh BUGS
-Different parts of a program can be compiled with different compatibility
-settings.
-The resultant program will normally work as expected, for example a regex
-created by the SUSv3
-.Fn regcomp 3
-can be passed to the legacy
-.Fn regfree 3
-with no unexpected results. Some cases are less clear cut, for example
-what does the programmer intend when they use the SUSv3
-.Fn regcomp 3
-to compile a regex, but the legacy
-.Fn regexec 3
-to execute it? Any interpretation will surprise someone.