Compare commits
No commits in common. "imports/c9/procps-ng-3.3.17-4.el9" and "c8" have entirely different histories.
imports/c9
...
c8
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/procps-ng-3.3.17.tar.xz
|
||||
SOURCES/procps-ng-3.3.15.tar.xz
|
||||
|
@ -1 +1 @@
|
||||
a52952e8bc6aaab812176c00d25adc4d4e1552e2 SOURCES/procps-ng-3.3.17.tar.xz
|
||||
2929bc64f0cf7b2db997eef79b7187658e47230d SOURCES/procps-ng-3.3.15.tar.xz
|
||||
|
@ -1,55 +0,0 @@
|
||||
commit a1bc3bf207c64e2a26d8a7a3c20dd960e0e5c545
|
||||
Author: Jan Rybar <jrybar@redhat.com>
|
||||
Date: Thu May 6 16:30:54 2021 +0200
|
||||
|
||||
Coverity scan findings - memleaks, unused vars, potential nullptr dereferences
|
||||
|
||||
diff --git a/lib/test_process.c b/lib/test_process.c
|
||||
index e20b270d..f8ff5ed0 100644
|
||||
--- a/lib/test_process.c
|
||||
+++ b/lib/test_process.c
|
||||
@@ -69,6 +69,7 @@ signal_handler(int signum, siginfo_t *siginfo, void *ucontext)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+ free(signame);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
diff --git a/pmap.c b/pmap.c
|
||||
index 49a2a6a8..d8565fc3 100644
|
||||
--- a/pmap.c
|
||||
+++ b/pmap.c
|
||||
@@ -346,6 +346,9 @@ static void print_extended_maps (FILE *f)
|
||||
if (listnode == NULL) {
|
||||
assert(firstmapping == 2);
|
||||
listnode = calloc(1, sizeof *listnode);
|
||||
+ if (listnode == NULL)
|
||||
+ xerrx(EXIT_FAILURE, _("ERROR: memory allocation failed"));
|
||||
+
|
||||
if (listhead == NULL) {
|
||||
assert(listtail == NULL);
|
||||
listhead = listnode;
|
||||
diff --git a/watch.c b/watch.c
|
||||
index 1a95454e..772879cd 100644
|
||||
--- a/watch.c
|
||||
+++ b/watch.c
|
||||
@@ -124,8 +124,6 @@ static void reset_ansi(void)
|
||||
|
||||
static void init_ansi_colors(void)
|
||||
{
|
||||
- int color;
|
||||
-
|
||||
short ncurses_colors[] = {
|
||||
-1, COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW,
|
||||
COLOR_BLUE, COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE
|
||||
@@ -172,6 +170,9 @@ static int process_ansi_color_escape_sequence(char** escape_sequence) {
|
||||
// ESC[ 48;2;⟨r⟩;⟨g⟩;⟨b⟩ m Select RGB background color
|
||||
int num;
|
||||
|
||||
+ if (!escape_sequence)
|
||||
+ return 0; /* avoid NULLPTR dereference, return "not understood" */
|
||||
+
|
||||
if ((*escape_sequence)[0] != ';')
|
||||
return 0; /* not understood */
|
||||
|
60
SOURCES/procps-ng-3.3.15-cve-2023-4016.patch
Normal file
60
SOURCES/procps-ng-3.3.15-cve-2023-4016.patch
Normal file
@ -0,0 +1,60 @@
|
||||
diff --git a/ps/parser.c b/ps/parser.c
|
||||
index 4263a1f..b33f319 100644
|
||||
--- a/ps/parser.c
|
||||
+++ b/ps/parser.c
|
||||
@@ -31,7 +31,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
-#include "../proc/alloc.h"
|
||||
+#include "xalloc.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "c.h"
|
||||
@@ -184,8 +184,8 @@ static const char *parse_list(const char *arg, const char *(*parse_fn)(char *, s
|
||||
const char *err; /* error code that could or did happen */
|
||||
/*** prepare to operate ***/
|
||||
node = malloc(sizeof(selection_node));
|
||||
- node->u = malloc(strlen(arg)*sizeof(sel_union)); /* waste is insignificant */
|
||||
node->n = 0;
|
||||
+ node->u = NULL;
|
||||
buf = strdup(arg);
|
||||
/*** sanity check and count items ***/
|
||||
need_item = 1; /* true */
|
||||
@@ -199,12 +199,13 @@ static const char *parse_list(const char *arg, const char *(*parse_fn)(char *, s
|
||||
need_item=1;
|
||||
break;
|
||||
default:
|
||||
- if(need_item) items++;
|
||||
+ if(need_item && items<INT_MAX) items++;
|
||||
need_item=0;
|
||||
}
|
||||
} while (*++walk);
|
||||
if(need_item) goto parse_error;
|
||||
node->n = items;
|
||||
+ node->u = xcalloc(items, sizeof(sel_union));
|
||||
/*** actually parse the list ***/
|
||||
walk = buf;
|
||||
while(items--){
|
||||
@@ -1031,15 +1032,15 @@ static const char *parse_trailing_pids(void){
|
||||
thisarg = ps_argc - 1; /* we must be at the end now */
|
||||
|
||||
pidnode = malloc(sizeof(selection_node));
|
||||
- pidnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */
|
||||
+ pidnode->u = xcalloc(i, sizeof(sel_union)); /* waste is insignificant */
|
||||
pidnode->n = 0;
|
||||
|
||||
grpnode = malloc(sizeof(selection_node));
|
||||
- grpnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */
|
||||
+ grpnode->u = xcalloc(i, sizeof(sel_union)); /* waste is insignificant */
|
||||
grpnode->n = 0;
|
||||
|
||||
sidnode = malloc(sizeof(selection_node));
|
||||
- sidnode->u = malloc(i*sizeof(sel_union)); /* waste is insignificant */
|
||||
+ sidnode->u = xcalloc(i, sizeof(sel_union)); /* waste is insignificant */
|
||||
sidnode->n = 0;
|
||||
|
||||
while(i--){
|
||||
--
|
||||
2.40.1
|
||||
|
43
SOURCES/procps-ng-3.3.15-display-sig-unsafe.patch
Normal file
43
SOURCES/procps-ng-3.3.15-display-sig-unsafe.patch
Normal file
@ -0,0 +1,43 @@
|
||||
diff -up ./ps/display.c.ori ./ps/display.c
|
||||
--- ./ps/display.c.ori 2018-05-18 23:32:21.998979977 +0200
|
||||
+++ ./ps/display.c 2022-11-24 15:11:26.678314866 +0100
|
||||
@@ -44,26 +44,31 @@
|
||||
#define SIGCHLD SIGCLD
|
||||
#endif
|
||||
|
||||
+#define SIG_IS_TERM_OR_HUP(signo) (((signo) == SIGTERM) || (signo) == SIGHUP)
|
||||
+
|
||||
char *myname;
|
||||
|
||||
/* just reports a crash */
|
||||
static void signal_handler(int signo){
|
||||
if(signo==SIGPIPE) _exit(0); /* "ps | head" will cause this */
|
||||
/* fprintf() is not reentrant, but we _exit() anyway */
|
||||
- fprintf(stderr,
|
||||
- _("Signal %d (%s) caught by %s (%s).\n"),
|
||||
- signo,
|
||||
- signal_number_to_name(signo),
|
||||
- myname,
|
||||
- PACKAGE_VERSION
|
||||
- );
|
||||
+ if (!SIG_IS_TERM_OR_HUP(signo)) {
|
||||
+ fprintf(stderr,
|
||||
+ _("Signal %d (%s) caught by %s (%s).\n"),
|
||||
+ signo,
|
||||
+ signal_number_to_name(signo),
|
||||
+ myname,
|
||||
+ PACKAGE_VERSION
|
||||
+ );
|
||||
+ }
|
||||
switch (signo) {
|
||||
case SIGHUP:
|
||||
case SIGUSR1:
|
||||
case SIGUSR2:
|
||||
exit(EXIT_FAILURE);
|
||||
default:
|
||||
- error_at_line(0, 0, __FILE__, __LINE__, "%s", _("please report this bug"));
|
||||
+ if (!SIG_IS_TERM_OR_HUP(signo))
|
||||
+ error_at_line(0, 0, __FILE__, __LINE__, "%s", _("please report this bug"));
|
||||
signal(signo, SIG_DFL); /* allow core file creation */
|
||||
kill(getpid(), signo);
|
||||
_exit(EXIT_FAILURE);
|
28
SOURCES/procps-ng-3.3.15-pgrep-uid-conversion-overflow.patch
Normal file
28
SOURCES/procps-ng-3.3.15-pgrep-uid-conversion-overflow.patch
Normal file
@ -0,0 +1,28 @@
|
||||
commit c833a6241893c7e566a5eed762661942e4cd90d3
|
||||
Author: Todd Lewis <utoddl@gmail.com>
|
||||
Date: Mon Oct 29 18:33:48 2018 +0000
|
||||
|
||||
Fix user and group name to number conversion for uid/gid above 2^31.
|
||||
|
||||
diff --git a/pgrep.c b/pgrep.c
|
||||
index bde7448..8b82a54 100644
|
||||
--- a/pgrep.c
|
||||
+++ b/pgrep.c
|
||||
@@ -280,7 +280,7 @@ static int conv_uid (const char *restrict name, struct el *restrict e)
|
||||
xwarnx(_("invalid user name: %s"), name);
|
||||
return 0;
|
||||
}
|
||||
- e->num = pwd->pw_uid;
|
||||
+ e->num = (int) pwd->pw_uid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ static int conv_gid (const char *restrict name, struct el *restrict e)
|
||||
xwarnx(_("invalid group name: %s"), name);
|
||||
return 0;
|
||||
}
|
||||
- e->num = grp->gr_gid;
|
||||
+ e->num = (int) grp->gr_gid;
|
||||
return 1;
|
||||
}
|
||||
|
57
SOURCES/procps-ng-3.3.15-pgrep-uid-gid-overflow.patch
Normal file
57
SOURCES/procps-ng-3.3.15-pgrep-uid-gid-overflow.patch
Normal file
@ -0,0 +1,57 @@
|
||||
diff -up ./pgrep.c.ori ./pgrep.c
|
||||
--- ./pgrep.c.ori 2022-08-17 15:38:29.655530551 +0200
|
||||
+++ ./pgrep.c 2022-08-17 15:38:53.702661752 +0200
|
||||
@@ -204,8 +204,12 @@ static int strict_atol (const char *rest
|
||||
|
||||
for ( ; *str; ++str) {
|
||||
if (! isdigit (*str))
|
||||
- return (0);
|
||||
+ return 0;
|
||||
+ if (res >= LONG_MAX / 10)
|
||||
+ return 0;
|
||||
res *= 10;
|
||||
+ if (res >= LONG_MAX - (*str - '0'))
|
||||
+ return 0;
|
||||
res += *str - '0';
|
||||
}
|
||||
*value = sign * res;
|
||||
@@ -280,7 +284,7 @@ static int conv_uid (const char *restric
|
||||
xwarnx(_("invalid user name: %s"), name);
|
||||
return 0;
|
||||
}
|
||||
- e->num = (int) pwd->pw_uid;
|
||||
+ e->num = pwd->pw_uid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -297,7 +301,7 @@ static int conv_gid (const char *restric
|
||||
xwarnx(_("invalid group name: %s"), name);
|
||||
return 0;
|
||||
}
|
||||
- e->num = (int) grp->gr_gid;
|
||||
+ e->num = grp->gr_gid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
diff -up ./proc/readproc.h.ori ./proc/readproc.h
|
||||
--- ./proc/readproc.h.ori 2018-05-19 00:04:15.218532055 +0200
|
||||
+++ ./proc/readproc.h 2022-08-17 15:38:53.702661752 +0200
|
||||
@@ -159,12 +159,12 @@ typedef struct proc_t {
|
||||
session, // stat session id
|
||||
nlwp, // stat,status number of threads, or 0 if no clue
|
||||
tgid, // (special) thread group ID, the POSIX PID (see also: tid)
|
||||
- tty, // stat full device number of controlling terminal
|
||||
- /* FIXME: int uids & gids should be uid_t or gid_t from pwd.h */
|
||||
- euid, egid, // stat(),status effective
|
||||
- ruid, rgid, // status real
|
||||
- suid, sgid, // status saved
|
||||
- fuid, fgid, // status fs (used for file access only)
|
||||
+ tty; // stat full device number of controlling terminal
|
||||
+ uid_t euid; gid_t egid; // stat(),status effective
|
||||
+ uid_t ruid; gid_t rgid; // status real
|
||||
+ uid_t suid; gid_t sgid; // status saved
|
||||
+ uid_t fuid; gid_t fgid; // status fs (used for file access only)
|
||||
+ int
|
||||
tpgid, // stat terminal process group id
|
||||
exit_signal, // stat might not be SIGCHLD
|
||||
processor; // stat current (or most recent?) CPU
|
112
SOURCES/procps-ng-3.3.15-pidof-kernel-workers-option.patch
Normal file
112
SOURCES/procps-ng-3.3.15-pidof-kernel-workers-option.patch
Normal file
@ -0,0 +1,112 @@
|
||||
From d9b3415d2a761cb7669a67f5309665335d5eb4c4 Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Mon, 9 Nov 2020 16:10:22 +0100
|
||||
Subject: [PATCH] New '-w' option for kernel workers.
|
||||
|
||||
---
|
||||
pidof.1 | 3 +++
|
||||
pidof.c | 17 ++++++++++++-----
|
||||
2 files changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/pidof.1 b/pidof.1
|
||||
index 1368704..c85c088 100644
|
||||
--- a/pidof.1
|
||||
+++ b/pidof.1
|
||||
@@ -45,6 +45,9 @@ the current root directory of processes they do not own.
|
||||
.IP \-x
|
||||
Scripts too - this causes the program to also return process id's of
|
||||
shells running the named scripts.
|
||||
+.IP \-w
|
||||
+Show also processes that do not have visible command line (e.g. kernel
|
||||
+worker threads).
|
||||
.IP "-o \fIomitpid\fP"
|
||||
Tells \fIpidof\fP to omit processes with that process id. The special
|
||||
pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP
|
||||
diff --git a/pidof.c b/pidof.c
|
||||
index 94e19bb..7fdf27a 100644
|
||||
--- a/pidof.c
|
||||
+++ b/pidof.c
|
||||
@@ -55,6 +55,8 @@ static char *program = NULL;
|
||||
static int opt_single_shot = 0; /* -s */
|
||||
static int opt_scripts_too = 0; /* -x */
|
||||
static int opt_rootdir_check = 0; /* -c */
|
||||
+static int opt_with_workers = 0; /* -w */
|
||||
+
|
||||
|
||||
static char *pidof_root = NULL;
|
||||
|
||||
@@ -69,6 +71,7 @@ static int __attribute__ ((__noreturn__)) usage(int opt)
|
||||
fputs(_(" -s, --single-shot return one PID only\n"), fp);
|
||||
fputs(_(" -c, --check-root omit processes with different root\n"), fp);
|
||||
fputs(_(" -x also find shells running the named scripts\n"), fp);
|
||||
+ fputs(_(" -w, --with-workers show kernel workers too\n"), fp);
|
||||
fputs(_(" -o, --omit-pid <PID,...> omit processes with PID\n"), fp);
|
||||
fputs(_(" -S, --separator SEP use SEP as separator put between PIDs"), fp);
|
||||
fputs(USAGE_SEPARATOR, fp);
|
||||
@@ -142,7 +145,6 @@ static void select_procs (void)
|
||||
static int size = 0;
|
||||
char *cmd_arg0, *cmd_arg0base;
|
||||
char *cmd_arg1, *cmd_arg1base;
|
||||
- char *stat_cmd;
|
||||
char *program_base;
|
||||
char *root_link;
|
||||
char *exe_link;
|
||||
@@ -168,10 +170,9 @@ static void select_procs (void)
|
||||
}
|
||||
}
|
||||
|
||||
- if (!is_omitted(task.XXXID)) {
|
||||
+ if (!is_omitted(task.XXXID) && ((task.cmdline && *task.cmdline) || opt_with_workers)) {
|
||||
|
||||
cmd_arg0 = (task.cmdline && *task.cmdline) ? *task.cmdline : "\0";
|
||||
- stat_cmd = task.cmd ? task.cmd : "\0";
|
||||
|
||||
/* processes starting with '-' are login shells */
|
||||
if (*cmd_arg0 == '-') {
|
||||
@@ -193,7 +194,7 @@ static void select_procs (void)
|
||||
!strcmp(program_base, cmd_arg0) ||
|
||||
!strcmp(program, cmd_arg0) ||
|
||||
|
||||
- !strcmp(program, stat_cmd) ||
|
||||
+ (opt_with_workers && !strcmp(program, task.cmd)) ||
|
||||
|
||||
!strcmp(program, exe_link_base) ||
|
||||
!strcmp(program, exe_link))
|
||||
@@ -293,13 +294,14 @@ int main (int argc, char **argv)
|
||||
int first_pid = 1;
|
||||
|
||||
const char *separator = " ";
|
||||
- const char *opts = "scnxmo:S:?Vh";
|
||||
+ const char *opts = "scnxwmo:S:?Vh";
|
||||
|
||||
static const struct option longopts[] = {
|
||||
{"check-root", no_argument, NULL, 'c'},
|
||||
{"single-shot", no_argument, NULL, 's'},
|
||||
{"omit-pid", required_argument, NULL, 'o'},
|
||||
{"separator", required_argument, NULL, 's'},
|
||||
+ {"with-workers", no_argument, NULL, 'w'},
|
||||
{"help", no_argument, NULL, 'h'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
{NULL, 0, NULL, 0}
|
||||
@@ -325,6 +327,9 @@ int main (int argc, char **argv)
|
||||
case 'x':
|
||||
opt_scripts_too = 1;
|
||||
break;
|
||||
+ case 'w':
|
||||
+ opt_with_workers = 1;
|
||||
+ break;
|
||||
case 'c':
|
||||
if (geteuid() == 0) {
|
||||
opt_rootdir_check = 1;
|
||||
@@ -358,6 +363,8 @@ int main (int argc, char **argv)
|
||||
|
||||
program = argv[optind++];
|
||||
|
||||
+ if (*program == '\0') continue;
|
||||
+
|
||||
select_procs(); /* get the list of matching processes */
|
||||
|
||||
if (proc_count) {
|
||||
--
|
||||
2.25.4
|
||||
|
@ -0,0 +1,13 @@
|
||||
diff --git a/pidof.c b/pidof.c
|
||||
index 7fdf27a..2166265 100644
|
||||
--- a/pidof.c
|
||||
+++ b/pidof.c
|
||||
@@ -300,7 +300,7 @@ int main (int argc, char **argv)
|
||||
{"check-root", no_argument, NULL, 'c'},
|
||||
{"single-shot", no_argument, NULL, 's'},
|
||||
{"omit-pid", required_argument, NULL, 'o'},
|
||||
- {"separator", required_argument, NULL, 's'},
|
||||
+ {"separator", required_argument, NULL, 'S'},
|
||||
{"with-workers", no_argument, NULL, 'w'},
|
||||
{"help", no_argument, NULL, 'h'},
|
||||
{"version", no_argument, NULL, 'V'},
|
54
SOURCES/procps-ng-3.3.15-pidof-show-worker-threads.patch
Normal file
54
SOURCES/procps-ng-3.3.15-pidof-show-worker-threads.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 7dcb6b8eb6c69584d0d56797935f836bc06642f5 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Rybar <jrybar@redhat.com>
|
||||
Date: Tue, 7 Apr 2020 13:41:48 +0200
|
||||
Subject: [PATCH] pidof: show worker threads
|
||||
|
||||
Reimplementation of pidof for procps toolset contains sort of deactivated code and does not return results for processes without task.cmdline entry (usually kernel worker threads). Old pidof and pgrep do that in comparison. Despite all perks provided by using pgrep instead, pidof should show those workers again.
|
||||
---
|
||||
pidof.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/pidof.c b/pidof.c
|
||||
index b0d08cc..90ecb13 100644
|
||||
--- a/pidof.c
|
||||
+++ b/pidof.c
|
||||
@@ -142,6 +142,7 @@ static void select_procs (void)
|
||||
static int size = 0;
|
||||
char *cmd_arg0, *cmd_arg0base;
|
||||
char *cmd_arg1, *cmd_arg1base;
|
||||
+ char *stat_cmd;
|
||||
char *program_base;
|
||||
char *root_link;
|
||||
char *exe_link;
|
||||
@@ -167,9 +168,10 @@ static void select_procs (void)
|
||||
}
|
||||
}
|
||||
|
||||
- if (!is_omitted(task.XXXID) && task.cmdline && *task.cmdline) {
|
||||
+ if (!is_omitted(task.XXXID)) {
|
||||
|
||||
- cmd_arg0 = *task.cmdline;
|
||||
+ cmd_arg0 = (task.cmdline && *task.cmdline) ? *task.cmdline : "\0";
|
||||
+ stat_cmd = task.cmd ? task.cmd : "\0";
|
||||
|
||||
/* processes starting with '-' are login shells */
|
||||
if (*cmd_arg0 == '-') {
|
||||
@@ -191,12 +193,14 @@ static void select_procs (void)
|
||||
!strcmp(program_base, cmd_arg0) ||
|
||||
!strcmp(program, cmd_arg0) ||
|
||||
|
||||
+ !strcmp(program, stat_cmd) ||
|
||||
+
|
||||
!strcmp(program, exe_link_base) ||
|
||||
!strcmp(program, exe_link))
|
||||
{
|
||||
match = 1;
|
||||
|
||||
- } else if (opt_scripts_too && *(task.cmdline+1)) {
|
||||
+ } else if (opt_scripts_too && task.cmdline && *(task.cmdline+1)) {
|
||||
|
||||
cmd_arg1 = *(task.cmdline+1);
|
||||
|
||||
--
|
||||
2.25.2
|
||||
|
23
SOURCES/procps-ng-3.3.15-ps-out-of-bonds-read.patch
Normal file
23
SOURCES/procps-ng-3.3.15-ps-out-of-bonds-read.patch
Normal file
@ -0,0 +1,23 @@
|
||||
diff --git a/ps/display.c b/ps/display.c
|
||||
index 1927fd6..e7ab351 100644
|
||||
--- a/ps/display.c
|
||||
+++ b/ps/display.c
|
||||
@@ -357,7 +357,7 @@ static void simple_spew(void){
|
||||
if (selection_list && selection_list->typecode == SEL_PID_QUICK) {
|
||||
flags |= PROC_PID;
|
||||
|
||||
- pidlist = (pid_t*) malloc(selection_list->n * sizeof(pid_t));
|
||||
+ pidlist = (pid_t*) malloc((selection_list->n + 1) * sizeof(pid_t));
|
||||
if (!pidlist) {
|
||||
fprintf(stderr, _("error: not enough memory\n"));
|
||||
exit(1);
|
||||
@@ -366,6 +366,9 @@ static void simple_spew(void){
|
||||
for (i = 0; i < selection_list->n; i++) {
|
||||
pidlist[i] = selection_list->u[selection_list->n-i-1].pid;
|
||||
}
|
||||
+
|
||||
+ // delimit the array with nul object (0); RHBZ#2153813
|
||||
+ pidlist[selection_list->n] = (pid_t)0;
|
||||
}
|
||||
|
||||
ptp = openproc(flags, pidlist);
|
39
SOURCES/procps-ng-3.3.15-ps-select.patch
Normal file
39
SOURCES/procps-ng-3.3.15-ps-select.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From 06995518605fed7a1a29551be0eff01b2f9e89b7 Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Tue, 13 Dec 2022 16:02:50 -0500
|
||||
Subject: [PATCH]
|
||||
|
||||
---
|
||||
ps/common.h | 2 +-
|
||||
ps/select.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ps/common.h b/ps/common.h
|
||||
index 905d320..fc4d3a8 100644
|
||||
--- a/ps/common.h
|
||||
+++ b/ps/common.h
|
||||
@@ -189,7 +189,7 @@ typedef union sel_union {
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
dev_t tty;
|
||||
- char cmd[64]; /* this is _not_ \0 terminated */
|
||||
+ char cmd[16]; /* this is _not_ \0 terminated */
|
||||
} sel_union;
|
||||
|
||||
typedef struct selection_node {
|
||||
diff --git a/ps/select.c b/ps/select.c
|
||||
index f58ca25..e12982d 100644
|
||||
--- a/ps/select.c
|
||||
+++ b/ps/select.c
|
||||
@@ -117,7 +117,7 @@ static int proc_was_listed(proc_t *buf){
|
||||
break; case SEL_SESS: return_if_match(session,pid);
|
||||
|
||||
break; case SEL_COMM: i=sn->n; while(i--)
|
||||
- if(!strncmp( buf->cmd, (*(sn->u+i)).cmd, 63 )) return 1;
|
||||
+ if(!strncmp( buf->cmd, (*(sn->u+i)).cmd, 15 )) return 1;
|
||||
|
||||
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
96
SOURCES/procps-ng-3.3.15-sysctl-config-dir-order.patch
Normal file
96
SOURCES/procps-ng-3.3.15-sysctl-config-dir-order.patch
Normal file
@ -0,0 +1,96 @@
|
||||
diff -up ./NEWS.ori ./NEWS
|
||||
diff -up ./sysctl.8.ori ./sysctl.8
|
||||
--- ./sysctl.8.ori 2018-03-03 07:59:18.064843718 +0100
|
||||
+++ ./sysctl.8 2022-07-29 16:33:02.906648974 +0200
|
||||
@@ -6,7 +6,7 @@
|
||||
.\" 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."
|
||||
-.TH SYSCTL "8" "2018-02-19" "procps-ng" "System Administration"
|
||||
+.TH SYSCTL "8" "2020-02-27" "procps-ng" "System Administration"
|
||||
.SH NAME
|
||||
sysctl \- configure kernel parameters at runtime
|
||||
.SH SYNOPSIS
|
||||
@@ -81,10 +81,10 @@ directories in the following list in giv
|
||||
Once a file of a given filename is loaded, any file of the same name
|
||||
in subsequent directories is ignored.
|
||||
.br
|
||||
-/run/sysctl.d/*.conf
|
||||
-.br
|
||||
/etc/sysctl.d/*.conf
|
||||
.br
|
||||
+/run/sysctl.d/*.conf
|
||||
+.br
|
||||
/usr/local/lib/sysctl.d/*.conf
|
||||
.br
|
||||
/usr/lib/sysctl.d/*.conf
|
||||
@@ -152,6 +152,16 @@ echo 256 > /proc/sys/net/ipv6/neigh/eth0
|
||||
.SH FILES
|
||||
.I /proc/sys
|
||||
.br
|
||||
+.I /etc/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /run/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /usr/local/lib/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /usr/lib/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /lib/sysctl.d/*.conf
|
||||
+.br
|
||||
.I /etc/sysctl.conf
|
||||
.SH SEE ALSO
|
||||
.BR sysctl.conf (5)
|
||||
diff -up ./sysctl.conf.5.ori ./sysctl.conf.5
|
||||
--- ./sysctl.conf.5.ori 2017-12-22 05:13:14.771653252 +0100
|
||||
+++ ./sysctl.conf.5 2022-07-29 16:33:02.907648980 +0200
|
||||
@@ -51,22 +51,22 @@ to list all possible parameters. The des
|
||||
.RE
|
||||
.PP
|
||||
.SH FILES
|
||||
-.TP
|
||||
-/run/sysctl.d/*.conf
|
||||
-.TQ
|
||||
-/etc/sysctl.d/*.conf
|
||||
-.TQ
|
||||
-/usr/local/lib/sysctl.d/*.conf
|
||||
-.TQ
|
||||
-/usr/lib/sysctl.d/*.conf
|
||||
-.TQ
|
||||
-/lib/sysctl.d/*.conf
|
||||
-.TQ
|
||||
-/etc/sysctl.conf
|
||||
+.I /etc/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /run/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /usr/local/lib/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /usr/lib/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /lib/sysctl.d/*.conf
|
||||
+.br
|
||||
+.I /etc/sysctl.conf
|
||||
+
|
||||
The paths where
|
||||
-sysctl
|
||||
+.B sysctl
|
||||
preload files usually exist. See also
|
||||
-sysctl
|
||||
+.B sysctl
|
||||
option
|
||||
.IR \-\-system .
|
||||
.SH SEE ALSO
|
||||
diff -up ./sysctl.c.ori ./sysctl.c
|
||||
--- ./sysctl.c.ori 2018-05-17 13:23:41.574213737 +0200
|
||||
+++ ./sysctl.c 2022-07-29 16:33:02.907648980 +0200
|
||||
@@ -614,8 +614,8 @@ static int PreloadSystem(void)
|
||||
{
|
||||
unsigned di, i;
|
||||
const char *dirs[] = {
|
||||
- "/run/sysctl.d",
|
||||
"/etc/sysctl.d",
|
||||
+ "/run/sysctl.d",
|
||||
"/usr/local/lib/sysctl.d",
|
||||
"/usr/lib/sysctl.d",
|
||||
"/lib/sysctl.d",
|
40
SOURCES/procps-ng-3.3.15-uptime-pretty-mod.patch
Normal file
40
SOURCES/procps-ng-3.3.15-uptime-pretty-mod.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 7eade2544e1c45bc516744aeaccc45df1d8f42df Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Walker <kwalker@redhat.com>
|
||||
Date: Tue, 11 Feb 2020 14:30:39 -0500
|
||||
Subject: [PATCH] whattime: Refactor the pretty-print evaluation
|
||||
|
||||
This avoids rounding errors such as in the case of 364 days of uptime which
|
||||
results in only output that prints at the hour and below.
|
||||
---
|
||||
proc/whattime.c | 15 ++++++++++++---
|
||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/proc/whattime.c b/proc/whattime.c
|
||||
index c223cad..3e1b65c 100644
|
||||
--- a/proc/whattime.c
|
||||
+++ b/proc/whattime.c
|
||||
@@ -69,9 +69,18 @@ char *sprint_uptime(int human_readable) {
|
||||
|
||||
if (human_readable) {
|
||||
updecades = (int) uptime_secs / (60*60*24*365*10);
|
||||
- upyears = ((int) uptime_secs / (60*60*24*365)) % 10;
|
||||
- upweeks = ((int) uptime_secs / (60*60*24*7)) % 52;
|
||||
- updays = ((int) uptime_secs / (60*60*24)) % 7;
|
||||
+ if (updecades)
|
||||
+ uptime_secs -= updecades * (60*60*24*365*10);
|
||||
+
|
||||
+ upyears = (int) uptime_secs / (60*60*24*365);
|
||||
+ if (upyears)
|
||||
+ uptime_secs -= upyears * (60*60*24*365);
|
||||
+
|
||||
+ upweeks = (int) uptime_secs / (60*60*24*7);
|
||||
+ if (upweeks)
|
||||
+ uptime_secs -= upweeks * (60*60*24*7);
|
||||
+
|
||||
+ updays = (int) uptime_secs / (60*60*24);
|
||||
}
|
||||
else
|
||||
updays = (int) uptime_secs / (60*60*24);
|
||||
--
|
||||
2.24.1
|
||||
|
147
SOURCES/procps-ng-3.3.15-vmstat-omit-first-report.patch
Normal file
147
SOURCES/procps-ng-3.3.15-vmstat-omit-first-report.patch
Normal file
@ -0,0 +1,147 @@
|
||||
diff --git a/vmstat.8 b/vmstat.8
|
||||
index fa0938c..fd1078f 100644
|
||||
--- a/vmstat.8
|
||||
+++ b/vmstat.8
|
||||
@@ -87,6 +87,9 @@ Display version information and exit.
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Display help and exit.
|
||||
+.TP
|
||||
+\fB\-y\fR, \fB\-\-no-first\fR
|
||||
+Omits first report with statistics since system boot.
|
||||
.PD
|
||||
.SH "FIELD DESCRIPTION FOR VM MODE"
|
||||
.SS
|
||||
diff --git a/vmstat.c b/vmstat.c
|
||||
index f2aa2f4..07496cd 100644
|
||||
--- a/vmstat.c
|
||||
+++ b/vmstat.c
|
||||
@@ -75,6 +75,9 @@ static int a_option;
|
||||
/* "-w" means "wide output" */
|
||||
static int w_option;
|
||||
|
||||
+/* "-y" means "skip first output" */
|
||||
+static int y_option;
|
||||
+
|
||||
/* "-t" means "show timestamp" */
|
||||
static int t_option;
|
||||
|
||||
@@ -104,6 +107,7 @@ static void __attribute__ ((__noreturn__))
|
||||
fputs(_(" -S, --unit <char> define display unit\n"), out);
|
||||
fputs(_(" -w, --wide wide output\n"), out);
|
||||
fputs(_(" -t, --timestamp show timestamp\n"), out);
|
||||
+ fputs(_(" -y, --no-first skips first line of output\n"), out);
|
||||
fputs(USAGE_SEPARATOR, out);
|
||||
fputs(USAGE_HELP, out);
|
||||
fputs(USAGE_VERSION, out);
|
||||
@@ -304,43 +308,47 @@ static void new_format(void)
|
||||
cpu_zzz, pgpgin, pgpgout, pswpin, pswpout, intr, ctxt, &running,
|
||||
&blocked, &dummy_1, &dummy_2);
|
||||
|
||||
- if (t_option) {
|
||||
- (void) time( &the_time );
|
||||
- tm_ptr = localtime( &the_time );
|
||||
- strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr);
|
||||
- }
|
||||
+ if (y_option == 0) {
|
||||
+ if (t_option) {
|
||||
+ (void) time( &the_time );
|
||||
+ tm_ptr = localtime( &the_time );
|
||||
+ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr);
|
||||
+ }
|
||||
|
||||
- duse = *cpu_use + *cpu_nic;
|
||||
- dsys = *cpu_sys + *cpu_xxx + *cpu_yyy;
|
||||
- didl = *cpu_idl;
|
||||
- diow = *cpu_iow;
|
||||
- dstl = *cpu_zzz;
|
||||
- Div = duse + dsys + didl + diow + dstl;
|
||||
- if (!Div) Div = 1, didl = 1;
|
||||
- divo2 = Div / 2UL;
|
||||
- printf(w_option ? wide_format : format,
|
||||
- running, blocked,
|
||||
- unitConvert(kb_swap_used), unitConvert(kb_main_free),
|
||||
- unitConvert(a_option?kb_inactive:kb_main_buffers),
|
||||
- unitConvert(a_option?kb_active:kb_main_cached),
|
||||
- (unsigned)( (unitConvert(*pswpin * kb_per_page) * hz + divo2) / Div ),
|
||||
- (unsigned)( (unitConvert(*pswpout * kb_per_page) * hz + divo2) / Div ),
|
||||
- (unsigned)( (*pgpgin * hz + divo2) / Div ),
|
||||
- (unsigned)( (*pgpgout * hz + divo2) / Div ),
|
||||
- (unsigned)( (*intr * hz + divo2) / Div ),
|
||||
- (unsigned)( (*ctxt * hz + divo2) / Div ),
|
||||
- (unsigned)( (100*duse + divo2) / Div ),
|
||||
- (unsigned)( (100*dsys + divo2) / Div ),
|
||||
- (unsigned)( (100*didl + divo2) / Div ),
|
||||
- (unsigned)( (100*diow + divo2) / Div ),
|
||||
- (unsigned)( (100*dstl + divo2) / Div )
|
||||
- );
|
||||
+ duse = *cpu_use + *cpu_nic;
|
||||
+ dsys = *cpu_sys + *cpu_xxx + *cpu_yyy;
|
||||
+ didl = *cpu_idl;
|
||||
+ diow = *cpu_iow;
|
||||
+ dstl = *cpu_zzz;
|
||||
+ Div = duse + dsys + didl + diow + dstl;
|
||||
+ if (!Div) Div = 1, didl = 1;
|
||||
+ divo2 = Div / 2UL;
|
||||
+ printf(w_option ? wide_format : format,
|
||||
+ running, blocked,
|
||||
+ unitConvert(kb_swap_used), unitConvert(kb_main_free),
|
||||
+ unitConvert(a_option?kb_inactive:kb_main_buffers),
|
||||
+ unitConvert(a_option?kb_active:kb_main_cached),
|
||||
+ (unsigned)( (unitConvert(*pswpin * kb_per_page) * hz + divo2) / Div ),
|
||||
+ (unsigned)( (unitConvert(*pswpout * kb_per_page) * hz + divo2) / Div ),
|
||||
+ (unsigned)( (*pgpgin * hz + divo2) / Div ),
|
||||
+ (unsigned)( (*pgpgout * hz + divo2) / Div ),
|
||||
+ (unsigned)( (*intr * hz + divo2) / Div ),
|
||||
+ (unsigned)( (*ctxt * hz + divo2) / Div ),
|
||||
+ (unsigned)( (100*duse + divo2) / Div ),
|
||||
+ (unsigned)( (100*dsys + divo2) / Div ),
|
||||
+ (unsigned)( (100*didl + divo2) / Div ),
|
||||
+ (unsigned)( (100*diow + divo2) / Div ),
|
||||
+ (unsigned)( (100*dstl + divo2) / Div )
|
||||
+ );
|
||||
|
||||
- if (t_option) {
|
||||
- printf(" %s", timebuf);
|
||||
- }
|
||||
+ if (t_option) {
|
||||
+ printf(" %s", timebuf);
|
||||
+ }
|
||||
|
||||
- printf("\n");
|
||||
+ printf("\n");
|
||||
+ }
|
||||
+ else
|
||||
+ num_updates++;
|
||||
|
||||
/* main loop */
|
||||
for (i = 1; infinite_updates || i < num_updates; i++) {
|
||||
@@ -865,6 +873,7 @@ int main(int argc, char *argv[])
|
||||
{"timestamp", no_argument, NULL, 't'},
|
||||
{"help", no_argument, NULL, 'h'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
+ {"no-first", no_argument, NULL, 'y'},
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
@@ -877,7 +886,7 @@ int main(int argc, char *argv[])
|
||||
atexit(close_stdout);
|
||||
|
||||
while ((c =
|
||||
- getopt_long(argc, argv, "afmnsdDp:S:wthV", longopts,
|
||||
+ getopt_long(argc, argv, "afmnsdDp:S:wthVy", longopts,
|
||||
NULL)) != EOF)
|
||||
switch (c) {
|
||||
case 'V':
|
||||
@@ -946,6 +955,11 @@ int main(int argc, char *argv[])
|
||||
case 't':
|
||||
t_option = 1;
|
||||
break;
|
||||
+ case 'y':
|
||||
+ /* Don't display stats since system restart */
|
||||
+ y_option = 1;
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
/* no other aguments defined yet. */
|
||||
usage(stderr);
|
41
SOURCES/procps-ng-3.3.15-vmstat-watch-manpage.patch
Normal file
41
SOURCES/procps-ng-3.3.15-vmstat-watch-manpage.patch
Normal file
@ -0,0 +1,41 @@
|
||||
commit 354b5a56bf2ea831427ab8268ec7101bd3870f8e
|
||||
Author: Jan Rybar <jrybar@redhat.com>
|
||||
Date: Thu Apr 30 17:06:18 2020 +0200
|
||||
|
||||
vmstat and watch manpage slight fixes
|
||||
|
||||
vmstat - align wording with proc manpage to clarify ambiguities (rhbz#1796043)
|
||||
watch - manpage presumes ntp tools are present by default (which they're not on rpm and deb distros, rhbz#1583669)
|
||||
|
||||
diff --git a/vmstat.8 b/vmstat.8
|
||||
index e408bca..dcc1b1e 100644
|
||||
--- a/vmstat.8
|
||||
+++ b/vmstat.8
|
||||
@@ -93,7 +93,7 @@ Display help and exit.
|
||||
.B "Procs"
|
||||
.nf
|
||||
r: The number of runnable processes (running or waiting for run time).
|
||||
-b: The number of processes in uninterruptible sleep.
|
||||
+b: The number of processes blocked waiting for I/O to complete.
|
||||
.fi
|
||||
.PP
|
||||
.SS
|
||||
diff --git a/watch.1 b/watch.1
|
||||
index 256c36b..e06e04e 100644
|
||||
--- a/watch.1
|
||||
+++ b/watch.1
|
||||
@@ -34,7 +34,7 @@ every
|
||||
.I interval
|
||||
seconds. Try it with
|
||||
.B ntptime
|
||||
-and notice how the fractional seconds stays (nearly) the same, as opposed to
|
||||
+(if present) and notice how the fractional seconds stays (nearly) the same, as opposed to
|
||||
normal mode where they continuously increase.
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-no\-title\fR
|
||||
@@ -190,4 +190,4 @@ watch uname \-r
|
||||
.I \-p
|
||||
isn't guaranteed to work across reboots, especially in the face of
|
||||
.B ntpdate
|
||||
-or other bootup time-changing mechanisms)
|
||||
+(if present) or other bootup time-changing mechanisms)
|
@ -1,286 +0,0 @@
|
||||
From 52afb3a8d31871d28b1c39573a7ed5196c2d5023 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@dropbear.xyz>
|
||||
Date: Mon, 15 Feb 2021 21:10:06 +1100
|
||||
Subject: [PATCH] pidwait: Rename from pwait
|
||||
|
||||
pwait is already in at least Debian in a different package
|
||||
|
||||
References:
|
||||
https://bugs.debian.org/982391
|
||||
---
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index e037e4c..de15e13 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -49,8 +49,8 @@ bin_PROGRAMS = \
|
||||
uptime \
|
||||
vmstat \
|
||||
w
|
||||
-if BUILD_PWAIT
|
||||
-bin_PROGRAMS += pwait
|
||||
+if BUILD_PIDWAIT
|
||||
+bin_PROGRAMS += pidwait
|
||||
endif
|
||||
else
|
||||
usrbin_exec_PROGRAMS += \
|
||||
@@ -85,8 +85,8 @@ dist_man_MANS += \
|
||||
sysctl.conf.5 \
|
||||
ps/ps.1
|
||||
|
||||
-if BUILD_PWAIT
|
||||
-dist_man_MANS += pwait.1
|
||||
+if BUILD_PIDWAIT
|
||||
+dist_man_MANS += pidwait.1
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -199,8 +199,8 @@ free_SOURCES = free.c lib/strutils.c lib/fileutils.c
|
||||
pgrep_SOURCES = pgrep.c lib/fileutils.c lib/nsutils.c
|
||||
pkill_SOURCES = pgrep.c lib/fileutils.c lib/nsutils.c
|
||||
pmap_SOURCES = pmap.c lib/fileutils.c
|
||||
-if BUILD_PWAIT
|
||||
-pwait_SOURCES = pgrep.c lib/fileutils.c lib/nsutils.c
|
||||
+if BUILD_PIDWAIT
|
||||
+pidwait_SOURCES = pgrep.c lib/fileutils.c lib/nsutils.c
|
||||
endif
|
||||
if !CYGWIN
|
||||
pwdx_SOURCES = pwdx.c lib/fileutils.c
|
||||
diff --git a/NEWS b/NEWS
|
||||
index da63c9c..5fe6761 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -1,3 +1,7 @@
|
||||
+procps-ng-NEXT
|
||||
+---------------
|
||||
+ * Rename pwait to pidwait
|
||||
+
|
||||
procps-ng-3.3.17
|
||||
---------------
|
||||
* library: Incremented to 8:3:0
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 56a8669..750c0fb 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -132,20 +132,20 @@ AC_TRY_COMPILE([#include <errno.h>],
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no))
|
||||
|
||||
-AC_CHECK_FUNC([pidfd_open], [enable_pwait=yes], [
|
||||
+AC_CHECK_FUNC([pidfd_open], [enable_pidwait=yes], [
|
||||
AC_MSG_CHECKING([for __NR_pidfd_open])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||
#include <sys/syscall.h>
|
||||
#ifndef __NR_pidfd_open
|
||||
#error __NR_pidfd_open not defined
|
||||
#endif
|
||||
- ])], [enable_pwait=yes], [enable_pwait=no])
|
||||
- AC_MSG_RESULT([$enable_pwait])
|
||||
+ ])], [enable_pidwait=yes], [enable_pidwait=no])
|
||||
+ AC_MSG_RESULT([$enable_pidwait])
|
||||
])
|
||||
-if test "$enable_pwait" = yes; then
|
||||
- AC_DEFINE([ENABLE_PWAIT], [1], [Enable pwait])
|
||||
+if test "$enable_pidwait" = yes; then
|
||||
+ AC_DEFINE([ENABLE_PIDWAIT], [1], [Enable pidwait])
|
||||
fi
|
||||
-AM_CONDITIONAL([BUILD_PWAIT], [test x$enable_pwait = xyes])
|
||||
+AM_CONDITIONAL([BUILD_PIDWAIT], [test x$enable_pidwait = xyes])
|
||||
|
||||
dnl watch8bit must be before the AC_ARG_WITH set as it sets up ncurses
|
||||
AC_SUBST([WITH_WATCH8BIT])
|
||||
diff --git a/pgrep.1 b/pgrep.1
|
||||
index 4f8907b..af6dcd5 100644
|
||||
--- a/pgrep.1
|
||||
+++ b/pgrep.1
|
||||
@@ -9,7 +9,7 @@
|
||||
.\"
|
||||
.TH PGREP "1" "2020-06-04" "procps-ng" "User Commands"
|
||||
.SH NAME
|
||||
-pgrep, pkill, pwait \- look up, signal, or wait for processes based on name and other attributes
|
||||
+pgrep, pkill, pidwait \- look up, signal, or wait for processes based on name and other attributes
|
||||
.SH SYNOPSIS
|
||||
.B pgrep
|
||||
[options] pattern
|
||||
@@ -17,7 +17,7 @@ pgrep, pkill, pwait \- look up, signal, or wait for processes based on name and
|
||||
.B pkill
|
||||
[options] pattern
|
||||
.br
|
||||
-.B pwait
|
||||
+.B pidwait
|
||||
[options] pattern
|
||||
.SH DESCRIPTION
|
||||
.B pgrep
|
||||
@@ -45,7 +45,7 @@ will send the specified signal (by default
|
||||
.BR SIGTERM )
|
||||
to each process instead of listing them on stdout.
|
||||
.PP
|
||||
-.B pwait
|
||||
+.B pidwait
|
||||
will wait for each process instead of listing them on stdout.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
@@ -60,7 +60,7 @@ only.)
|
||||
\fB\-c\fR, \fB\-\-count\fR
|
||||
Suppress normal output; instead print a count of matching processes. When
|
||||
count does not match anything, e.g. returns zero, the command will return
|
||||
-non-zero value. Note that for pkill and pwait, the count is the number of
|
||||
+non-zero value. Note that for pkill and pidwait, the count is the number of
|
||||
matching processes, not the processes that were successfully signaled or waited
|
||||
for.
|
||||
.TP
|
||||
@@ -88,7 +88,7 @@ translated into
|
||||
.BR pgrep 's,
|
||||
.BR pkill 's,
|
||||
or
|
||||
-.BR pwait 's
|
||||
+.BR pidwait 's
|
||||
own process group.
|
||||
.TP
|
||||
\fB\-G\fR, \fB\-\-group\fR \fIgid\fP,...
|
||||
@@ -126,7 +126,7 @@ is translated into
|
||||
.BR pgrep 's,
|
||||
.BR pkill 's,
|
||||
or
|
||||
-.BR pwait 's
|
||||
+.BR pidwait 's
|
||||
own session ID.
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-terminal\fR \fIterm\fP,...
|
||||
@@ -145,7 +145,7 @@ symbolical value may be used.
|
||||
Negates the matching. This option is usually used in
|
||||
.BR pgrep 's
|
||||
or
|
||||
-.BR pwait 's
|
||||
+.BR pidwait 's
|
||||
context. In
|
||||
.BR pkill 's
|
||||
context the short option is disabled to avoid accidental usage of the option.
|
||||
@@ -154,7 +154,7 @@ context the short option is disabled to avoid accidental usage of the option.
|
||||
Shows all thread ids instead of pids in
|
||||
.BR pgrep 's
|
||||
or
|
||||
-.BR pwait 's
|
||||
+.BR pidwait 's
|
||||
context. In
|
||||
.BR pkill 's
|
||||
context this option is disabled.
|
||||
@@ -167,7 +167,7 @@ match the
|
||||
.TP
|
||||
\fB\-F\fR, \fB\-\-pidfile\fR \fIfile\fR
|
||||
Read \fIPID\fRs from \fIfile\fR. This option is more useful for
|
||||
-.BR pkill or pwait
|
||||
+.BR pkill or pidwait
|
||||
than
|
||||
.BR pgrep .
|
||||
.TP
|
||||
@@ -237,7 +237,7 @@ $ renice +4 $(pgrep chrome)
|
||||
.PD 0
|
||||
.TP
|
||||
0
|
||||
-One or more processes matched the criteria. For pkill and pwait, one or more
|
||||
+One or more processes matched the criteria. For pkill and pidwait, one or more
|
||||
processes must also have been successfully signalled or waited for.
|
||||
.TP
|
||||
1
|
||||
@@ -258,7 +258,7 @@ The running
|
||||
.BR pgrep ,
|
||||
.BR pkill ,
|
||||
or
|
||||
-.B pwait
|
||||
+.B pidwait
|
||||
process will never report itself as a
|
||||
match.
|
||||
.SH BUGS
|
||||
diff --git a/pgrep.c b/pgrep.c
|
||||
index 4fe5e8a..1905cd1 100644
|
||||
--- a/pgrep.c
|
||||
+++ b/pgrep.c
|
||||
@@ -38,7 +38,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
|
||||
-#if defined(ENABLE_PWAIT) && !defined(HAVE_PIDFD_OPEN)
|
||||
+#if defined(ENABLE_PIDWAIT) && !defined(HAVE_PIDFD_OPEN)
|
||||
#include <sys/epoll.h>
|
||||
#include <sys/syscall.h>
|
||||
#endif
|
||||
@@ -68,8 +68,8 @@
|
||||
static enum {
|
||||
PGREP = 0,
|
||||
PKILL,
|
||||
-#ifdef ENABLE_PWAIT
|
||||
- PWAIT,
|
||||
+#ifdef ENABLE_PIDWAIT
|
||||
+ PIDWAIT,
|
||||
#endif
|
||||
} prog_mode;
|
||||
|
||||
@@ -136,8 +136,8 @@ static int __attribute__ ((__noreturn__)) usage(int opt)
|
||||
fputs(_(" -q, --queue <value> integer value to be sent with the signal\n"), fp);
|
||||
fputs(_(" -e, --echo display what is killed\n"), fp);
|
||||
break;
|
||||
-#ifdef ENABLE_PWAIT
|
||||
- case PWAIT:
|
||||
+#ifdef ENABLE_PIDWAIT
|
||||
+ case PIDWAIT:
|
||||
fputs(_(" -e, --echo display PIDs before waiting\n"), fp);
|
||||
break;
|
||||
#endif
|
||||
@@ -687,7 +687,7 @@ static struct el * select_procs (int *num)
|
||||
xerrx(EXIT_FAILURE, _("internal error"));
|
||||
}
|
||||
|
||||
- // pkill and pwait don't support -w, but this is checked in getopt
|
||||
+ // pkill and pidwait don't support -w, but this is checked in getopt
|
||||
if (opt_threads) {
|
||||
while (readtask(ptp, &task, &subtask)){
|
||||
// don't add redundant tasks
|
||||
@@ -742,7 +742,7 @@ static int signal_option(int *argc, char **argv)
|
||||
return -1;
|
||||
}
|
||||
|
||||
-#if defined(ENABLE_PWAIT) && !defined(HAVE_PIDFD_OPEN)
|
||||
+#if defined(ENABLE_PIDWAIT) && !defined(HAVE_PIDFD_OPEN)
|
||||
static int pidfd_open (pid_t pid, unsigned int flags)
|
||||
{
|
||||
return syscall(__NR_pidfd_open, pid, flags);
|
||||
@@ -793,9 +793,9 @@ static void parse_opts (int argc, char **argv)
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
-#ifdef ENABLE_PWAIT
|
||||
- if (strcmp (program_invocation_short_name, "pwait") == 0) {
|
||||
- prog_mode = PWAIT;
|
||||
+#ifdef ENABLE_PIDWAIT
|
||||
+ if (strcmp (program_invocation_short_name, "pidwait") == 0) {
|
||||
+ prog_mode = PIDWAIT;
|
||||
strcat (opts, "e");
|
||||
} else
|
||||
#endif
|
||||
@@ -1008,7 +1008,7 @@ int main (int argc, char **argv)
|
||||
int num;
|
||||
int i;
|
||||
int kill_count = 0;
|
||||
-#ifdef ENABLE_PWAIT
|
||||
+#ifdef ENABLE_PIDWAIT
|
||||
int poll_count = 0;
|
||||
int wait_count = 0;
|
||||
int epollfd = epoll_create(1);
|
||||
@@ -1055,8 +1055,8 @@ int main (int argc, char **argv)
|
||||
fprintf(stdout, "%d\n", num);
|
||||
return !kill_count;
|
||||
|
||||
-#ifdef ENABLE_PWAIT
|
||||
- case PWAIT:
|
||||
+#ifdef ENABLE_PIDWAIT
|
||||
+ case PIDWAIT:
|
||||
if (opt_count)
|
||||
fprintf(stdout, "%d\n", num);
|
||||
|
||||
diff --git a/pwait.1 b/pidwait.1
|
||||
similarity index 100%
|
||||
rename from pwait.1
|
||||
rename to pidwait.1
|
||||
--
|
||||
GitLab
|
||||
|
@ -3,23 +3,33 @@
|
||||
|
||||
Summary: System and process monitoring utilities
|
||||
Name: procps-ng
|
||||
Version: 3.3.17
|
||||
Release: 4%{?dist}
|
||||
Version: 3.3.15
|
||||
Release: 14%{?dist}
|
||||
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
||||
Group: Applications/System
|
||||
URL: https://sourceforge.net/projects/procps-ng/
|
||||
|
||||
Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
|
||||
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
|
||||
# README files are missing in latest tarball
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/README.md
|
||||
Source1: README.md
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/top/README.top
|
||||
Source2: README.top
|
||||
|
||||
Patch1: pwait-to-pidwait.patch
|
||||
Patch2: covscan_findings.patch
|
||||
Patch1: procps-ng-3.3.15-pidof-show-worker-threads.patch
|
||||
Patch2: procps-ng-3.3.15-pgrep-uid-conversion-overflow.patch
|
||||
Patch3: procps-ng-3.3.15-vmstat-watch-manpage.patch
|
||||
Patch4: procps-ng-3.3.15-pidof-kernel-workers-option.patch
|
||||
Patch5: procps-ng-3.3.15-pidof-separator-option-backport.patch
|
||||
Patch6: procps-ng-3.3.15-uptime-pretty-mod.patch
|
||||
Patch7: procps-ng-3.3.15-vmstat-omit-first-report.patch
|
||||
Patch8: procps-ng-3.3.15-sysctl-config-dir-order.patch
|
||||
Patch9: procps-ng-3.3.15-pgrep-uid-gid-overflow.patch
|
||||
Patch10: procps-ng-3.3.15-display-sig-unsafe.patch
|
||||
Patch11: procps-ng-3.3.15-ps-select.patch
|
||||
Patch12: procps-ng-3.3.15-ps-out-of-bonds-read.patch
|
||||
Patch13: procps-ng-3.3.15-cve-2023-4016.patch
|
||||
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: autoconf
|
||||
@ -28,7 +38,6 @@ BuildRequires: gcc
|
||||
BuildRequires: gettext-devel
|
||||
BuildRequires: systemd-devel
|
||||
BuildRequires: git
|
||||
BuildRequires: po4a
|
||||
|
||||
%if %{tests_enabled}
|
||||
BuildRequires: dejagnu
|
||||
@ -45,8 +54,8 @@ Provides: /bin/ps
|
||||
%description
|
||||
The procps package contains a set of system utilities that provide
|
||||
system information. Procps includes ps, free, skill, pkill, pgrep,
|
||||
snice, tload, top, uptime, vmstat, pidof, pmap, slabtop, w, watch,
|
||||
pwdx and pidwait.
|
||||
snice, tload, top, uptime, vmstat, pidof, pmap, slabtop, w, watch
|
||||
and pwdx.
|
||||
The ps command displays a snapshot of running processes. The top command
|
||||
provides a repetitive update of the statuses of running processes.
|
||||
The free command displays the amounts of free and used memory on your
|
||||
@ -62,11 +71,11 @@ who are currently logged on and what they are running. The watch
|
||||
program watches a running program. The vmstat command displays
|
||||
virtual memory statistics about processes, memory, paging, block
|
||||
I/O, traps, and CPU activity. The pwdx command reports the current
|
||||
working directory of a process or processes. The pidwait command
|
||||
waits for processes of specified names.
|
||||
working directory of a process or processes.
|
||||
|
||||
%package devel
|
||||
Summary: System and process monitoring utilities
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Provides: procps-devel = %{version}-%{release}
|
||||
Obsoletes: procps-devel < 3.2.9-1
|
||||
@ -76,6 +85,7 @@ System and process monitoring utilities development headers
|
||||
|
||||
%package i18n
|
||||
Summary: Internationalization pack for procps-ng
|
||||
Group: Applications/System
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
|
||||
@ -88,12 +98,11 @@ Conflicts: man-pages-pl < 0.7-5
|
||||
Internationalization pack for procps-ng
|
||||
|
||||
%prep
|
||||
%setup -q -n procps-%{version}
|
||||
%autopatch -p1
|
||||
|
||||
%autosetup -S git
|
||||
cp -p %{SOURCE1} .
|
||||
cp -p %{SOURCE2} top/
|
||||
|
||||
|
||||
%build
|
||||
# The following stuff is needed for git archives only
|
||||
#echo "%{version}" > .tarball-version
|
||||
@ -105,15 +114,14 @@ autoreconf --verbose --force --install
|
||||
--exec-prefix=/ \
|
||||
--docdir=/unwanted \
|
||||
--disable-static \
|
||||
--disable-w-from \
|
||||
--enable-w-from \
|
||||
--disable-kill \
|
||||
--enable-watch8bit \
|
||||
--enable-skill \
|
||||
--enable-sigwinch \
|
||||
--enable-libselinux \
|
||||
--with-systemd \
|
||||
--disable-modern-top\
|
||||
--enable-pidwait
|
||||
--disable-modern-top
|
||||
|
||||
make CFLAGS="%{optflags}"
|
||||
|
||||
@ -125,10 +133,11 @@ make check
|
||||
|
||||
|
||||
%install
|
||||
%make_install
|
||||
make DESTDIR=%{buildroot} install
|
||||
|
||||
# these are created by make, yet empty. This causes rpmbuild errors.
|
||||
rm -rf %{buildroot}%{_mandir}/{pl,pt_BR,sv}/man5
|
||||
# translated man pages
|
||||
find man-po/ -type d -maxdepth 1 -mindepth 1 | while read dirname; do cp -a $dirname %{buildroot}%{_mandir}/ ; done
|
||||
rm -f %{buildroot}%{_mandir}/{de,fr,uk}/man1/kill.1
|
||||
|
||||
%find_lang %{name} --all-name --with-man
|
||||
|
||||
@ -138,6 +147,7 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
|
||||
%files
|
||||
%doc AUTHORS Documentation/bugs.md Documentation/FAQ NEWS README.md top/README.top Documentation/TODO
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING COPYING.LIB
|
||||
%{_libdir}/libprocps.so.*
|
||||
%{_bindir}/*
|
||||
@ -151,6 +161,7 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%exclude /unwanted/*
|
||||
|
||||
%files devel
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING COPYING.LIB
|
||||
%{_libdir}/libprocps.so
|
||||
%{_libdir}/pkgconfig/libprocps.pc
|
||||
@ -160,87 +171,73 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%files i18n -f %{name}.lang
|
||||
|
||||
%changelog
|
||||
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.3.17-4
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
* Tue Aug 15 2023 Jan Rybar <jrybar@redhat.com> - 3.3.15-14
|
||||
- CVE-2023-4016: ps: possible buffer overflow
|
||||
- Resolves: rhbz#2228503
|
||||
|
||||
* Fri Jul 09 2021 Jan Rybar <jrybar@redhat.com> - 3.3.17-3
|
||||
- Coverity scan findings fix
|
||||
- Resolves: rhbz#1938848
|
||||
* Tue Jan 17 2023 Jan Rybar <jrybar@redhat.com> - 3.3.15-13
|
||||
- version bump requested to create -devel subpkg for CRB inclusion
|
||||
- Resolves: rhbz#2164781
|
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.3.17-2
|
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||
* Tue Jan 17 2023 Jan Rybar <jrybar@redhat.com> - 3.3.15-12
|
||||
- ps: out-of-bonds read in quick mode
|
||||
- Resolves: rhbz#2153813
|
||||
|
||||
* Thu Feb 18 2021 Jan Rybar <jrybar@redhat.com> - 3.3.17-1
|
||||
- rebase to procps-ng-3.3.17
|
||||
- new distribution of i18n manpages
|
||||
- new pidwait command
|
||||
* Tue Dec 13 2022 Kyle Walker <kwalker@redhat.com> - 3.3.15-11
|
||||
- ps: revert increase command name length to 64 ____ (catch up)
|
||||
- Resolves: rhbz#2144978
|
||||
|
||||
* Tue Feb 02 2021 Jan Rybar <jrybar@redhat.com> - 3.3.16-4
|
||||
- version bump to apply latest specfile changes into build
|
||||
* Wed Nov 23 2022 Jan Rybar <jrybar@redhat.com> - 3.3.15-10
|
||||
- display.c: backport: async-signal-unsafe handler deadlocks on SIGHUP
|
||||
- Resolves: rhbz#2141696
|
||||
|
||||
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.16-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
* Wed Aug 17 2022 Jan Rybar <jrybar@redhat.com> - 3.3.15-9
|
||||
- pgrep: backport uid/gid overflow fix
|
||||
- Resolves: rhbz#1827731
|
||||
|
||||
* Tue Dec 22 2020 Jan Rybar <jrybar@redhat.com> - 3.3.16-2
|
||||
- ps: new exe format option to show real path to exe
|
||||
- pidof: new -w option to show kernel worker threads
|
||||
- pkill: manpage to document -e option
|
||||
- Resolves: bz#1629413
|
||||
- Resolves: bz#1399206
|
||||
* Wed Jul 20 2022 Jan Rybar <jrybar@redhat.com> - 3.3.15-8
|
||||
- vmstat: added -y option to omit first report
|
||||
- Resolves: rhbz#2027350
|
||||
- sysctl: backport config directory order, align with systemd
|
||||
- Resolves: rhbz#2111915
|
||||
|
||||
* Tue Aug 18 2020 Jan Rybar <jrybar@redhat.com> - 3.3.16-1
|
||||
- Rebase to newest upstream version
|
||||
* Wed Mar 23 2022 Jan Rybar <jrybar@redhat.com> - 3.3.15-7
|
||||
- uptime: human readable data not shown if 364 days up
|
||||
- Resolves: rhbz#1772999
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
* Tue Dec 01 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-6
|
||||
- pidof: option for separator collides with other option
|
||||
- Resolves: rhbz#1895985
|
||||
|
||||
* Fri Jul 24 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-8
|
||||
- pidof: show PIDs for kernel worker threads
|
||||
* Mon Nov 09 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-5
|
||||
- version bump due to unspotted malformed backport patch
|
||||
- Resolves: rhbz#1860486
|
||||
- Resolves: rhbz#1894526
|
||||
- Related: rhbz#1803640
|
||||
|
||||
* Tue Jul 14 2020 Tom Stellard <tstellar@redhat.com> - 3.3.15-8
|
||||
- Use make macros
|
||||
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
* Fri Nov 06 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-4
|
||||
- pidof: new option to show kernel worker threads
|
||||
- pidof: empty input causes to show kernel worker threads
|
||||
- Resolves: rhbz#1860486
|
||||
- Resolves: rhbz#1894526
|
||||
- Related: rhbz#1803640
|
||||
-
|
||||
* Wed Jul 08 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-3
|
||||
- pgrep: uid/gid conversion overflow
|
||||
- vmstat: align manpage with procfs wording
|
||||
- watch: manpage presumes NTP on system
|
||||
- Resolves: rhbz#1827731
|
||||
- Resolves: rhbz#1829920
|
||||
- Resolves: rhbz#1583669
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
* Tue Apr 14 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-2
|
||||
- pidof: show kernel workers
|
||||
- gating activated
|
||||
- Resolves: rhbz#1803640
|
||||
|
||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Mon Jul 02 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-3
|
||||
- Translated manual pages moved to i18n subpackage
|
||||
- Spec file cleanup
|
||||
|
||||
* Thu Jun 14 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-2
|
||||
- General rebuild after commit revert
|
||||
|
||||
* Wed Jun 06 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-1
|
||||
- Rebase to 3.3.15 (contains a LOT of CVE fixes)
|
||||
- Manpage translations temporarily unavailable
|
||||
|
||||
* Fri May 18 2018 Kamil Dudka <kdudka@redhat.com> - 3.3.14-2
|
||||
- fix integer overflows leading to heap overflow (CVE-2018-1124 CVE-2018-1126)
|
||||
|
||||
* Mon Apr 16 2018 Jan Rybar <jrybar@redhat.com> - 3.3.14-1
|
||||
- Rebase to 3.3.14
|
||||
- Translated man-pages returned
|
||||
|
||||
* Thu Apr 05 2018 Jan Rybar <jrybar@redhat.com> - 3.3.13-2
|
||||
- Build fails due to removal of libio.h from glibc-headers
|
||||
- Translated manpages deactivated since missing from 3.3.13 tarball
|
||||
|
||||
* Tue Apr 03 2018 Jan Rybar <jrybar@redhat.com> - 3.3.13-1
|
||||
- Rebase to 3.3.13
|
||||
|
||||
* Mon Feb 26 2018 Jan Rybar <jrybar@redhat.com> - 3.3.12-2
|
||||
- ps: LUID (LoginID) format option available
|
||||
* Wed Jul 04 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-1
|
||||
- Rebase to 3.3.15
|
||||
- Translated manual pages moved to -i18n subpackage
|
||||
|
||||
* Wed Feb 21 2018 Michael Cronenworth <mike@cchtml.com> - 3.3.12-1
|
||||
- Upgrading to 3.3.12
|
||||
|
Loading…
Reference in New Issue
Block a user