diff --git a/.psmisc.metadata b/.psmisc.metadata new file mode 100644 index 0000000..c8c63e6 --- /dev/null +++ b/.psmisc.metadata @@ -0,0 +1 @@ +abdddc8d5c91251bba0f3190956ae9d05c058745 SOURCES/psmisc-22.20.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/psmisc-22.20-RH-man-page-scan.patch b/SOURCES/psmisc-22.20-RH-man-page-scan.patch new file mode 100644 index 0000000..9345739 --- /dev/null +++ b/SOURCES/psmisc-22.20-RH-man-page-scan.patch @@ -0,0 +1,39 @@ +diff -Naur psmisc-22.20.orig/doc/fuser.1 psmisc-22.20/doc/fuser.1 +--- psmisc-22.20.orig/doc/fuser.1 2012-09-19 12:54:03.000000000 +0200 ++++ psmisc-22.20/doc/fuser.1 2013-07-30 18:59:38.975335764 +0200 +@@ -170,8 +170,8 @@ + \fB\-\fISIGNAL\fR + Use the specified signal instead of SIGKILL when killing processes. + Signals can be specified either by name (e.g. +-.BR \-HUP ) or by +-number (e.g. ++.BR \-HUP ) ++or by number (e.g. + .BR \-1 ). + This option is silently ignored if the + .B \-k +diff -Naur psmisc-22.20.orig/doc/peekfd.1 psmisc-22.20/doc/peekfd.1 +--- psmisc-22.20.orig/doc/peekfd.1 2012-09-19 12:54:03.000000000 +0200 ++++ psmisc-22.20/doc/peekfd.1 2013-07-30 19:10:32.582099617 +0200 +@@ -37,7 +37,7 @@ + .IP -d + Remove duplicate read/writes from the output. If you're looking at a + tty with echo, you might want this. +-.IP -v ++.IP -V + Display a version string. + .IP -h + Display a help message. +diff -Naur psmisc-22.20.orig/src/pstree.c psmisc-22.20/src/pstree.c +--- psmisc-22.20.orig/src/pstree.c 2013-07-30 18:53:21.000000000 +0200 ++++ psmisc-22.20/src/pstree.c 2013-07-30 19:17:14.057288441 +0200 +@@ -860,7 +860,8 @@ + " -V, --version display version information\n")); + #ifdef WITH_SELINUX + fprintf(stderr, +- _(" -Z show SELinux security contexts\n")); ++ _(" -Z,\n" ++ " --security-context show SELinux security contexts\n")); + #endif /*WITH_SELINUX */ + fprintf(stderr, _(" PID start at this PID; default is 1 (init)\n" + " USER show only trees rooted at processes of this user\n\n")); diff --git a/SOURCES/psmisc-22.20-fix-selinux-in-pstree.patch b/SOURCES/psmisc-22.20-fix-selinux-in-pstree.patch new file mode 100644 index 0000000..d89d6c1 --- /dev/null +++ b/SOURCES/psmisc-22.20-fix-selinux-in-pstree.patch @@ -0,0 +1,39 @@ +--- psmisc-22.20/src/pstree.c 2012-09-19 14:05:43.000000000 +0100 ++++ psmisc-22.20-selinux/src/pstree.c 2012-10-08 19:18:13.992951873 +0100 +@@ -140,7 +140,12 @@ + static int dumped = 0; /* used by dump_by_user */ + static int charlen = 0; /* length of character */ + ++#ifdef WITH_SELINUX ++static void fix_orphans(security_context_t scontext); ++#else + static void fix_orphans(void); ++#endif ++ + /* + * Allocates additional buffer space for width and more as needed. + * The first call will allocate the first buffer. +@@ -787,7 +792,11 @@ + } + } + (void) closedir(dir); ++#ifdef WITH_SELINUX ++ fix_orphans(scontext); ++#else + fix_orphans(); ++#endif + if (print_args) + free(buffer); + if (empty) { +@@ -796,7 +805,11 @@ + } + } + ++#ifdef WITH_SELINUX ++static void fix_orphans(security_context_t scontext) ++#else + static void fix_orphans(void) ++#endif + { + /* When using kernel 3.3 with hidepid feature enabled on /proc + * then we need fake root pid and gather all the orphan processes diff --git a/SOURCES/psmisc-22.20-null-ptr-dereference.patch b/SOURCES/psmisc-22.20-null-ptr-dereference.patch new file mode 100644 index 0000000..a570015 --- /dev/null +++ b/SOURCES/psmisc-22.20-null-ptr-dereference.patch @@ -0,0 +1,31 @@ +diff -Naur psmisc-22.20.orig/src/pstree.c psmisc-22.20/src/pstree.c +--- psmisc-22.20.orig/src/pstree.c 2013-10-21 15:31:15.000000000 +0200 ++++ psmisc-22.20/src/pstree.c 2013-10-21 15:30:58.000000000 +0200 +@@ -222,7 +222,12 @@ + } + + if (!ptr) { +- ptr = malloc(sizeof(*ptr)); ++ ++ if (!(ptr = malloc(sizeof(*ptr)))) { ++ perror("malloc"); ++ exit(1); ++ } ++ + memset(ptr, 0, sizeof(*ptr)); + ptr->number = r->ns[id]; + if (*root == NULL) +@@ -234,7 +239,12 @@ + /* move the child to under the namespace's umbrella */ + for (c = &ptr->children; *c; c = &(*c)->next) + ; +- *c = malloc(sizeof(CHILD)); ++ ++ if (!(*c = malloc(sizeof(CHILD)))) { ++ perror("malloc"); ++ exit(1); ++ } ++ + (*c)->child = r; + (*c)->next = NULL; + diff --git a/SOURCES/pstree-introduce-namespace-transition-information.patch b/SOURCES/pstree-introduce-namespace-transition-information.patch new file mode 100644 index 0000000..773985d --- /dev/null +++ b/SOURCES/pstree-introduce-namespace-transition-information.patch @@ -0,0 +1,121 @@ +From 29ac10530c97631d76aa34b2d2ed018ded60d6bf Mon Sep 17 00:00:00 2001 +From: Aristeu Rozanski +Date: Thu, 25 Apr 2013 11:35:15 -0400 +Subject: [PATCH 2/3] pstree: introduce namespace transition information + +This patch adds a new option (-S, --ns-change) that will show +when a namespace was changed compared to parent's. + +Signed-off-by: Aristeu Rozanski +Signed-off-by: Craig Small +--- + doc/pstree.1 | 4 ++++ + src/pstree.c | 27 ++++++++++++++++++++++++--- + 2 files changed, 28 insertions(+), 3 deletions(-) + +--- psmisc-22.20.orig/doc/pstree.1 2013-09-17 16:26:00.000000000 -0400 ++++ psmisc-22.20/doc/pstree.1 2013-09-17 16:27:22.510167111 -0400 +@@ -21,6 +21,7 @@ pstree \- display a tree of processes + .RB [ \-N , \ \-\-ns\-sort \fIns\fB + .RB [ \-p , \ \-\-show\-pids ] + .RB [ \-s , \ \-\-show\-parents ] ++.RB [ \-S , \ \-\-ns-changes ] + .RB [ \-u , \ \-\-uid\-changes ] + .RB [ \-Z , \ \-\-security\-context ] + .RB [ \-A , \ \-\-ascii , \ \-G , \ \-\-vt100 , \ \-U , \ \-\-unicode ] +@@ -134,6 +135,9 @@ process name. + implicitly disables compaction. + .IP \fB\-s\fP + Show parent processes of the specified process. ++.IP \fB\-S\fP ++Show namespaces transitions. Like \-N, the output is limited when running ++as a regular user. + .IP \fB\-u\fP + Show uid transitions. Whenever the uid of a process differs from the + uid of its parent, the new uid is shown in parentheses after the +--- psmisc-22.20.orig/src/pstree.c 2013-09-17 16:27:12.000000000 -0400 ++++ psmisc-22.20/src/pstree.c 2013-09-17 16:28:04.156698164 -0400 +@@ -133,7 +133,7 @@ static int *width = NULL; + static int *more = NULL; + + static int print_args = 0, compact = 1, user_change = 0, pids = 0, pgids = 0, +- show_parents = 0, by_pid = 0, trunc = 1, wait_end = 0; ++ show_parents = 0, by_pid = 0, trunc = 1, wait_end = 0, ns_change = 0; + #ifdef WITH_SELINUX + static int show_scontext = 0; + #endif /*WITH_SELINUX */ +@@ -545,11 +545,17 @@ if (pid != 0) { + static int tree_equal(const PROC * a, const PROC * b) + { + const CHILD *walk_a, *walk_b; ++ int i; + + if (strcmp(a->comm, b->comm)) + return 0; + if (user_change && a->uid != b->uid) + return 0; ++ if (ns_change) { ++ for (i = 0; i < NUM_NS; i++) ++ if (a->ns[i] != b->ns[i]) ++ return 0; ++ } + for (walk_a = a->children, walk_b = b->children; walk_a && walk_b; + walk_a = walk_a->next, walk_b = walk_b->next) + if (!tree_equal(walk_a->child, walk_b->child)) +@@ -630,6 +636,16 @@ if (swapped && current->argc < 0) + else + (void) out_int(current->uid); + } ++ if (ns_change && current->parent) { ++ for (i = 0; i < NUM_NS; i++) { ++ if (current->ns[i] == 0 || current->parent->ns[i] == 0) ++ continue; ++ if (current->ns[i] != current->parent->ns[i]) { ++ out_char(info++ ? ',' : '('); ++ out_string(get_ns_name(i)); ++ } ++ } ++ } + #ifdef WITH_SELINUX + if (show_scontext) { + out_char(info++ ? ',' : '('); +@@ -1002,6 +1018,7 @@ " -G, --vt100 use + " --ns-sort=type sort by namespace type (ipc, mnt, net, pid, user, uts)\n" + " -p, --show-pids show PIDs; implies -c\n" + " -s, --show-parents show parents of the selected process\n" ++ " -S, --ns-changes show namespace transitions\n" + " -u, --uid-changes show uid transitions\n" + " -U, --unicode use UTF-8 (Unicode) line drawing characters\n" + " -V, --version display version information\n")); +@@ -1054,6 +1071,7 @@ {"numeric-sort", 0, NULL, 'n'}, + {"show-pids", 0, NULL, 'p'}, + {"show-pgids", 0, NULL, 'g'}, + {"show-parents", 0, NULL, 's'}, ++ {"ns-changes", 0, NULL, 'S' }, + {"uid-changes", 0, NULL, 'u'}, + {"unicode", 0, NULL, 'U'}, + {"version", 0, NULL, 'V'}, +@@ -1106,11 +1124,11 @@ /* problems with VT100 on some t + + #ifdef WITH_SELINUX + while ((c = +- getopt_long(argc, argv, "aAcGhH:nN:pglsuUVZ", options, ++ getopt_long(argc, argv, "aAcGhH:nN:pglsSuUVZ", options, + NULL)) != -1) + #else /*WITH_SELINUX */ + while ((c = +- getopt_long(argc, argv, "aAcGhH:nN:pglsuUV", options, NULL)) != -1) ++ getopt_long(argc, argv, "aAcGhH:nN:pglsSuUV", options, NULL)) != -1) + #endif /*WITH_SELINUX */ + switch (c) { + case 'a': +@@ -1174,6 +1192,9 @@ compact = 0; + case 's': + show_parents = 1; + break; ++ case 'S': ++ ns_change = 1; ++ break; + case 'u': + user_change = 1; + break; diff --git a/SOURCES/pstree-introduce-support-for-namespaces.patch b/SOURCES/pstree-introduce-support-for-namespaces.patch new file mode 100644 index 0000000..f327ac7 --- /dev/null +++ b/SOURCES/pstree-introduce-support-for-namespaces.patch @@ -0,0 +1,295 @@ +From c9f6f3e60d1770a95eb491dd503fdbe881ee8740 Mon Sep 17 00:00:00 2001 +From: Aristeu Rozanski +Date: Wed, 24 Apr 2013 15:32:35 -0400 +Subject: [PATCH 1/3] pstree: introduce support for namespaces + +Options -N and --ns-sort were added which require one of the namespaces: +ipc, mnt, net, pid, user, uts +and will show separated trees per namespace + +Signed-off-by: Aristeu Rozanski +Signed-off-by: Craig Small +--- + doc/pstree.1 | 6 ++ + src/pstree.c | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 173 insertions(+), 3 deletions(-) + +--- psmisc-22.20.orig/doc/pstree.1 2012-09-19 06:54:03.000000000 -0400 ++++ psmisc-22.20/doc/pstree.1 2013-09-17 16:26:00.210118465 -0400 +@@ -18,6 +18,7 @@ pstree \- display a tree of processes + .RB [ \-g ] \ \-\-show\-pgids ] + .RB [ \-l , \ \-\-long ] + .RB [ \-n , \ \-\-numeric\-sort ] ++.RB [ \-N , \ \-\-ns\-sort \fIns\fB + .RB [ \-p , \ \-\-show\-pids ] + .RB [ \-s , \ \-\-show\-parents ] + .RB [ \-u , \ \-\-uid\-changes ] +@@ -121,6 +122,11 @@ unknown. + .IP \fB\-n\fP + Sort processes with the same ancestor by PID instead of by name. + (Numeric sort.) ++.IP \fB\-N\fP ++Show individual trees for each namespace of the type specified. The ++available types are: ipc, mnt, net, pid, user, uts. Regular users don't ++have access to other users' processes information, so the output will be ++limited. + .IP \fB\-p\fP + Show PIDs. PIDs are shown as decimal numbers in parentheses after each + process name. +--- psmisc-22.20.orig/src/pstree.c 2013-09-17 16:25:01.000000000 -0400 ++++ psmisc-22.20/src/pstree.c 2013-09-17 16:27:12.356037690 -0400 +@@ -74,6 +74,8 @@ #define VT_END "\033(B" /* + #define VT_UR "m" + #define VT_HD "w" + ++#define NUM_NS 6 ++ + typedef struct _proc { + char comm[COMM_LEN + 2 + 1]; /* add another 2 for thread brackets */ + char **argv; /* only used : argv[0] is 1st arg; undef if argc < 1 */ +@@ -84,6 +86,7 @@ char **argv; /* only + #ifdef WITH_SELINUX + security_context_t scontext; + #endif /*WITH_SELINUX */ ++ ino_t ns[NUM_NS]; + char flags; + struct _child *children; + struct _proc *parent; +@@ -140,6 +143,133 @@ static char last_char = 0; + static int dumped = 0; /* used by dump_by_user */ + static int charlen = 0; /* length of character */ + ++enum ns_type { ++ IPCNS = 0, ++ MNTNS, ++ NETNS, ++ PIDNS, ++ USERNS, ++ UTSNS ++}; ++struct ns_entry; ++struct ns_entry { ++ ino_t number; ++ CHILD *children; ++ struct ns_entry *next; ++}; ++ ++static const char *ns_names[] = { ++ [IPCNS] = "ipc", ++ [MNTNS] = "mnt", ++ [NETNS] = "net", ++ [PIDNS] = "pid", ++ [USERNS] = "user", ++ [UTSNS] = "uts", ++}; ++ ++const char *get_ns_name(int id) { ++ if (id >= NUM_NS) ++ return NULL; ++ return ns_names[id]; ++} ++ ++static int get_ns_id(const char *name) { ++ int i; ++ ++ for (i = 0; i < NUM_NS; i++) ++ if (!strcmp(ns_names[i], name)) ++ return i; ++ return -1; ++} ++ ++static int verify_ns(int id) ++{ ++ char filename[50]; ++ struct stat s; ++ ++ snprintf(filename, 50, "/proc/%i/ns/%s", getpid(), get_ns_name(id)); ++ ++ return stat(filename, &s); ++} ++ ++static inline void new_proc_ns(PROC *ns_task) ++{ ++ struct stat st; ++ char buff[50]; ++ pid_t pid = ns_task->pid; ++ int i; ++ ++ for (i = 0; i < NUM_NS; i++) { ++ snprintf(buff, sizeof(buff), "/proc/%i/ns/%s", pid, ++ get_ns_name(i)); ++ if (stat(buff, &st)) { ++ ns_task->ns[i] = 0; ++ continue; ++ } ++ ns_task->ns[i] = st.st_ino; ++ } ++} ++ ++static void find_ns_and_add(struct ns_entry **root, PROC *r, enum ns_type id) ++{ ++ struct ns_entry *ptr, *last = NULL; ++ CHILD **c; ++ ++ for (ptr = *root; ptr; ptr = ptr->next) { ++ if (ptr->number == r->ns[id]) ++ break; ++ last = ptr; ++ } ++ ++ if (!ptr) { ++ ptr = malloc(sizeof(*ptr)); ++ memset(ptr, 0, sizeof(*ptr)); ++ ptr->number = r->ns[id]; ++ if (*root == NULL) ++ *root = ptr; ++ else ++ last->next = ptr; ++ } ++ ++ /* move the child to under the namespace's umbrella */ ++ for (c = &ptr->children; *c; c = &(*c)->next) ++ ; ++ *c = malloc(sizeof(CHILD)); ++ (*c)->child = r; ++ (*c)->next = NULL; ++ ++ /* detaching from parent */ ++ if (r->parent) { ++ for (c = &r->parent->children; *c; c = &(*c)->next) { ++ if ((*c)->child == r) { ++ *c = (*c)->next; ++ break; ++ } ++ } ++ r->parent = NULL; ++ } ++ ++} ++ ++static PROC *find_proc(pid_t pid); ++static void sort_by_namespace(PROC *r, enum ns_type id, struct ns_entry **root) ++{ ++ CHILD *walk; ++ ++ /* first run, find the first process */ ++ if (!r) { ++ r = find_proc(1); ++ if (!r) ++ return; ++ } ++ ++ if (r->parent == NULL || r->parent->ns[id] != r->ns[id]) ++ find_ns_and_add(root, r, id); ++ ++ for (walk = r->children; walk; walk = walk->next) ++ sort_by_namespace(walk->child, id, root); ++} ++ + #ifdef WITH_SELINUX + static void fix_orphans(security_context_t scontext); + #else +@@ -290,6 +420,7 @@ new->argc = 0; + new->children = NULL; + new->parent = NULL; + new->next = list; ++ new_proc_ns(new); + return list = new; + } + +@@ -624,6 +755,20 @@ dump_tree(current, 0, 1, 1, 1, u + dump_by_user(walk->child, uid); + } + ++static void dump_by_namespace(struct ns_entry *root) ++{ ++ struct ns_entry *ptr = root; ++ CHILD *c; ++ char buff[14]; ++ ++ for ( ; ptr; ptr = ptr->next) { ++ snprintf(buff, sizeof(buff), "[%li]\n", ptr->number); ++ out_string(buff); ++ for (c = ptr->children; c; c = c->next) ++ dump_tree(c->child, 0, 1, 1, 1, 0, 0); ++ } ++} ++ + static void trim_tree_by_parent(PROC * current) + { + if (!current) +@@ -853,6 +998,8 @@ static void usage(void) + " -G, --vt100 use VT100 line drawing characters\n" + " -l, --long don't truncate long lines\n" + " -n, --numeric-sort sort output by PID\n" ++ " -N type,\n" ++ " --ns-sort=type sort by namespace type (ipc, mnt, net, pid, user, uts)\n" + " -p, --show-pids show PIDs; implies -c\n" + " -s, --show-parents show parents of the selected process\n" + " -u, --uid-changes show uid transitions\n" +@@ -886,11 +1033,13 @@ int main(int argc, char **argv) + { + PROC *current; + struct winsize winsz; ++ struct ns_entry *nsroot = NULL; + const struct passwd *pw; + pid_t pid, highlight; + char termcap_area[1024]; + char *termname, *endptr; + int c, pid_set; ++ enum ns_type nsid = -1; + + struct option options[] = { + {"arguments", 0, NULL, 'a'}, +@@ -901,6 +1050,7 @@ {"highlight-all", 0, NULL, 'h'}, + {"highlight-pid", 1, NULL, 'H'}, + {"long", 0, NULL, 'l'}, + {"numeric-sort", 0, NULL, 'n'}, ++ {"ns-sort", 1, NULL, 'N' }, + {"show-pids", 0, NULL, 'p'}, + {"show-pgids", 0, NULL, 'g'}, + {"show-parents", 0, NULL, 's'}, +@@ -956,11 +1106,11 @@ /* problems with VT100 on some t + + #ifdef WITH_SELINUX + while ((c = +- getopt_long(argc, argv, "aAcGhH:npglsuUVZ", options, ++ getopt_long(argc, argv, "aAcGhH:nN:pglsuUVZ", options, + NULL)) != -1) + #else /*WITH_SELINUX */ + while ((c = +- getopt_long(argc, argv, "aAcGhH:npglsuUV", options, NULL)) != -1) ++ getopt_long(argc, argv, "aAcGhH:nN:pglsuUV", options, NULL)) != -1) + #endif /*WITH_SELINUX */ + switch (c) { + case 'a': +@@ -1002,6 +1152,17 @@ trunc = 0; + case 'n': + by_pid = 1; + break; ++ case 'N': ++ nsid = get_ns_id(optarg); ++ if (nsid == -1) ++ usage(); ++ if (verify_ns(nsid)) { ++ fprintf(stderr, ++ _("procfs file for %s namespace not available\n"), ++ optarg); ++ return 1; ++ } ++ break; + case 'p': + pids = 1; + compact = 0; +@@ -1059,7 +1220,10 @@ if (endptr[0] != '\0') + pid = ROOT_PID; + } + +- if (!pw) ++ if (nsid != -1) { ++ sort_by_namespace(NULL, nsid, &nsroot); ++ dump_by_namespace(nsroot); ++ } else if (!pw) + dump_tree(find_proc(pid), 0, 1, 1, 1, 0, 0); + else { + dump_by_user(find_proc(ROOT_PID), pw->pw_uid); diff --git a/SPECS/psmisc.spec b/SPECS/psmisc.spec new file mode 100644 index 0000000..7bab396 --- /dev/null +++ b/SPECS/psmisc.spec @@ -0,0 +1,411 @@ +Summary: Utilities for managing processes on your system +Name: psmisc +Version: 22.20 +Release: 6%{?dist} +License: GPLv2+ +Group: Applications/System +URL: http://sourceforge.net/projects/psmisc + +Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz + +#The following has been reworked by upstream in a different way ... we'll see +#Patch1: psmisc-22.13-fuser-silent.patch + +# Patch sent upstream 2012-10-08. +Patch2: psmisc-22.20-fix-selinux-in-pstree.patch + +Patch3: psmisc-22.20-RH-man-page-scan.patch + +Patch4: pstree-introduce-support-for-namespaces.patch +Patch5: pstree-introduce-namespace-transition-information.patch +Patch6: psmisc-22.20-null-ptr-dereference.patch + +BuildRequires: libselinux-devel +BuildRequires: gettext +BuildRequires: ncurses-devel +BuildRequires: autoconf automake + + +%description +The psmisc package contains utilities for managing processes on your +system: pstree, killall and fuser. The pstree command displays a tree +structure of all of the running processes on your system. The killall +command sends a specified signal (SIGTERM if nothing is specified) to +processes identified by name. The fuser command identifies the PIDs +of processes that are using specified files or filesystems. + +%prep +%setup -q + +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +%build +%configure --prefix=%{_prefix} --enable-selinux +make %{?_smp_mflags} + +%install +make install DESTDIR="$RPM_BUILD_ROOT" + +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +mv $RPM_BUILD_ROOT%{_bindir}/fuser $RPM_BUILD_ROOT%{_sbindir} + +%find_lang %name + +%files -f %{name}.lang +%{_sbindir}/fuser +%{_bindir}/killall +%{_bindir}/pstree +%{_bindir}/pstree.x11 +%{_bindir}/prtstat +%{_mandir}/man1/fuser.1* +%{_mandir}/man1/killall.1* +%{_mandir}/man1/pstree.1* +%{_mandir}/man1/prtstat.1* +%ifarch %{ix86} x86_64 ppc ppc64 %{arm} mipsel +%{_bindir}/peekfd +%endif +%{_mandir}/man1/peekfd.1* +%doc AUTHORS ChangeLog COPYING README + +%changelog +* Mon Oct 21 2013 Jaromir Capik - 22.20-6 +- Fixing null pointer dereference introduced with namespaces +- Fixing bogus dates in the changelog +- Related: rhbz#980514 + +* Fri Oct 18 2013 Jaromir Capik - 22.20-5 +- Moving fuser from /sbin to /usr/sbin +- Related: rhbz#980514 + +* Tue Sep 17 2013 Aristeu Rozanski - 22.20-4 +- Introducing namespaces support (#980514) + +* Tue Jul 30 2013 Jaromir Capik - 22.20-3 +- RH man page scan (#948524) + +* Thu Feb 14 2013 Fedora Release Engineering - 22.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Oct 08 2012 Richard W.M. Jones 22.20-1 +- Update to 22.20. + Contains a fix for: http://sourceforge.net/p/psmisc/bugs/53/ +- Fix src/pstree.c when SELinux is available. + +* Sat Jul 21 2012 Fedora Release Engineering - 22.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jun 28 2012 Jaromir Capik 22.19-1 +- Update to 22.19 (#828244) + +* Mon Mar 12 2012 Jaromir Capik 22.16-1 +- Update to 22.16 + +* Fri Jan 27 2012 Jaromir Capik 22.15-1 +- Update to 22.15 + +* Sat Jan 14 2012 Fedora Release Engineering - 22.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Jul 19 2011 Jaromir Capik 22.14-1 +- Update to 22.14 + +* Wed Feb 09 2011 Fedora Release Engineering - 22.13-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jan 27 2011 Jan Görig 22.13-7 +- fix #671135 - peekfd utility doesn't work on ppc64 architecture + +* Fri Jan 7 2011 Jan Görig 22.13-6 +- fix #666213 - uninitialized memory leading to `killall -g name` failure + +* Tue Nov 16 2010 Jan Görig 22.13-5 +- fix #651794 - incorrect exit code of fuser -m -s + +* Tue Oct 19 2010 Dan Horák 22.13-4 +- peekfd still exists only on selected architectures + +* Thu Oct 14 2010 Jan Görig 22.13-3 +- fix #642800 - peekfd regression + +* Wed Sep 29 2010 jkeating - 22.13-2 +- Rebuilt for gcc bug 634757 + +* Thu Sep 16 2010 Jan Görig 22.13-1 +- updated to new upstream version +- removed unused patch +- peekfd should work on all architectures now +- spec cleanups + +* Tue May 25 2010 Jan Görig 22.10-1 +- update to new upstream version +- remove unused patches +- docs are now in package + +* Tue May 18 2010 Daniel Novotny 22.6-14 +- fix #588322 - fuser'ing a non-existent file yields two error messages + +* Wed Aug 05 2009 Lubomir Rintel - 22.6-13 +- Fix a buffer overflow + +* Sun Jul 26 2009 Fedora Release Engineering - 22.6-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon May 11 2009 Daniel Novotny 22.6-11 +- merge review (#226322): a few .spec changes + +* Thu Apr 23 2009 Daniel Novotny - 22.6-10 +- fix #497303 - fuser -m doesn't work after lazy unmount + +* Thu Feb 26 2009 Fedora Release Engineering - 22.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Aug 29 2008 Tom "spot" Callaway 22.6-8 +- fix package so it builds again + +* Fri Aug 29 2008 Tom "spot" Callaway 22.6-7 +- fix license tag + +* Mon Apr 14 2008 Tomas Smetana 22.6-6 +- fix #441871 - pstree fails to show most processes; + patch by Emil Jerabek + +* Mon Apr 07 2008 Tomas Smetana 22.6-5 +- fix configure.ac to include all the required headers for peekfd +- remove kernel-headers again -- not needed in rawhide + +* Mon Apr 07 2008 Tomas Smetana 22.6-4 +- fix #440762 - add kernel-headers to build reuqirements + +* Tue Feb 12 2008 Tomas Smetana 22.6-3 +- rebuild (gcc-4.3) + +* Mon Dec 10 2007 Tomas Smetana 22.6-2 +- fix #417801 - exclude peekfd on secondary architectures + +* Mon Dec 03 2007 Tomas Smetana 22.6-1 +- update to new upstream version + +* Wed Aug 29 2007 Tomas Smetana 22.5-2 +- rebuild (because of BuildID) + +* Thu Jun 07 2007 Tomas Smetana 22.5-1.2 +- exclude peekfd manpage on non-x86 archs + +* Thu Jun 07 2007 Tomas Smetana 22.5-1.1 +- rebuild + +* Wed Jun 06 2007 Tomas Smetana 22.5-1 +- update to new upstream version + +* Thu Mar 1 2007 Karel Zak 22.3-2 +- fix #214214 - killall misbehavior (prelink, etc) + +* Thu Mar 1 2007 Karel Zak 22.3-1 +- update to upstream 22.3 +- backport ipv6 bugfix from upstream CVS +- clean up spec file + +* Wed Jul 19 2006 Karel Zak - 22.2-5 +- spec file cleanup & rebuild + +* Mon Jul 17 2006 Jesse Keating - 22.2-4 +- rebuild + +* Wed May 17 2006 Karel Zak 22.2-2 +- add BuildRequires: gettext-devel +- sync with upstream + +* Wed Mar 22 2006 Karel Zak 22.1.03072006cvs-1.1 +- rebuild + +* Tue Mar 7 2006 Karel Zak 22.1.03072006cvs-1 +- update to new upstream CVS version +- enable new fuser version +- fix fuser return code +- fix #183897 - "pstree -a" call results in segmentation fault + +* Fri Feb 10 2006 Jesse Keating - 21.8-1.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 21.8-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Wed Nov 30 2005 Karel Zak 21.8-1 +- fix #174585 - killall crashes on long variable name +- spec file cleanup + +* Wed Oct 5 2005 Karel Zak 21.7-1.cvs20051005 +- sync with upstream CVS +- use old version of fuser + +* Thu Sep 8 2005 Karel Zak 21.6-1 +- sync with upstream release 21.6 +- cleanup selinux patch +- fix #165167 - buffer overflow detected in fuser + +* Sat Mar 5 2005 Karel Zak 21.5-4 +- fixed problem with perl expression in the build .spec section + +* Sat Mar 5 2005 Karel Zak 21.5-3 +- rebuilt + +* Tue Dec 14 2004 Karel Zak 21.5-2 +- use other way for psmisc-21.5-term.patch + +* Mon Dec 13 2004 Karel Zak 21.5-1 +- Updated to new upstream version 21.5 +- Ported SELinux patch forward as psmisc-21.5-selinux.patch +- Added psmisc-21.5-term.patch that fix termcap.h and term.h conflicts + +* Fri Sep 24 2004 Mike A. Harris 21.4-4 +- Added "BuildRequires: libselinux-devel" for WITH_SELINUX builds (#123754) + +* Tue Jun 15 2004 Elliot Lee 21.4-3 +- rebuilt + +* Mon Mar 15 2004 Mike A. Harris 21.4-2 +- Re-enabled SELINUX support +- Removed gcc33 patch, no longer needed it seems. + +* Mon Mar 15 2004 Mike A. Harris 21.4-1 +- Updated to new upstream version 21.4 +- Ported SELinux patch forward as psmisc-21.4-redhat-selinux-psmisc.patch, + but disabled SELINUX support temporarily until other build problems are + resolved +- Remove MKINSTALLDIRS-./mkinstalldirs from "make install" as that causes the + build to fail when "./" changes. If this option is ever added back, make + it relative to $RPM_BUILD_DIR instead of ./ so that things do not break +- Added pstree.x11 to file list after rpm reported it present in buildroot but + not packaged + +* Fri Feb 13 2004 Elliot Lee 21.3-8 +- rebuilt + +* Mon Jan 26 2004 Dan Walsh 21.3-7 +- fix is_selinux_enabled call + +* Fri Sep 5 2003 Dan Walsh 21.3-6.sel +- turn on selinux +- Hack to fix build problem on Fedora core + +* Fri Sep 5 2003 Dan Walsh 21.3-6 +- turn off selinux + +* Thu Aug 28 2003 Dan Walsh 21.3-5.sel +- change flags to -Z and build for selinux + +* Mon Jul 28 2003 Dan Walsh 21.3-4 +- Remove -lsecure check from configure. + +* Mon Jul 28 2003 Dan Walsh 21.3-2 +- Added SELinux patches + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Thu May 29 2003 Mike A. Harris 21.3-1.RHEL.0 +- Bump to 21.3-1.RHEL.0 and rebuild for Red Hat Enterprise Linux + +* Thu May 29 2003 Mike A. Harris 21.3-1 +- Updated to new upstream version 21.3 +- Removed dead script gensig.sh +- Disabled psmisc-21.2-gcc33.patch as it is included in 21.3 + +* Thu May 22 2003 Jeremy Katz 21.2-5 +- fix build with gcc 3.3 + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Nov 13 2002 Mike A. Harris 21.2-3 +- Remove pidof manpage from buildroot by adding with_pidof conditional +- _bindir cleanup + +* Wed Nov 13 2002 Mike A. Harris 21.2-2 +- Updated to new upstream version 21.2 +- Updated Source: URL to sourceforge's current ftp area +- Fixes fuser largefile bug (#66340) +- Disable prep time sh %%{SOURCE1} >src/signames.h as the 21.2 release + fixes this already now. + +* Tue Oct 8 2002 Mike A. Harris 20.2-7 +- All-arch rebuild +- Updated spec file with _bindir et al. fixes. + +* Fri Jun 21 2002 Tim Powers 20.2-6 +- automated rebuild + +* Sun May 26 2002 Tim Powers 20.2-5 +- automated rebuild + +* Thu May 16 2002 Bernhard Rosenkraenzer 20.2-4 +- Autogenerate the signal list from _includedir/bits/signum.h + to make sure it works on all arches and doesn't break again. + +* Wed May 8 2002 Trond Eivind Glomsrod 20.2-3 +- Fix the signal list +- Don't strip when linking +- Use a %%{_tmppath} + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Tue Nov 20 2001 Bernhard Rosenkraenzer 20.2-1 +- 20.2 +- Add patch from bug report #56186; the problem is not reproducable, + but the patch can't hurt. + +* Sat Jul 21 2001 Bernhard Rosenkraenzer 20.1-2 +- Add BuildRequires (#49562) +- s/Copyright/License/ +- Fix license (it's actually dual-licensed BSD/GPL, not just "distributable") + +* Wed Apr 25 2001 Bernhard Rosenkraenzer 20.1-1 +- 20.1 + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sun Jun 18 2000 Matt Wilson +- FHS man paths +- patch makefile to enable non-root builds + +* Sat Feb 5 2000 Bernhard Rosenkraenzer +- Deal with compressed man pages + +* Sun Nov 21 1999 Bernhard Rosenkraenzer +- update to v19 +- handle RPM_OPT_FLAGS + +* Mon Sep 27 1999 Bill Nottingham +- move fuser to /sbin + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 2) + +* Sat Mar 13 1999 Michael Maher +- updated package + +* Fri May 01 1998 Prospector System +- translations modified for de, fr, tr + +* Thu Apr 30 1998 Cristian Gafton +- renamed the patch file .patch instead of .spec + +* Thu Apr 09 1998 Erik Troan +- updated to psmisc version 17 +- buildrooted + +* Thu Oct 23 1997 Donnie Barnes +- updated from version 11 to version 16 +- spec file cleanups + +* Tue Jun 17 1997 Erik Troan +- built against glibc