+2023-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Document POSIX obsolescence
+ * doc/posix-functions/_longjmp.texi, doc/posix-functions/_setjmp.texi:
+ * doc/posix-functions/_tolower.texi, doc/posix-functions/_toupper.texi:
+ * doc/posix-functions/asctime.texi, doc/posix-functions/asctime_r.texi:
+ * doc/posix-functions/ctime.texi, doc/posix-functions/ctime_r.texi:
+ * doc/posix-functions/encrypt.texi, doc/posix-functions/ftw.texi:
+ * doc/posix-functions/getitimer.texi, doc/posix-functions/gets.texi:
+ * doc/posix-functions/gettimeofday.texi:
+ * doc/posix-functions/inet_addr.texi:
+ * doc/posix-functions/inet_ntoa.texi, doc/posix-functions/isascii.texi:
+ * doc/posix-functions/pthread_getconcurrency.texi:
+ * doc/posix-functions/pthread_setconcurrency.texi:
+ * doc/posix-functions/rand_r.texi, doc/posix-functions/setitimer.texi:
+ * doc/posix-functions/setkey.texi, doc/posix-functions/setpgrp.texi:
+ * doc/posix-functions/sighold.texi, doc/posix-functions/sigignore.texi:
+ * doc/posix-functions/siginterrupt.texi:
+ * doc/posix-functions/sigpause.texi, doc/posix-functions/sigrelse.texi:
+ * doc/posix-functions/sigset.texi, doc/posix-functions/tempnam.texi:
+ * doc/posix-functions/toascii.texi, doc/posix-functions/ulimit.texi:
+ * doc/posix-functions/utime.texi:
+ Update as per draft 3 of POSIX 10003.1-202x.
+
2023-07-19 Paul Eggert <eggert@cs.ucla.edu>
Don’t worry about Version 7 tolower
@item
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.
@end itemize
-Note: A future revision of POSIX later than the 2008/2009 one may drop the
-functions @code{_setjmp} and @code{_longjmp}. Still, in 2008, on all
+Note: Despite its being removed from POSIX, in 2023 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).
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX says this function is obsolescent and it is planned to be
+removed in POSIX 202x.
@end itemize
-Note: A future revision of POSIX later than the 2008/2009 one may drop the
-functions @code{_setjmp} and @code{_longjmp}. Still, in 2008, on all
+Note: Despite its being removed from POSIX, in 2023 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).
@item
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.
@end itemize
@item
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.
@end itemize
This function is deprecated in C23.
Portable applications can use @code{strftime} (or even @code{sprintf}) instead.
@item
+POSIX says this function is obsolescent and it is planned to be
+removed in a future version.
+@item
This function may overflow its internal buffer if an invalid year is passed.
@end itemize
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.
+@item
This function may put more than 26 bytes into the argument buffer if an
invalid year is passed.
@end itemize
Portable applications can use @code{localtime_r} and @code{strftime}
(or even @code{sprintf}) instead.
@item
+POSIX says this function is obsolescent and it is planned to be
+removed in a future version.
+@item
This function may overflow its internal buffer if an invalid year is passed.
@item
The @code{ctime} function need not be reentrant, and consequently is
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.
+@item
This function may put more than 26 bytes into the argument buffer if an
invalid year is passed.
@end itemize
This function is not declared in @code{<unistd.h>}
(without @code{-D_GNU_SOURCE}) on some platforms:
glibc (at least 2.11--2.13).
+@item
+POSIX 202x says this function is obsolescent and it is planned to be
+removed in a future version.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 4.1.
+@item
+POSIX says this function is obsolescent and it is planned to be
+removed in POSIX 202x.
@end itemize
@item
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.
@end itemize
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.
+@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:
@item
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.
@end itemize
This function is missing on some platforms:
mingw, MSVC 14.
@item
+POSIX 202x says this function is obsolescent and it is planned to be
+removed in a future version.
+@item
On some old platforms, this function returns a @samp{struct in_addr} rather
than a scalar type such as @samp{unsigned int} or @samp{unsigned long}.
@end itemize
This function is missing on some platforms:
mingw, MSVC 14.
@item
+POSIX 202x says this function is obsolescent and it is planned to be
+removed in a future version.
+@item
The @code{inet_ntoa} function need not be reentrant, and consequently
is not required to be thread safe. Implementations of
@code{inet_ntoa} typically write the timestamp into static buffer.
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX says this function is obsolescent and it is planned to be
+removed in POSIX 202x.
@end itemize
Note: This function's behaviour depends on the locale, but requires special
@item
This function is missing on some platforms:
NetBSD 9.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.
@end itemize
@item
This function is missing on some platforms:
NetBSD 9.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.
@end itemize
@item
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.
@end itemize
@item
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.
@end itemize
This function is not declared in @code{<stdlib.h>}
(without @code{-D_GNU_SOURCE}) on some platforms:
glibc (at least 2.11--2.13).
+@item
+POSIX 202x says this function is obsolescent and it is planned to be
+removed in a future version.
@end itemize
@item
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.
@end itemize
@item
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.
@end itemize
@item
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.
@end itemize
@item
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.
@end itemize
Note: POSIX recommends using @code{sigaction} with SA_RESTART instead of
@item
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.
@end itemize
@item
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.
@end itemize
@item
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.
@end itemize
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.
+@item
This function is not appropriate for creating temporary files. (It has
security risks.) Better use @code{mkstemp} instead.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+POSIX says this function is obsolescent and it is planned to be
+removed in POSIX 202x.
@end itemize
@item
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.
@end itemize
This function cannot set full timestamp resolution. Use
@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.
@end itemize