Loading...
--- Libc/Libc-1725.40.4/gen/compat.5
+++ Libc/Libc-391/gen/compat.5
@@ -1,4 +1,4 @@
-.Dd July 21, 2020
+.Dd October 7, 2004
.Os Darwin
.Dt COMPAT 5
.Sh NAME
@@ -6,131 +6,69 @@
.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 _APPLE_C_SOURE
.Fd #define _NONSTD_SOURCE
-.Fd defined(__LP64__)
-.Lp
-.In sys/cdefs.h
-.Fd defined(_DARWIN_FEATURE_UNIX_CONFORMANCE)
+.Fd #define __LP64__
.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.
+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
+to the value unix03 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.
+.Ev COMMAND_MODE's
+value is case insensitive and if it is unset or set to something other than legacy or unix03 it behaves as if it were set to unix03.
.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.
+causes library and kernel calls to behave as closely to Mac OS X 10.3's library and kernel calls as possible. Any behavioral changes in this mode are documented in the LEGACY sections of the individual function calls.
.Pp
-Defining
+Defining any of
+.Dv _POSIX_C_SOURCE,
+.Dv _APPLE_C_SOURE,
+or
+.Dv __LP64__
+causes library and kernel calls to conform to
+.St -susv3
+standards even if doing so would alter the behavior of functions used in 10.3. 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).
+also removes functions, types, and other interfaces that are not part of
+.St -susv3
+from the normal C namespace, while
+.Dv _APPLE_C_SOURE
+does not.
.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
+Failing to define any of those symbols currently acts as if you have defined
+.Dv _NONSTD_SOURCE
+but it is expected that in a future OS X release the default behavior will change to be as if
+.Dv _APPLE_C_SOURE
+were defined.
.Sh STANDARDS
-With COMMAND_MODE set to anything other than legacy, utility functions conform to
-.St -susv3 .
+With COMMAND_MODE set to unix2003 utility functions conform to
+.St -susv3
.Pp
With
-.Dv _POSIX_C_SOURCE
+.Dv _POSIX_C_SOURCE,
+.Dv _APPLE_C_SOURE,
or
-.Dv _DARWIN_C_SOURCE
+.Dv __LP64__
system and library calls conform to
-.St -susv3 .
+.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
+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
+.St -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
+what does the programmer intend when they use the
+.Fn -susv3
.Fn regcomp 3
to compile a regex, but the legacy
.Fn regexec 3