+2024-05-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ POSIX.1-2024 has been approved
+ It hasn’t been published yet, so just fix documentation talking
+ about “draft” POSIX, about particular POSIX versions, etc.
+ More work will need to be done once it’s published on the web,
+ to update URLs, and better document new and changed interfaces.
+
2024-05-23 Bruno Haible <bruno@clisp.org>
mbrtoc32: Strengthen tests.
# Extend the PATH so that gnulib-tool is found.
PATH=`dirname "$0"`:$PATH; export PATH
-POSIX2001_URL='https://pubs.opengroup.org/onlinepubs/009695399'
-POSIX2008_URL='https://pubs.opengroup.org/onlinepubs/9699919799'
+POSIX2004_URL='https://pubs.opengroup.org/onlinepubs/009695399'
+POSIX2017_URL='https://pubs.opengroup.org/onlinepubs/9699919799'
# repo_url_prefix and repo_url_suffix are chosen such that
# <A HREF="${repo_url_prefix}FILENAME${repo_url_suffix}">...</A>
wctype
wordexp
' | sed -e "$sed_alt1" | tr -d "$trnl" | sed -e "$sed_alt2" -e "$sed_alt3"`
-posix2001_headers=`echo '
+posix2004_headers=`echo '
sys/timeb
ucontext
' | sed -e "$sed_alt1" | tr -d "$trnl" | sed -e "$sed_alt2" -e "$sed_alt3"`
y1
yn
' | sed -e "$sed_alt1" | tr -d "$trnl" | sed -e "$sed_alt2" -e "$sed_alt3"`
-posix2001_functions=`echo '
+posix2004_functions=`echo '
bcmp
bcopy
bsd_signal
'$sed_remove_trailing_empty_line'
s,^, ,
s,$, ,
- s,\([^a-zA-Z_]\)'$posix_functions'() \(function\|macro\),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> \3,g
- s,\([^a-zA-Z_]\)'$posix_functions' \(function\|macro\),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> \3,g
- s,\([^a-zA-Z_]\)'$posix_functions'(),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
- s,\([^a-zA-Z_]\)'$posix2001_functions'() \(function\|macro\),\1<A HREF="'$POSIX2001_URL'/functions/\2.html">\2</A> \3,g
- s,\([^a-zA-Z_]\)'$posix2001_functions' \(function\|macro\),\1<A HREF="'$POSIX2001_URL'/functions/\2.html">\2</A> \3,g
- s,\([^a-zA-Z_]\)'$posix2001_functions'(),\1<A HREF="'$POSIX2001_URL'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
+ s,\([^a-zA-Z_]\)'$posix_functions'() \(function\|macro\),\1<A HREF="'$POSIX2017_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix_functions' \(function\|macro\),\1<A HREF="'$POSIX2017_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix_functions'(),\1<A HREF="'$POSIX2017_URL'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
+ s,\([^a-zA-Z_]\)'$posix2004_functions'() \(function\|macro\),\1<A HREF="'$POSIX2004_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix2004_functions' \(function\|macro\),\1<A HREF="'$POSIX2004_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix2004_functions'(),\1<A HREF="'$POSIX2004_URL'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
s,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)() \(function\|macro\),\1\2 \3,g
s,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)(),\1\2 <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
s, '"'"'\([a-zA-Z0-9_ -]*\)'"'"'\([^a-zA-Z0-9_]\), <CODE>\1</CODE>\2,g
'$sed_gt'
'$sed_remove_trailing_empty_line'
s,^#include "\(.*\)"$,#include "<A HREF="'$repo_url_prefix'lib/\1'$repo_url_suffix_repl'">\1</A>",
- s,^#include <'$posix_headers'\.h>$,#include \<<A HREF="'$POSIX2008_URL'/basedefs/\1.h.html">\1.h</A>\>,
- s,<A HREF="'$POSIX2008_URL'/basedefs/\([a-zA-Z0-9_]*\)/\([a-zA-Z0-9_]*\)\.h\.html">,<A HREF="'$POSIX2008_URL'/basedefs/\1_\2.h.html">,
- s,^#include <'$posix2001_headers'\.h>$,#include \<<A HREF="'$POSIX2001_URL'/basedefs/\1.h.html">\1.h</A>\>,
+ s,^#include <'$posix_headers'\.h>$,#include \<<A HREF="'$POSIX2017_URL'/basedefs/\1.h.html">\1.h</A>\>,
+ s,<A HREF="'$POSIX2017_URL'/basedefs/\([a-zA-Z0-9_]*\)/\([a-zA-Z0-9_]*\)\.h\.html">,<A HREF="'$POSIX2017_URL'/basedefs/\1_\2.h.html">,
+ s,^#include <'$posix2004_headers'\.h>$,#include \<<A HREF="'$POSIX2004_URL'/basedefs/\1.h.html">\1.h</A>\>,
s/$/<BR>/
'
element=`echo "$includes" \
func_module libc-config
func_end_table
- element="Support for obsolete systems lacking POSIX:2008"
+ element="Support for obsolete systems lacking POSIX"
func_section_wrap posix_sup_obsolete
func_wrap H2
func_echo "$element"
func_echo 'These modules are not listed among dependencies below, for simplicity.'
func_echo 'If your package requires portability to old, obsolete systems, you need to list these modules explicitly among the modules to import through gnulib-tool.'
- element="Support for systems lacking POSIX:2008"
+ element="Support for systems lacking POSIX"
func_section_wrap posix_sup
func_wrap H2
func_echo "$element"
func_module write
func_end_table
- element="Compatibility checks for POSIX:2008 functions"
+ element="Compatibility checks for POSIX functions"
func_section_wrap posix_compat
func_wrap H2
func_echo "$element"
func_module winsz-termios
func_end_table
- element="Enhancements for POSIX:2008 functions"
+ element="Enhancements for POSIX functions"
func_section_wrap posix_enh
func_wrap H2
func_echo "$element"
func_module exclude
func_end_table
- element="Extra functions based on POSIX:2008"
+ element="Extra functions based on POSIX"
func_section_wrap posix_ext
func_wrap H2
func_echo "$element"
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-bind-textdomain-codeset.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-bindtextdomain.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dcgettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dcngettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dgettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-dngettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
@subsection @code{getentropy}
@findex getentropy
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1134}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1134}
Documentation:
@itemize
@subsection @code{getresgid}
@findex getresgid
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
Documentation:@* @uref{https://www.kernel.org/doc/man-pages/online/pages/man2/getresgid.2.html,,man getresgid}
@subsection @code{getresuid}
@findex getresuid
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
Documentation:@* @uref{https://www.kernel.org/doc/man-pages/online/pages/man2/getresuid.2.html,,man getresuid}
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-gettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ngettext.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
@subsection @code{posix_spawn_file_actions_addchdir_np}
@findex posix_spawn_file_actions_addchdir_np
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1208}
+@code{posix_spawn_file_actions_addchdir} is
+specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1208}
Gnulib module: ---
@subsection @code{posix_spawn_file_actions_addfchdir_np}
@findex posix_spawn_file_actions_addfchdir_np
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1208}
+@code{posix_spawn_file_actions_addfchdir} is
+specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1208}
Gnulib module: ---
@subsection @code{pthread_cond_clockwait}
@findex pthread_cond_clockwait
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1485#c5385}
+
Documentation:
@itemize
@item
@subsection @code{pthread_rwlock_clockrdlock}
@findex pthread_rwlock_clockrdlock
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1216}
+
Documentation:
@itemize
@item
@subsection @code{pthread_rwlock_clockwrlock}
@findex pthread_rwlock_clockwrlock
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1216}
+
Documentation:
@itemize
@item
@subsection @code{ptsname_r}
@findex ptsname_r
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=508}
+
Documentation:
@itemize
@item
@subsection @code{sem_clockwait}
@findex sem_clockwait
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1216}
+
Documentation:
@itemize
@item
@subsection @code{setresgid}
@findex setresgid
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
Documentation:@* @uref{https://www.kernel.org/doc/man-pages/online/pages/man2/setresgid.2.html,,man setresgid}
@subsection @code{setresuid}
@findex setresuid
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1344}
Documentation:@* @uref{https://www.kernel.org/doc/man-pages/online/pages/man2/setresuid.2.html,,man setresuid}
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-textdomain.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=1122}
Documentation:
@itemize
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/libc-ddefs.html}
-Future POSIX specification:@* @url{https://www.austingroupbugs.net/view.php?id=162}
+Specified in POSIX.1-2024.
+Draft specification:@* @url{https://www.austingroupbugs.net/view.php?id=162}
Describes the platform's endianness (byte ordering of words stored in memory).
Defines the macros @code{BYTE_ORDER}, @code{LITTLE_ENDIAN}, @code{BIG_ENDIAN},
@section @code{bcmp}
@findex bcmp
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bcmp.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bcmp.html}
Gnulib module: ---
This function is missing on some platforms:
mingw, MSVC 14, Android 9.0.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{memcmp}
+This function is removed in POSIX.1-2008. Better use @code{memcmp}
instead.
@end itemize
@section @code{bcopy}
@findex bcopy
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bcopy.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bcopy.html}
Gnulib module: bcopy
Portability problems not fixed by Gnulib:
@itemize
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{memcpy}
+This function is removed in POSIX.1-2008. Better use @code{memcpy}
or @code{memmove} instead.
@end itemize
@section @code{bzero}
@findex bzero
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html}
Gnulib module: ---
This function is missing on some platforms:
mingw, MSVC 14, Android 9.0.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{memset}
+This function is removed in POSIX.1-2008. Better use @code{memset}
instead.
@end itemize
@section @code{ecvt}
@findex ecvt
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/ecvt.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/ecvt.html}
Gnulib module: ---
This function is not declared on some platforms:
Cygwin 2.9.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{sprintf}
+This function is removed in POSIX.1-2008. Better use @code{sprintf}
instead.
@end itemize
@section @code{fcvt}
@findex fcvt
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/fcvt.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/fcvt.html}
Gnulib module: ---
This function is not declared on some platforms:
Cygwin 2.9.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{sprintf}
+This function is removed in POSIX.1-2008. Better use @code{sprintf}
instead.
@end itemize
@section @code{ftime}
@findex ftime
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/ftime.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/ftime.html}
Gnulib module: ---
On native Windows platforms (mingw, MSVC), this function works incorrectly
when the environment variable @code{TZ} has been set by Cygwin.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{gettimeofday}
-or @code{clock_gettime} instead, and use @code{ftime} only as a fallback for
+This function is removed in POSIX.1-2008. Better use
+@code{clock_gettime} instead, and use @code{ftime} only as a fallback for
portability to Windows platforms.
@end itemize
@section @code{gcvt}
@findex gcvt
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/gcvt.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/gcvt.html}
Gnulib module: ---
This function is not declared on some platforms:
Cygwin 2.9.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{sprintf}
+This function is removed in POSIX.1-2008. Better use @code{sprintf}
instead.
@end itemize
@section @code{getwd}
@findex getwd
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/getwd.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/getwd.html}
Gnulib module: ---
@item
The size of the buffer required for this function is not a compile-time
constant. Also, the function truncates a result that would be larger than
-the minimum buffer size. For these reasons, this function is marked as
-``legacy'' in POSIX@. Better use the @code{getcwd} function instead.
+the minimum buffer size. For these reasons, this function is removed
+in POSIX.1-2008. Better use the @code{getcwd} function instead.
@end itemize
@section @code{index}
@findex index
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/index.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/index.html}
Gnulib module: ---
This function is not declared on some platforms:
Android 13.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{strchr}
+This function is removed in POSIX.1-2008. Better use @code{strchr}
instead.
@end itemize
@section @code{mktemp}
@findex mktemp
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/mktemp.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/mktemp.html}
Gnulib module: ---
@itemize
@item
This function is not appropriate for creating temporary files. (It has
-security risks.) Therefore it is marked as ``legacy'' in POSIX@. Better use
+security risks.) Therefore it is removed in POSIX.1-2008. Better use
@code{mkstemp} instead.
@end itemize
@section @code{rindex}
@findex rindex
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/rindex.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/rindex.html}
Gnulib module: ---
This function is missing on some platforms:
mingw, MSVC 14, Android 9.0.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{strrchr}
+This function is removed in POSIX.1-2008. Better use @code{strrchr}
instead.
@end itemize
@section @code{wcswcs}
@findex wcswcs
-POSIX specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/wcswcs.html}
+Removed in POSIX.1-2008.
+POSIX.1-2004 specification: @url{https://pubs.opengroup.org/onlinepubs/009695399/functions/wcswcs.html}
Gnulib module: ---
On Windows and 32-bit AIX platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
-This function is marked as ``legacy'' in POSIX@. Better use @code{wcsstr}
+This function is removed in POSIX.1-2008. Better use @code{wcsstr}
instead.
@end itemize
@section @code{_longjmp}
@findex _longjmp
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_longjmp.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_longjmp.html}
Gnulib module: ---
This function is missing on some platforms:
mingw, MSVC 14.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
@end itemize
-Note: Despite its being removed from POSIX, in 2023 on all
+Note: Despite its being removed from POSIX, in 2024 on all
systems which have @code{_setjmp}, it is the fastest way to save the
registers but not the signal mask (up to 30 times faster than @code{setjmp}
on some systems).
@section @code{_setjmp}
@findex _setjmp
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_setjmp.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_setjmp.html}
Gnulib module: ---
Portability problems not fixed by Gnulib:
@itemize
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
@end itemize
-Note: Despite its being removed from POSIX, in 2023 on all
+Note: Despite its being removed from POSIX, in 2024 on all
systems which have @code{_setjmp}, it is the fastest way to save the
registers but not the signal mask (up to 30 times faster than @code{setjmp}
on some systems).
@section @code{_tolower}
@findex _tolower
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_tolower.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_tolower.html}
Gnulib module: ---
This function is missing on some platforms:
macOS 11.1, Minix 3.1.8, Android 4.4.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{tolower} instead.
@end itemize
@section @code{_toupper}
@findex _toupper
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_toupper.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/_toupper.html}
Gnulib module: ---
This function is missing on some platforms:
macOS 11.1, Minix 3.1.8, Android 4.4.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{toupper} instead.
@end itemize
@section @code{asctime_r}
@findex asctime_r
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/asctime_r.html}
-
-Future POSIX removal:@* @url{https://www.austingroupbugs.net/view.php?id=1410}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/asctime_r.html}
Gnulib module: extensions
This function is missing on some platforms:
mingw, MSVC 14.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in a future version.
+This function is removed in POSIX.1-2024.
Use the function @code{strftime} (or even @code{sprintf}) instead.
However, @code{strftime} is locale dependent.
@item
@section @code{ctime_r}
@findex ctime_r
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime_r.html}
-
-Future POSIX removal:@* @url{https://www.austingroupbugs.net/view.php?id=1410}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime_r.html}
Gnulib module: extensions
This function is missing on some platforms:
mingw, MSVC 14.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in a future version.
+This function is removed in POSIX.1-2024.
Use the functions @code{localtime_r} and @code{strftime}
(or even @code{sprintf}) instead.
However, @code{localtime_r} can fail and @code{strftime} is locale dependent.
@section @code{gets}
@findex gets
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/gets.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/gets.html}
Gnulib module: ---
Portability problems not fixed by Gnulib:
@itemize
@item
+This function is removed in POSIX.1-2024.
+Use the function @code{fgets} instead.
+@item
This function should never be used, because it can overflow any given buffer.
@item
This function is missing on some platforms:
OpenBSD 6.7, Solaris 11.4.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
-Use the function @code{fgets} instead.
-@item
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
@section @code{gettimeofday}
@findex gettimeofday
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html}
Gnulib module: gettimeofday
Behavior is non-portable if the second argument to @code{gettimeofday}
is not @code{NULL}.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the Gnulib module @code{gettime} or @code{timespec_get} instead.
(POSIX recommends to use the function @code{clock_gettime}, but there is
no corresponding Gnulib module for it yet.)
@section @code{isascii}
@findex isascii
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/isascii.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/isascii.html}
Gnulib module: ctype
Portability problems not fixed by Gnulib:
@itemize
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
@end itemize
Note: This function's behaviour depends on the locale, but requires special
@section @code{pthread_getconcurrency}
@findex pthread_getconcurrency
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getconcurrency.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getconcurrency.html}
Gnulib module: ---
This function is missing on some platforms:
NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
You can remove calls to this function.
@end itemize
@section @code{pthread_setconcurrency}
@findex pthread_setconcurrency
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_setconcurrency.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_setconcurrency.html}
Gnulib module: ---
This function is missing on some platforms:
NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
You can remove calls to this function.
@end itemize
@section @code{rand_r}
@findex rand_r
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/rand_r.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/rand_r.html}
Gnulib module: ---
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14, Android 4.4.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{random_r} from Gnulib module @code{random_r} instead.
@end itemize
@section @code{setpgrp}
@findex setpgrp
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgrp.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgrp.html}
Gnulib module: ---
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{setpgid} or @code{setsid} instead, as appropriate.
@end itemize
@section @code{sighold}
@findex sighold
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sighold.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sighold.html}
Gnulib module: ---
This function is missing on some platforms:
FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 7.1.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{sigprocmask} instead.
@end itemize
@section @code{sigignore}
@findex sigignore
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigignore.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigignore.html}
Gnulib module: ---
This function is missing on some platforms:
FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 7.1.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{sigaction} instead.
@end itemize
@section @code{siginterrupt}
@findex siginterrupt
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/siginterrupt.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/siginterrupt.html}
Gnulib module: ---
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This funciton is removed in POSIX.1-2024.
Use the function @code{sigaction} instead.
@end itemize
@section @code{sigpause}
@findex sigpause
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpause.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpause.html}
LSB specification:@* @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sigpause-3.html}
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14, Android 7.1.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{sigsuspend} instead.
@end itemize
@section @code{sigrelse}
@findex sigrelse
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigrelse.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigrelse.html}
Gnulib module: ---
This function is missing on some platforms:
FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 7.1.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{sigprocmask} instead.
@end itemize
@section @code{sigset}
@findex sigset
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigset.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigset.html}
Gnulib module: ---
This function is missing on some platforms:
FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 7.1.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{sigaction} instead.
@end itemize
@section @code{tempnam}
@findex tempnam
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/tempnam.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/tempnam.html}
Gnulib module: ---
This function is missing on some platforms:
Minix 3.1.8.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the function @code{mkstemp} instead.
@item
This function is not appropriate for creating temporary files. (It has
@section @code{ulimit}
@findex ulimit
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html}
Gnulib module: ---
This function is missing on some platforms:
OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
Use the functions @code{getrlimit} and @code{setrlimit} instead.
@end itemize
@section @code{utime}
@findex utime
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/utime.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/utime.html}
Gnulib module: utime
@code{utimensat(AT_FDCWD,file,times,0)}, or the gnulib module @code{utimens},
instead.
@item
-POSIX says this function is obsolescent and it is planned to be
-removed in POSIX 202x.
+This function is removed in POSIX.1-2024.
You can use Gnulib module @code{utimens} instead.
@end itemize
@node stropts.h
@section @file{stropts.h}
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stropts.h.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stropts.h.html}
Gnulib module: ---
@item
This header file is missing on some platforms:
macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.
+@item
+This header is removed in POSIX.1-2024.
@end itemize
@node trace.h
@section @file{trace.h}
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/trace.h.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/trace.h.html}
Gnulib module: ---
@item
This header file is missing on some platforms:
macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.
+@item
+This header is removed in POSIX.1-2024.
@end itemize
@node ulimit.h
@section @file{ulimit.h}
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ulimit.h.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ulimit.h.html}
Gnulib module: ---
@item
This header file is missing on some platforms:
OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.
+@item
+This header is removed in POSIX.1-2024.
@end itemize
@node utime.h
@section @file{utime.h}
-POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utime.h.html}
+Removed in POSIX.1-2024.
+POSIX.1-2017 specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utime.h.html}
Gnulib module: utime-h
Portability problems not fixed by Gnulib:
@itemize
+@item
+This header is removed in POSIX.1-2024.
@end itemize
return result;
}
-/* glibc gets a LSB-compliant getopt and a POSIX-complaint __posix_getopt.
+/* glibc gets a LSB-compliant getopt and a POSIX-compliant __posix_getopt.
Standalone applications just get a POSIX-compliant getopt.
POSIX and LSB both require these functions to take 'char *const *argv'
even though this is incorrect (because of the permutation). */
/* Return nonzero if PATTERN contains any metacharacters.
Metacharacters can be quoted with backslashes if QUOTE is nonzero.
- This function is not part of the interface specified by POSIX.2
+ This function is not part of the interface specified by POSIX
but several programs want to use it. */
extern int glob_pattern_p (const char *__pattern, int __quote) __THROW;
#endif