diff --git a/.gitignore b/.gitignore index 8b5c83c..6104863 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ SOURCES/man-pages-6.04.tar.xz -SOURCES/man-pages-additional-20140218.tar.xz -SOURCES/man-pages-posix-2017-a.tar.xz diff --git a/.man-pages.metadata b/.man-pages.metadata index 5052dc5..2abc3e8 100644 --- a/.man-pages.metadata +++ b/.man-pages.metadata @@ -1,3 +1 @@ 35324d278c7fa756cf51455e8b7f66faefd1e3cb SOURCES/man-pages-6.04.tar.xz -315c9144f71c0edf1af823fb3f7735e93f6f17c3 SOURCES/man-pages-additional-20140218.tar.xz -ee907694a6ac012adb856ce0342103311340fcec SOURCES/man-pages-posix-2017-a.tar.xz diff --git a/SOURCES/0000-ctime.3-Document-how-to-check-errors-from-mktime.patch b/SOURCES/0000-ctime.3-Document-how-to-check-errors-from-mktime.patch new file mode 100644 index 0000000..8688747 --- /dev/null +++ b/SOURCES/0000-ctime.3-Document-how-to-check-errors-from-mktime.patch @@ -0,0 +1,173 @@ +commit e541b219854e6be90b5628f88cd62edb44c9e9f2 +Author: Alejandro Colomar +Date: Fri Aug 23 14:34:00 2024 +0200 + + ctime.3: Document how to check errors from mktime(3) + + -1 is a valid successful time_t, for one second before the Epoch. And + mktime(3) is allowed (like most libc calls) to set errno on success. + This makes it impossible to determine errors from the return value or + errno. + + ISO C specifies that tp->tm_wday is unmodified after a failed call, and + puts an example where this is used to determine errors. It is indeed + the only way to check for errors from this call. + + Document this detail in the RETURN VALUE section, add a CAVEATS section + that warns about this, and write an example program that shows how to + properly call this function. + + Most code I've been able to find in several search engines either + doesn't check for errors after mktime(3), or checks them incorrectly, so + this documentation should help fix those. + + This is guaranteed since ISO C23 and POSIX.1-2024. Prior to those + standards, there was no standard way to check for errors. However, + there are no known implementations that do not conform to this. + + Link: + Link: + Link: + Link: + Link: + Link: + Reported-by: Paul Eggert + Cc: Vincent Lefevre + Cc: DJ Delorie + Cc: Carlos O'Donell + Cc: Xi Ruoyao + Cc: Brian Inglis + Cc: "Robert C. Seacord" + Cc: Jens Gustedt + Cc: Robert Elz + Cc: Andrew Josey + Cc: Geoff Clare + Cc: Hans Åberg + Cc: GNU C Library + Cc: Austin Group + Signed-off-by: Alejandro Colomar + +Conflicts: + Minor wording differences + +diff -Nrup a/man3/ctime.3 b/man3/ctime.3 +--- a/man3/ctime.3 2023-04-02 20:27:24.000000000 -0400 ++++ b/man3/ctime.3 2025-06-18 09:39:54.782440669 -0400 +@@ -247,7 +247,10 @@ expressed as a value of type + On error, + .BR mktime () + returns the value +-.IR "(time_t)\ \-1" . ++.IR "(time_t)\ \-1" , ++and leaves the ++.I tm->tm_wday ++member unmodified. + The remaining functions return NULL on error. + On error, + .I errno +@@ -400,6 +403,105 @@ a broken-down time structure and an arra + Execution of any of the functions may overwrite the information returned + in either of these objects by any of the other functions." + This can occur in the glibc implementation. ++.SH CAVEATS ++.SS mktime() ++.I (time_t) \-1 ++can represent a valid time ++(one second before the Epoch). ++To determine whether ++.BR mktime () ++failed, ++one must use the ++.I tm->tm_wday ++field. ++See the example program in EXAMPLES. ++.SH EXAMPLES ++The following shell session shows sample runs of the program: ++.P ++.in +4n ++.EX ++.RB $\~ "TZ=UTC ./a.out 1969 12 31 23 59 59 0" ; ++\-1 ++$ ++.RB $\~ "export TZ=Europe/Madrid" ; ++$ ++.RB $\~ "./a.out 2147483647 2147483647 00 00 00 00 -1" ; ++a.out: mktime: Value too large for defined data type ++$ ++.RB $\~ "./a.out 2024 08 23 00 17 53 \-1" ; ++1724365073 ++.RB $\~ "./a.out 2024 08 23 00 17 53 0" ; ++1724368673 ++.RB $\~ "./a.out 2024 08 23 00 17 53 1" ; ++1724365073 ++$ ++.RB $\~ "./a.out 2024 02 23 00 17 53 \-1" ; ++1708643873 ++.RB $\~ "./a.out 2024 02 23 00 17 53 0" ; ++1708643873 ++.RB $\~ "./a.out 2024 02 23 00 17 53 1" ; ++1708640273 ++$ ++.RB $\~ "./a.out 2023 03 26 02 17 53 \-1" ; ++1679793473 ++$ ++.RB $\~ "./a.out 2023 10 29 02 17 53 \-1" ; ++1698542273 ++.RB $\~ "./a.out 2023 10 29 02 17 53 0" ; ++1698542273 ++.RB $\~ "./a.out 2023 10 29 02 17 53 1" ; ++1698538673 ++$ ++.RB $\~ "./a.out 2023 02 29 12 00 00 \-1" ; ++1677668400 ++.EE ++.SS Program source: mktime.c ++\& ++.\" SRC BEGIN (mktime.c) ++.EX ++#include ++#include ++#include ++#include ++#include ++\& ++#define is_signed(T) ((T) \-1 < 1) ++\& ++int ++main(int argc, char *argv[]) ++{ ++ char **p; ++ time_t t; ++ struct tm tm; ++\& ++ if (argc != 8) { ++ fprintf(stderr, "Usage: %s yyyy mm dd HH MM SS isdst\[rs]n", argv[0]); ++ exit(EXIT_FAILURE); ++ } ++\& ++ p = &argv[1]; ++ tm.tm_year = atoi(*p++) \- 1900; ++ tm.tm_mon = atoi(*p++) \- 1; ++ tm.tm_mday = atoi(*p++); ++ tm.tm_hour = atoi(*p++); ++ tm.tm_min = atoi(*p++); ++ tm.tm_sec = atoi(*p++); ++ tm.tm_isdst = atoi(*p++); ++\& ++ tm.tm_wday = \-1; ++ t = mktime(&tm); ++ if (tm.tm_wday == \-1) ++ err(EXIT_FAILURE, "mktime"); ++\& ++ if (is_signed(time_t)) ++ printf("%jd\[rs]n", (intmax_t) t); ++ else ++ printf("%ju\[rs]n", (uintmax_t) t); ++\& ++ exit(EXIT_SUCCESS); ++} ++.EE ++.\" SRC END + .SH SEE ALSO + .BR date (1), + .BR gettimeofday (2), diff --git a/SOURCES/0000-sched.7-Clarifications-corrections.patch b/SOURCES/0000-sched.7-Clarifications-corrections.patch new file mode 100644 index 0000000..3bb36da --- /dev/null +++ b/SOURCES/0000-sched.7-Clarifications-corrections.patch @@ -0,0 +1,76 @@ +commit ca69daf45f94fda061f796efcc4f24ca76d8e380 +Author: Phil Auld +Date: Thu Jan 16 14:37:47 2025 +0000 + + man/man7/sched.7: Mention autogroup disabled behavior + + The autogroup feature can be contolled at runtime when built into the + kernel. Disabling it in this case still creates autogroups and still + shows the autogroup membership for the task in /proc. The scheduler + code will just not use the the autogroup task group. This can be + confusing to users. Add a sentence to this effect to sched.7 to point + this out. + + The kernel code shows how this is used. The sched_autogroup_enabled + toggle is only used in one place. + + kernel/sched/autogroup.h: + + static inline struct task_group * + autogroup_task_group(struct task_struct *p, struct task_group *tg) + { + extern unsigned int sysctl_sched_autogroup_enabled; + int enabled = READ_ONCE(sysctl_sched_autogroup_enabled); + + if (enabled && task_wants_autogroup(p, tg)) + return p->signal->autogroup->tg; + + return tg; + } + + task_wants_autogroup() is in kernel/sched/autogroup.c: + + bool task_wants_autogroup(struct task_struct *p, struct task_group *tg) + { + if (tg != &root_task_group) + return false; + ... + + return true; + } + + One can see that any group set other than root also bypasses the use of + the autogroup. All of the machinery around the creation of the + autogroup is not effected by the toggle. + + From userspace: + 0 + /autogroup-112 nice 0 + + Note, systemd based system these days is not really using autogroups at + all anyway because any task in a non-root cgroup bypasses the autogroup + as well. + + Cc: Carlos O'Donell + Signed-off-by: Phil Auld + Message-ID: <20250116143747.2366152-1-pauld@redhat.com> + Signed-off-by: Alejandro Colomar + +Conflicts: + man7/sched.7 - one line .P vs .PP difference + +diff -Nrup a/man7/sched.7 b/man7/sched.7 +--- a/man7/sched.7 2023-04-02 20:27:35.000000000 -0400 ++++ b/man7/sched.7 2025-07-08 14:20:38.627388430 -0400 +@@ -724,6 +724,11 @@ in the group terminates. + .PP + When autogrouping is enabled, all of the members of an autogroup + are placed in the same kernel scheduler "task group". ++When disabled, ++the group creation happens as above, ++and autogroup membership is still visible in ++.IR /proc , ++but the autogroups are not used. + The CFS scheduler employs an algorithm that equalizes the + distribution of CPU cycles across task groups. + The benefits of this for interactive desktop performance diff --git a/SOURCES/0001-ctime.3-Move-NOTES-to-a-subsection-within-CAVEATS.patch b/SOURCES/0001-ctime.3-Move-NOTES-to-a-subsection-within-CAVEATS.patch new file mode 100644 index 0000000..3dcd500 --- /dev/null +++ b/SOURCES/0001-ctime.3-Move-NOTES-to-a-subsection-within-CAVEATS.patch @@ -0,0 +1,32 @@ +commit 6a7f1461b0e5474d50ef1920558dec103c0c058f +Author: Alejandro Colomar +Date: Sat Aug 24 00:20:49 2024 +0200 + + ctime.3: Move NOTES to a subsection within CAVEATS + + Signed-off-by: Alejandro Colomar + +Conflicts: + Minor wording differences + +diff -Nrup a/man3/ctime.3 b/man3/ctime.3 +--- a/man3/ctime.3 2025-06-18 16:14:51.847871469 -0400 ++++ b/man3/ctime.3 2025-06-18 16:25:22.406139771 -0400 +@@ -374,7 +374,8 @@ POSIX.1-2001. + POSIX.1-2001. + Marked obsolete in POSIX.1-2008 (recommending + .BR strftime (3)). +-.SH NOTES ++.SH CAVEATS ++.SS Thread safety + The four functions + .BR asctime (), + .BR ctime (), +@@ -403,7 +404,6 @@ a broken-down time structure and an arra + Execution of any of the functions may overwrite the information returned + in either of these objects by any of the other functions." + This can occur in the glibc implementation. +-.SH CAVEATS + .SS mktime() + .I (time_t) \-1 + can represent a valid time diff --git a/SOURCES/0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch b/SOURCES/0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch new file mode 100644 index 0000000..9aa9726 --- /dev/null +++ b/SOURCES/0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch @@ -0,0 +1,44 @@ +From f1016b60769174da8e396e30fd25f58bb58d4232 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Wed, 28 Aug 2024 13:01:56 +0200 +Subject: [PATCH] dlinfo.3: Document the RTLD_DI_PHDR request + +First added in glibc 2.36, backported upstream to glibc 2.34, +so mention 2.34.1 for the first version. + +Signed-off-by: Florian Weimer +Message-ID: <87o75chpwb.fsf@oldenburg.str.redhat.com> +Signed-off-by: Alejandro Colomar +--- + man/man3/dlinfo.3 | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/man3/dlinfo.3 b/man3/dlinfo.3 +index bc331dc..a77e514 100644 +--- a/man3/dlinfo.3 ++++ b/man3/dlinfo.3 +@@ -194,10 +194,23 @@ If this object does not define a PT_TLS segment, + or if the calling thread has not allocated a block for it, + NULL is placed in + .IR *info . ++.TP ++.BR RTLD_DI_PHDR " (\fIconst ElfW(Phdr *)\fP, since glibc 2.34.1)" ++.\" glibc commit d056c212130280c0a54d9a4f72170ec621b70ce5 (2.36) ++.\" glibc commit 28ea43f8d64f0dd1f2de75525157730e1532e600 (2.35.1) ++.\" glibc commit 91c2e6c3db44297bf4cb3a2e3c40236c5b6a0b23 (2.34.1) ++Obtain the address of this shared object's program header and place it ++in ++.IR *info . ++This ++.B dlinfo ++call returns the number of program headers in the shared object. + .SH RETURN VALUE + On success, + .BR dlinfo () +-returns 0. ++returns 0 ++(if not specified explicitly), ++or a positive value corresponding to the request. + On failure, it returns \-1; the cause of the error can be diagnosed using + .BR dlerror (3). + .SH ATTRIBUTES diff --git a/SOURCES/0002-ctime.3-CAVEATS-Add-note-about-tm_isdst-handling-in-.patch b/SOURCES/0002-ctime.3-CAVEATS-Add-note-about-tm_isdst-handling-in-.patch new file mode 100644 index 0000000..3095e24 --- /dev/null +++ b/SOURCES/0002-ctime.3-CAVEATS-Add-note-about-tm_isdst-handling-in-.patch @@ -0,0 +1,76 @@ +From 9fdca71e4aba3605caa88b0c9eff3dc2c3f6fcfe Mon Sep 17 00:00:00 2001 +From: DJ Delorie +Date: Thu, 29 Aug 2024 21:10:32 -0400 +Subject: [PATCH] ctime.3: CAVEATS: Add note about tm_isdst handling in + mktime(3) + +Handling of "invalid" values for tm_isdst is not clearly specified +in any standard, and implementations vary as to how they react when you +(for example) pass tm_isdst=1 at a time when DST is not in effect. +Add a note about this, and a suggestion for a workaround. + +I go into further detail about this in the link below. + +Link: +Cc: Paul Eggert +Cc: Carlos O'Donell +Signed-off-by: DJ Delorie +Message-ID: +Signed-off-by: Alejandro Colomar +--- + man/man3/ctime.3 | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/man/man3/ctime.3 b/man/man3/ctime.3 +index 0ad2b530f..53abab6d9 100644 +--- a/man3/ctime.3 ++++ b/man3/ctime.3 +@@ -427,6 +427,45 @@ one must use the + .I tm->tm_wday + field. + See the example program in EXAMPLES. ++.P ++The handling of a non-negative ++.I tm_isdst ++in ++.BR mktime () ++is poorly specified, ++and passing a value that is incorrect for the time specified ++yields unspecified results. ++Since ++.BR mktime () ++is one of the few functions that knows when DST is in effect, ++providing a correct value may be difficult. ++One workaround for this is to call ++.BR mktime () ++twice, ++once with ++.I tm_isdst ++set to zero, ++and once with ++.I tm_isdst ++set to a positive value, ++and discarding the results from the call that changes it. ++If neither call changes ++.I tm_isdst ++then the time specified probably happens during a fall-back period ++where DST begins or ends, ++and both results are valid ++but represent two different times. ++If both calls change it, that could indicate a fall-forward transition, ++or some other reason why the time specified does not exist. ++.P ++The specification of time zones and daylight saving time ++are up to regional governments, change often, ++and may include discontinuities beyond ++.IR mktime 's ++ability to document a result. ++For example, a change in the timezone definition ++may cause a clock time to be repeated or skipped ++without a corresponding DST change. + .SH EXAMPLES + The following shell session shows sample runs of the program: + .P +-- +2.46.1 + diff --git a/SOURCES/0003-ctime.3-EXAMPLES-Document-how-to-detect-invalid-or-ambiguous-times.patch b/SOURCES/0003-ctime.3-EXAMPLES-Document-how-to-detect-invalid-or-ambiguous-times.patch new file mode 100644 index 0000000..b7cd11b --- /dev/null +++ b/SOURCES/0003-ctime.3-EXAMPLES-Document-how-to-detect-invalid-or-ambiguous-times.patch @@ -0,0 +1,162 @@ +commit bd576aaf5fce40100133c1d48c02eacbf25594c8 +Author: Alejandro Colomar +Date: Sat Aug 24 00:51:55 2024 +0200 + + ctime.3: EXAMPLES: Document how to detect invalid or ambiguous times + + This example documents how to detect some corner cases of mktime(3), + such as DST transitions and other jumps in the calendar. + + Link: + Cc: DJ Delorie + Cc: Carlos O'Donell + Cc: Paul Eggert + Signed-off-by: Alejandro Colomar + +diff --git a/man3/ctime.3 b/man/man3/ctime.3 +index 53abab6d9..acd6f1565 100644 +--- a/man3/ctime.3 ++++ b/man3/ctime.3 +@@ -467,6 +467,14 @@ For example, a change in the timezone definition + may cause a clock time to be repeated or skipped + without a corresponding DST change. + .SH EXAMPLES ++The program below defines a wrapper that ++allows detecting invalid and ambiguous times, ++with ++.B EINVAL ++and ++.BR ENOTUNIQ , ++respectively. ++.P + The following shell session shows sample runs of the program: + .P + .in +4n +@@ -482,6 +490,7 @@ $ + .RB $\~ "./a.out 2024 08 23 00 17 53 \-1" ; + 1724365073 + .RB $\~ "./a.out 2024 08 23 00 17 53 0" ; ++a.out: my_mktime: Invalid argument + 1724368673 + .RB $\~ "./a.out 2024 08 23 00 17 53 1" ; + 1724365073 +@@ -491,12 +500,15 @@ $ + .RB $\~ "./a.out 2024 02 23 00 17 53 0" ; + 1708643873 + .RB $\~ "./a.out 2024 02 23 00 17 53 1" ; ++a.out: my_mktime: Invalid argument + 1708640273 + $ + .RB $\~ "./a.out 2023 03 26 02 17 53 \-1" ; ++a.out: my_mktime: Invalid argument + 1679793473 + $ + .RB $\~ "./a.out 2023 10 29 02 17 53 \-1" ; ++a.out: my_mktime: Name not unique on network + 1698542273 + .RB $\~ "./a.out 2023 10 29 02 17 53 0" ; + 1698542273 +@@ -504,6 +516,7 @@ $ + 1698538673 + $ + .RB $\~ "./a.out 2023 02 29 12 00 00 \-1" ; ++a.out: my_mktime: Invalid argument + 1677668400 + .EE + .SS Program source: mktime.c +@@ -511,13 +524,17 @@ $ + .\" SRC BEGIN (mktime.c) + .EX + #include ++#include + #include + #include + #include ++#include + #include + \& + #define is_signed(T) ((T) \-1 < 1) + \& ++time_t my_mktime(struct tm *tp); ++\& + int + main(int argc, char *argv[]) + { +@@ -539,10 +556,13 @@ main(int argc, char *argv[]) + tm.tm_sec = atoi(*p++); + tm.tm_isdst = atoi(*p++); + \& ++ errno = 0; + tm.tm_wday = \-1; +- t = mktime(&tm); ++ t = my_mktime(&tm); + if (tm.tm_wday == \-1) + err(EXIT_FAILURE, "mktime"); ++ if (errno == EINVAL || errno == ENOTUNIQ) ++ warn("my_mktime"); + \& + if (is_signed(time_t)) + printf("%jd\[rs]n", (intmax_t) t); +@@ -551,6 +571,62 @@ main(int argc, char *argv[]) + \& + exit(EXIT_SUCCESS); + } ++\& ++time_t ++my_mktime(struct tm *tp) ++{ ++ int e, isdst; ++ time_t t; ++ struct tm tm; ++ unsigned char wday[sizeof(tp\->tm_wday)]; ++\& ++ e = errno; ++\& ++ tm = *tp; ++ isdst = tp\->tm_isdst; ++\& ++ memcpy(wday, &tp\->tm_wday, sizeof(wday)); ++ tp\->tm_wday = \-1; ++ t = mktime(tp); ++ if (tp\->tm_wday == \-1) { ++ memcpy(&tp\->tm_wday, wday, sizeof(wday)); ++ return \-1; ++ } ++\& ++ if (isdst == \-1) ++ tm.tm_isdst = tp\->tm_isdst; ++\& ++ if ( tm.tm_sec != tp\->tm_sec ++ || tm.tm_min != tp\->tm_min ++ || tm.tm_hour != tp\->tm_hour ++ || tm.tm_mday != tp\->tm_mday ++ || tm.tm_mon != tp\->tm_mon ++ || tm.tm_year != tp\->tm_year ++ || tm.tm_isdst != tp\->tm_isdst) ++ { ++ errno = EINVAL; ++ return t; ++ } ++\& ++ if (isdst != \-1) ++ goto out; ++\& ++ tm = *tp; ++ tm.tm_isdst = !tm.tm_isdst; ++\& ++ tm.tm_wday = \-1; ++ mktime(&tm); ++ if (tm.tm_wday == \-1) ++ goto out; ++\& ++ if (tm.tm_isdst != tp\->tm_isdst) { ++ errno = ENOTUNIQ; ++ return t; ++ } ++out: ++ errno = e; ++ return t; ++} + .EE + .\" SRC END + .SH SEE ALSO diff --git a/SOURCES/additional-man-pages.patch b/SOURCES/additional-man-pages.patch new file mode 100644 index 0000000..09d0774 --- /dev/null +++ b/SOURCES/additional-man-pages.patch @@ -0,0 +1,190 @@ +Sources for rtas.2 and swapcontext.2 come from this Fedora man-pages commit: +commit e7ba749ed5143c2cbe8b65ecfb55cf4dda6424cc (HEAD, tag: man-pages-3_00-1_fc10) +Author: Ivana Varekova +Date: Wed Jun 18 10:26:46 2008 +0000 + + - update to 3.00 + - source files changes + +Source for con.saver.8 comes from this Fedora man-pages commit: +commit e12ffa774d7fae2e6800eb8cbbad584984451661 (HEAD, tag: man-pages-2_55-2_fc8) +Author: Štěpán Kasal +Date: Wed Jun 20 13:33:55 2007 +0000 + + - Add man-suid-bins.tar.bz2 and uuname.1 to document suid binaries + (submitted through bug #196352). + - Add man-pages-2.51-sched_setaffinity.patch, fixing the prototypes. + - Remove sccs-related man pages. + - Add man-pages-2.55-syscalls-2.6.9.patch, updating syscalls.2 to kernel + version 2.6.9. + - Add man-pages-2.55-clone2.patch; s/clone2/__&/, clone2 is not exported. + - Add man-pages-2.55-signal.patch; SIGRTMIN is not constant. + +diff -Nrup a/man2/rtas.2 b/man2/rtas.2 +--- a/man2/rtas.2 1969-12-31 19:00:00.000000000 -0500 ++++ b/man2/rtas.2 2025-08-07 13:39:08.050815165 -0400 +@@ -0,0 +1,61 @@ ++.\" Copyright (C) 2004 IBM Corporation ++.\" This file is distributed according to the GNU General Public License. ++.\" See the file COPYING in the top level source directory for details. ++.\" ++.\" This page documents the differences between the low-level kernel system call interface .\" and that made available to applications by glibc. Portable applications should always .\" use the official library interface. ++.\" ++.de Sh \" Subsection ++.br ++.if t .Sp ++.ne 5 ++.PP ++\fB\\$1\fR ++.PP ++.. ++.de Sp \" Vertical space (when we can't use .PP) ++.if t .sp .5v ++.if n .sp ++.. ++.de Ip \" List item ++.br ++.ie \\n(.$>=3 .ne \\$3 ++.el .ne 3 ++.IP "\\$1" \\$2 ++.. ++.TH "RTAS" 2 ++.SH NAME ++rtas \- Allows userspace to call RTAS (Run Time Abstraction Services) ++.SH "SYNOPSIS" ++.ad l ++.hy 0 ++.HP 17 ++int\ \fBppc_rtas\fR\ (struct rtas_args\ \fI*uargs\fR); ++.ad ++.hy ++ ++.SH "DESCRIPTION" ++\fBppc_rtas\fR enables userspace manipulation of the RunTime Abstraction Services (RTAS). RTAS provides for a portable method of access and setting system information. For example, you could gather information on various system sensors and set poweron values. RTAS is accessed via the /proc entry called "rtas". Manipulations on RTAS are implemented via command line arguments on /proc/rtas. ++The values for \fIuargs\fR vary greatly. ++For more information, see the \fIview/arch/ppcKconfig\fR file. ++ ++.SH "RETURN VALUE" ++ ++.PP ++\fBrtas\fR returns 0 on success; otherwise it returns one of the errors listed in the "Errors" section. ++ ++.SH "ERRORS" ++ ++.TP ++-EPERM ++User does not have CAP_SYS_ADMIN capabilities. ++ ++.TP ++-EFAULT ++Problem copying \fIuargs\fR values to/from user space. ++ ++.TP ++-EINVAL ++Either number of \fIuargs\fR passed in too large or size of \fIuargs\fR array too large. ++ ++.SH AUTHOR ++Niki Rahimi. +diff -Nrup a/man2/swapcontext.2 b/man2/swapcontext.2 +--- a/man2/swapcontext.2 1969-12-31 19:00:00.000000000 -0500 ++++ b/man2/swapcontext.2 2025-08-07 13:39:08.050995683 -0400 +@@ -0,0 +1,63 @@ ++.\" Copyright (C) 2004 IBM Corporation ++.\" This file is distributed according to the GNU General Public License. ++.\" See the file COPYING in the top level source directory for details. ++.\" ++ ++.de Sh \" Subsection ++.br ++.if t .Sp ++.ne 5 ++.PP ++\fB\\$1\fR ++.PP ++.. ++.de Sp \" Vertical space (when we can't use .PP) ++.if t .sp .5v ++.if n .sp ++.. ++.de Ip \" List item ++.br ++.ie \\n(.$>=3 .ne \\$3 ++.el .ne 3 ++.IP "\\$1" \\$2 ++.. ++.TH "SWAPCONTEXT" 2 "2004-March-12" "Linux 2.6" "Linux 2.6 Programmer's Guide" ++.SH NAME ++swapcontext \- Swap out old context with new context ++.SH "SYNOPSIS" ++.ad l ++.hy 0 ++.HP 21 ++int\ \fBsys_swapcontext\fR\ (struct\ ucontext\ \fI*old_ctx\fR, struct\ ucontext\ \fI*new_ctx\fR, int\ \fIr5\fR, int\ \fIr6\fR, int\ \fIr7\fR, int\ \fIr8\fR, struct\ pt_regs\ \fI*regs\fR); ++.ad ++.hy ++ ++.SH "DESCRIPTION" ++ ++.PP ++\fBswapcontext\fR swaps out context \fIold_ctx\fR with new context \fInew_ctx\fR. The \fIint r#\fR values have no place in the system call functionality. The \fIregs\fR value indicates the current user register values from the user stack. ++ ++.SH "RETURN VALUE" ++ ++.PP ++\fBswapcontext\fR returns 0 on success; otherwise, \fBswapcontext\fR returns one of the errors listed in the "Errors" section. ++ ++.SH "ERRORS" ++ ++.TP ++-EFAULT ++\fIswapcontext\fR could not verify that the memory area pointed to by \fIold_ctx\fR or \fInew_ctx\fR was accessible for the operation. ++ ++.TP ++-SIGSEGV ++A fault occurred when the context was being copied into the kernel's image of the user's registers. The should only occur in an out-of-memory situation. ++ ++.SH "SEE ALSO" ++.BR getcontext(2), ++.BR sigaction(2), ++.BR sigaltstack(2), ++.BR sigprocmask(2) ++\fB\fR ++ ++.SH AUTHOR ++Niki Rahimi +diff -Nrup a/man8/cons.saver.8 b/man8/cons.saver.8 +--- a/man8/cons.saver.8 1969-12-31 19:00:00.000000000 -0500 ++++ b/man8/cons.saver.8 2025-08-07 13:39:22.408790338 -0400 +@@ -0,0 +1,32 @@ ++.\" This file is distributed in the hope that it will be useful, ++.\" but WITHOUT ANY WARRANTY; without even the implied warranty of ++.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See ++.\" the GNU General Public License for more details. ++.\" ++.\" You should have received a copy of the GNU General Public License ++.\" along with this file; if not, write to the Free Software ++.\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++.\" MA 02111-1307 USA ++.\" ++.\" HISTORY: ++.\" 2006-05-16, created by Rodrigo Rubira Branco ++.TH cons.saver 8 "May 16, 2006" Linux "User Manuals" ++.SH NAME ++cons.saver \- general-purpose Linux console screen save and restore server ++.SH SYNOPSIS ++.nf ++.fam C ++cons.saver \fITTY\fP ++.fam T ++.fi ++.SH DESCRIPTION ++.TP ++Invoke this helper program with the Ctrl-o key combination to save and restore the user session on the screen. ++.SH OPTIONS ++cons.saver takes only one argument, the \fITTY\fP \fINAME\fP from which the system will save and restore. ++.SH SECURITY ++Cons.saver does not need to be invoked by root. It only needs read and write access to /dev/vcsa*, which is a priviledged operation. You should create an unprivileged user, make cons.saver setuid to that user, and assure that all the vcsa* are owned by that user too. ++.SH AUTHOR ++Manpage written by Rodrigo Rubira Branco ++.SH SEE ALSO ++\fBmc\fP(1), \fBmcserv\fP(8) diff --git a/SPECS/man-pages.spec b/SPECS/man-pages.spec index 0f4aa10..9651d14 100644 --- a/SPECS/man-pages.spec +++ b/SPECS/man-pages.spec @@ -1,21 +1,26 @@ -%global posix_version 2017 -%global posix_release a -%global posix_name man-pages-posix-%{posix_version} -%global posix_name_rel %{posix_name}-%{posix_release} -%global additional_version 20140218 -%global additional_name man-pages-additional-%{additional_version} - Summary: Linux kernel and C library user-space interface documentation Name: man-pages Version: 6.04 -Release: 1%{?dist} -License: GPL+ and GPLv2+ and BSD and MIT and Copyright only and IEEE +Release: 7%{?dist} +# List of licenses with examples of man-pages using them +# BSD-2-Clause: man-pages/man5/elf.5 +# BSD-3-Clause: man-pages/man3/list.3 +# BSD-4.3TAHOE: man-pages/man5/resolv.conf.5 +# BSD-4-Clause-UC: man-pages/man2/accept.2 +# GPL-1.0-or-later: man-pages/man1/ldd.1 +# GPL-2.0-only: man-pages/man2/fallocate.2 +# GPL-2.0-or-later: man-pages/man1/getent.1 +# LicenseRef-Fedora-Public-Domain: man-pages/man2/nfsservctl.2 +# LicenseRef-Fedora-UltraPermissive: man-pages/man2/futex.2 +# Linux-man-pages-1-para: man-pages/man2/getcpu.2 +# Linux-man-pages-copyleft: man-pages/man2/chdir.2 +# Linux-man-pages-copyleft-2-para: man-pages/man2/move_pages.2 +# Linux-man-pages-copyleft-var: man-pages/man2/get_mempolicy.2 +# MIT: man-pages/man3/program_invocation_name.3 +# Spencer-94: man-pages/man7/regex.7 +License: BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND LicenseRef-Fedora-Public-Domain AND LicenseRef-Fedora-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94 URL: http://www.kernel.org/doc/man-pages/ Source: http://www.kernel.org/pub/linux/docs/man-pages/man-pages-%{version}.tar.xz -# POSIX man pages -Source1: http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/%{posix_name_rel}.tar.xz -# additional man-pages, the source tarball is fedora/rhel only -Source2: %{additional_name}.tar.xz BuildRequires: make Requires(post): %{_sbindir}/update-alternatives @@ -35,23 +40,42 @@ BuildArch: noarch ## Patches ## -# POSIX man pages - # Regular man pages # resolves: #650985 # https://bugzilla.kernel.org/show_bug.cgi?id=53781 Patch21: man-pages-3.42-close.patch +# Upstream commit: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/?id=f1016b60769174da8e396e30fd25f58bb58d4232 +# Resolves: RHEL-53953 +Patch22: 0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch + +# Upstream patches to provide more info on mktime(). +# Resolves: RHEL-58342 +Patch23: 0000-ctime.3-Document-how-to-check-errors-from-mktime.patch +Patch24: 0001-ctime.3-Move-NOTES-to-a-subsection-within-CAVEATS.patch +Patch25: 0002-ctime.3-CAVEATS-Add-note-about-tm_isdst-handling-in-.patch +Patch26: 0003-ctime.3-EXAMPLES-Document-how-to-detect-invalid-or-ambiguous-times.patch + +# Upstream patch providing sched(7) corrections/clarifications +Patch27: 0000-sched.7-Clarifications-corrections.patch + +# Add rtas.2, swapcontext.2 and cons.saver.8 man pages +Patch28: additional-man-pages.patch + %description A large collection of manual pages from the Linux Documentation Project (LDP). %prep -%setup -q -a 1 -a 2 +%setup -q -%patch21 -p1 - -# rename posix README so we don't have conflict -mv %{posix_name}/README %{posix_name}/%{posix_name_rel}.README +%patch -p1 -P 21 +%patch -p1 -P 22 +%patch -p1 -P 23 +%patch -p1 -P 24 +%patch -p1 -P 25 +%patch -p1 -P 26 +%patch -p1 -P 27 +%patch -p1 -P 28 ## Remove man pages we are not going to use ## @@ -64,9 +88,6 @@ rm man3/{db,btree,dbopen,hash,mpool,recno}.3 # we are not using SystemV anymore rm man7/boot.7 -# we do not have sccs (#203302) -rm %{posix_name}/man1p/{admin,delta,get,prs,rmdel,sact,sccs,unget,val,what}.1p - # remove man pages deprecated by libxcrypt (#1610307) rm man3/crypt{,_r}.3 @@ -75,12 +96,6 @@ rm man3/crypt{,_r}.3 %install make install prefix=/usr DESTDIR=$RPM_BUILD_ROOT -pushd %{posix_name} -make install prefix=/usr DESTDIR=$RPM_BUILD_ROOT -popd -pushd %{additional_name} -make install prefix=/usr DESTDIR=$RPM_BUILD_ROOT -popd # rename files for alternative usage mv %{buildroot}%{_mandir}/man7/man.7 %{buildroot}%{_mandir}/man7/man.%{name}.7 @@ -109,11 +124,36 @@ fi %files %doc README Changes -%doc %{posix_name}/POSIX-COPYRIGHT %{posix_name}/%{posix_name_rel}.{README,Announce} %ghost %{_mandir}/man7/man.7* %{_mandir}/man*/* %changelog +* Mon Aug 18 2025 Patsy Griffin - 6.04-7 +- Break up man-pages-additional-20140218.tar.xz +- Add rtas.2, swapcontext.2 and cons.saver.8 man pages as a patch. + Resolves: RHEL-101596 + +* Fri Jul 25 2025 Patsy Griffin - 6.04-6 +- Remove POSIX man-pages to comply with licensing guidelines. + Resolves: RHEL-101595 + +* Fri Jul 11 2025 Patsy Griffin - 6.04-5 +- sched(7): Mention autogroup disabled behavior. + Resolves: RHEL-67690 + +* Wed Jun 18 2025 Patsy Griffin - 6.04-4 +- Activate previously added patch to improve mktime documentation and + add 3 related upstream patches including an example. + Related: RHEL-58342 + +* Tue Oct 01 2024 Lukas Javorsky - 6.04-3 +- Add note about tm_isdst handling in mktime(3) +- Resolves: RHEL-58342 + +* Fri Sep 13 2024 Lukas Javorsky - 6.04-2 +- Add RTLD_DI_PHDR to dlinfo(3) +- Resolves: RHEL-53953 + * Thu Jul 13 2023 Lukas Javorsky - 6.04-1 - Rebase to 6.04 version per request from RHIVOS team - Resolves: RHEL-683