Import from AlmaLinux stable repository
This commit is contained in:
parent
2adf351f2c
commit
6d642e4211
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -0,0 +1,173 @@
|
||||
commit e541b219854e6be90b5628f88cd62edb44c9e9f2
|
||||
Author: Alejandro Colomar <alx@kernel.org>
|
||||
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: <https://lore.kernel.org/linux-man/20240823131024.GD2713@cventin.lip.ens-lyon.fr/T/#t>
|
||||
Link: <https://lore.kernel.org/linux-man/6un6baaq5tez23irtycuvzqtuh7a4sdrf2px7tnyb3y6iqoxmq@2ofln4cd27ep/T/#t>
|
||||
Link: <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3147.txt>
|
||||
Link: <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3148.doc>
|
||||
Link: <https://austingroupbugs.net/view.php?id=1614>
|
||||
Link: <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf#subsubsection.7.29.2.3>
|
||||
Reported-by: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Cc: Vincent Lefevre <vincent@vinc17.net>
|
||||
Cc: DJ Delorie <dj@redhat.com>
|
||||
Cc: Carlos O'Donell <carlos@redhat.com>
|
||||
Cc: Xi Ruoyao <xry111@xry111.site>
|
||||
Cc: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
|
||||
Cc: "Robert C. Seacord" <rcseacord@gmail.com>
|
||||
Cc: Jens Gustedt <jens.gustedt@inria.fr>
|
||||
Cc: Robert Elz <kre@munnari.oz.au>
|
||||
Cc: Andrew Josey <ajosey@opengroup.org>
|
||||
Cc: Geoff Clare <gwc@opengroup.org>
|
||||
Cc: Hans Åberg <haberg-1@telia.com>
|
||||
Cc: GNU C Library <libc-alpha@sourceware.org>
|
||||
Cc: Austin Group <austin-group-l@opengroup.org>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
|
||||
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 <err.h>
|
||||
+#include <stdint.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <time.h>
|
||||
+\&
|
||||
+#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),
|
||||
76
SOURCES/0000-sched.7-Clarifications-corrections.patch
Normal file
76
SOURCES/0000-sched.7-Clarifications-corrections.patch
Normal file
@ -0,0 +1,76 @@
|
||||
commit ca69daf45f94fda061f796efcc4f24ca76d8e380
|
||||
Author: Phil Auld <pauld@redhat.com>
|
||||
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 <codonell@redhat.com>
|
||||
Signed-off-by: Phil Auld <pauld@redhat.com>
|
||||
Message-ID: <20250116143747.2366152-1-pauld@redhat.com>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
|
||||
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
|
||||
@ -0,0 +1,32 @@
|
||||
commit 6a7f1461b0e5474d50ef1920558dec103c0c058f
|
||||
Author: Alejandro Colomar <alx@kernel.org>
|
||||
Date: Sat Aug 24 00:20:49 2024 +0200
|
||||
|
||||
ctime.3: Move NOTES to a subsection within CAVEATS
|
||||
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
|
||||
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
|
||||
@ -0,0 +1,44 @@
|
||||
From f1016b60769174da8e396e30fd25f58bb58d4232 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Weimer <fweimer@redhat.com>
|
||||
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 <fweimer@redhat.com>
|
||||
Message-ID: <87o75chpwb.fsf@oldenburg.str.redhat.com>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
---
|
||||
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
|
||||
@ -0,0 +1,76 @@
|
||||
From 9fdca71e4aba3605caa88b0c9eff3dc2c3f6fcfe Mon Sep 17 00:00:00 2001
|
||||
From: DJ Delorie <dj@redhat.com>
|
||||
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: <https://www.redhat.com/en/blog/brief-history-mktime>
|
||||
Cc: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Cc: Carlos O'Donell <carlos@redhat.com>
|
||||
Signed-off-by: DJ Delorie <dj@redhat.com>
|
||||
Message-ID: <xncylqiznb.fsf@greed.delorie.com>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
---
|
||||
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
|
||||
|
||||
@ -0,0 +1,162 @@
|
||||
commit bd576aaf5fce40100133c1d48c02eacbf25594c8
|
||||
Author: Alejandro Colomar <alx@kernel.org>
|
||||
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: <https://www.redhat.com/en/blog/brief-history-mktime>
|
||||
Cc: DJ Delorie <dj@redhat.com>
|
||||
Cc: Carlos O'Donell <carlos@redhat.com>
|
||||
Cc: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
|
||||
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 <err.h>
|
||||
+#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
#include <time.h>
|
||||
\&
|
||||
#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
|
||||
190
SOURCES/additional-man-pages.patch
Normal file
190
SOURCES/additional-man-pages.patch
Normal file
@ -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 <varekova@fedoraproject.org>
|
||||
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 <kasal@fedoraproject.org>
|
||||
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 <rrbranco@br.ibm.com>
|
||||
+.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 <rrbranco@br.ibm.com>
|
||||
+.SH SEE ALSO
|
||||
+\fBmc\fP(1), \fBmcserv\fP(8)
|
||||
@ -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 <patsy@redhat.com> - 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 <patsy@redhat.com> - 6.04-6
|
||||
- Remove POSIX man-pages to comply with licensing guidelines.
|
||||
Resolves: RHEL-101595
|
||||
|
||||
* Fri Jul 11 2025 Patsy Griffin <patsy@redhat.com> - 6.04-5
|
||||
- sched(7): Mention autogroup disabled behavior.
|
||||
Resolves: RHEL-67690
|
||||
|
||||
* Wed Jun 18 2025 Patsy Griffin <patsy@redhat.com> - 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 <ljavorsk@redhat.com> - 6.04-3
|
||||
- Add note about tm_isdst handling in mktime(3)
|
||||
- Resolves: RHEL-58342
|
||||
|
||||
* Fri Sep 13 2024 Lukas Javorsky <ljavorsk@redhat.com> - 6.04-2
|
||||
- Add RTLD_DI_PHDR to dlinfo(3)
|
||||
- Resolves: RHEL-53953
|
||||
|
||||
* Thu Jul 13 2023 Lukas Javorsky <ljavorsk@redhat.com> - 6.04-1
|
||||
- Rebase to 6.04 version per request from RHIVOS team
|
||||
- Resolves: RHEL-683
|
||||
|
||||
Loading…
Reference in New Issue
Block a user