diff --git a/0003-top-eliminate-a-potential-abend-when-exiting-A-mode.patch b/0003-top-eliminate-a-potential-abend-when-exiting-A-mode.patch deleted file mode 100644 index f4adcaf8530990b7e81dc99335d55e7fa71d8436..0000000000000000000000000000000000000000 --- a/0003-top-eliminate-a-potential-abend-when-exiting-A-mode.patch +++ /dev/null @@ -1,207 +0,0 @@ -From ad4429ade07abe2133dd53341fa91639625f09a0 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Wed, 27 Jul 2022 00:00:00 -0500 -Subject: [PATCH] top: eliminate a potential abend when exiting 'A' mode <=== - port of newlib 80e2a7a6 - -______________________________ original newlib message ------------------------------------ ( minus git hash ) - -In that issue cited below, Tyson Nottingham identified -a potential abend which was associated with 'alternate -display mode' plus that troublesome 'mkVIZrow1' macro. -He also offered a perfectly adequate fix for that bug. - -I refer to that macro as troublesome since it's now so -widely used and sometimes (by design) causes 'begtask' -to go negative (invalid). And now I found yet one more -place where it should have been used but wasn't ('f'). - -It's also troublesome as evidenced by some git history -listed below. Heck, there was even a commit addressing -the same symptoms (alternate display mode abend) which -Tyson suffered. Clearly, the current design is flawed. - -So, with those two issues in mind, I've refactored the -approach to maintaining a visible task in the 1st row. -Henceforth, a 'mkVIZrow1' macro will be issued in only -two places: once at startup and after most keystrokes. - -Such an approach likely results in additional calls to -the 'window_hlp' routine that aren't really necessary. -But, it provides a cleaner design less prone to errors -in the future. Besides, such additional overhead would -only be incurred when interacting with the user. Thus, -new costs are of no concern and will never be noticed. - -Reference(s): -. Tyson Nottingham reported problem -https://gitlab.com/procps-ng/procps/-/issues/245 -. Jun, 2018 - visible row 1 tasks first addressed -commit ........................................ -. Jun, 2018 - adressed edge case, new bugs created -commit ........................................ -. Sep, 2018 - additional edge case addressed -commit ........................................ -. May, 2021 - some abends fixed, new error created -commit ........................................ -. Jun, 2021 - try to prorect against future errors -commit ........................................ -. Sep, 2021 - integrate mkVIZ & 'focused' tasks -commit ........................................ - -Discovered by: Tyson Nottingham -Signed-off-by: Jim Warner ---- - top/top.c | 44 +++++++++++++++++++------------------------- - top/top.h | 3 ++- - 2 files changed, 21 insertions(+), 26 deletions(-) - -diff --git a/top/top.c b/top/top.c -index 51bf563..204e66a 100644 ---- a/top/top.c -+++ b/top/top.c -@@ -4329,10 +4329,11 @@ static void win_names (WIN_t *q, const char *name) { - static void win_reset (WIN_t *q) { - SETw(q, Show_IDLEPS | Show_TASKON); - #ifndef SCROLLVAR_NO -- q->rc.maxtasks = q->usrseltyp = q->begpflg = q->begtask = q->begnext = q->varcolbeg = q->focus_pid = 0; -+ q->rc.maxtasks = q->usrseltyp = q->begpflg = q->begtask = q->varcolbeg = q->focus_pid = 0; - #else -- q->rc.maxtasks = q->usrseltyp = q->begpflg = q->begtask = q->begnext = q->focus_pid = 0; -+ q->rc.maxtasks = q->usrseltyp = q->begpflg = q->begtask = q->focus_pid = 0; - #endif -+ mkVIZoff(q) - // these next two are global, not really windows based - Monpidsidx = 0; - Rc.tics_scaled = 0; -@@ -5116,7 +5117,6 @@ static void keys_global (int ch) { - case '?': - case 'h': - help_view(); -- mkVIZrow1 - break; - case 'B': - TOGw(w, View_NOBOLD); -@@ -5143,7 +5143,6 @@ static void keys_global (int ch) { - break; - case 'g': - win_select(0); -- mkVIZrow1 - break; - case 'H': - Thread_mode = !Thread_mode; -@@ -5224,7 +5223,6 @@ static void keys_global (int ch) { - break; - case 'Z': - wins_colors(); -- mkVIZrow1 - break; - case '0': - Rc.zero_suppress = !Rc.zero_suppress; -@@ -5446,10 +5444,7 @@ static void keys_task (int ch) { - case 'O': - case 'o': - case kbd_CtrlO: -- if (VIZCHKw(w)) { -- other_filters(ch); -- mkVIZrow1 -- } -+ if (VIZCHKw(w)) other_filters(ch); - break; - case 'U': - case 'u': -@@ -5458,7 +5453,6 @@ static void keys_task (int ch) { - if (*str != kbd_ESC - && (errmsg = user_certify(w, str, ch))) - show_msg(errmsg); -- mkVIZrow1 - } - break; - case 'V': -@@ -5565,10 +5559,7 @@ static void keys_window (int ch) { - break; - case 'a': - case 'w': -- if (ALTCHKw) { -- win_select(ch); -- mkVIZrow1 -- } -+ if (ALTCHKw) win_select(ch); - break; - case 'G': - if (ALTCHKw) { -@@ -5665,10 +5656,8 @@ static void keys_window (int ch) { - case kbd_HOME: - #ifndef SCROLLVAR_NO - if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS)) w->begtask = w->begpflg = w->varcolbeg = 0; -- mkVIZrow1 - #else - if (VIZCHKw(w)) if (CHKw(w, Show_IDLEPS)) w->begtask = w->begpflg = 0; -- mkVIZrow1 - #endif - break; - case kbd_END: -@@ -6109,6 +6098,14 @@ static void do_key (int ch) { - if (strchr(key_tab[i].keys, ch)) { - key_tab[i].func(ch); - Frames_signal = BREAK_kbd; -+ /* due to the proliferation of the need for 'mkVIZrow1', | -+ aside from 'wins_stage_2' use, we'll now issue it one | -+ time here. there will remain several places where the | -+ companion 'mkVIZrowX' macro is issued, thus the check | -+ for a value already in 'begnext' in this conditional. | */ -+ if (CHKw(Curwin, Show_TASKON) && !mkVIZyes) -+ mkVIZrow1 -+ - goto all_done; - } - }; -@@ -6493,14 +6490,11 @@ static const char *task_show (const WIN_t *q, int idx) { - - - /* -- * A window_show *Helper* function ensuring that Curwin's 'begtask' -- * represents a visible process (not any hidden/filtered-out task). -- * In reality, this function is called: -- * 1) exclusively for the 'current' window -- * 2) immediately after interacting with the user -- * 3) who struck: up, down, pgup, pgdn, home, end, 'o/O' or 'u/U' -- * 4) or upon the user switching from one window to another window -- * ( note: it's entirely possible there are NO visible tasks to show ) */ -+ * A window_show *Helper* function ensuring that a window 'begtask' | -+ * represents a visible process (not any hidden/filtered-out task). | -+ * In reality this function is called exclusively for the 'current' | -+ * window and only after available user keystroke(s) are processed. | -+ * Note: it's entirely possible there are NO visible tasks to show! | */ - static void window_hlp (void) { - WIN_t *w = Curwin; // avoid gcc bloat with a local copy - int i, reversed; -@@ -6548,7 +6542,7 @@ fwd_redux: - } - - wrap_up: -- w->begnext = 0; -+ mkVIZoff(w) - OFFw(w, NOPRINT_xxx); - } // end: window_hlp - -diff --git a/top/top.h b/top/top.h -index 40fe0ec..9d44669 100644 ---- a/top/top.h -+++ b/top/top.h -@@ -427,9 +427,10 @@ typedef struct WIN_t { - - // Support for a proper (visible) row #1 whenever Curwin changes - // ( or a key which might affect vertical scrolling was struck ) --#define mkVIZyes Curwin->begnext != 0 -+#define mkVIZyes ( Curwin->begnext != 0 ) - #define mkVIZrow1 { Curwin->begnext = +1; Curwin->begtask -= 1; } - #define mkVIZrowX(n) { Curwin->begnext = (n); } -+#define mkVIZoff(w) { w->begnext = 0; } - - /* Special Section: end ------------------------------------------ */ - /* /////////////////////////////////////////////////////////////// */ --- -2.33.0 - diff --git a/0001-add-M-and-N-options-for-top.patch b/openeuler-add-M-and-N-options-for-top.patch similarity index 83% rename from 0001-add-M-and-N-options-for-top.patch rename to openeuler-add-M-and-N-options-for-top.patch index b21b67a4c61d4bec2895c9bcf13a01fbd4bd142b..7856467ac6e6dc8a6ee43e5a829e2930bb24575b 100644 --- a/0001-add-M-and-N-options-for-top.patch +++ b/openeuler-add-M-and-N-options-for-top.patch @@ -5,16 +5,15 @@ Subject: [PATCH] procps-ng: add -M and -N options for top Signed-off-by: xuchunmei Signed-off-by: zhoujie +Signed-off-by: Qiang Wei --- top/top.c | 15 ++++++++++++++- top/top_nls.c | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) -diff --git a/top/top.c b/top/top.c -index 04cf084..fbf0236 100644 ---- a/top/top.c -+++ b/top/top.c -@@ -4076,7 +4076,7 @@ default_or_error: +--- a/src/top/top.c ++++ b/src/top/top.c +@@ -4227,7 +4227,7 @@ default_or_error: * overridden -- we'll force some on and negate others in our * best effort to honor the loser's (oops, user's) wishes... */ static void parse_args (int argc, char **argv) { @@ -23,7 +22,7 @@ index 04cf084..fbf0236 100644 static const struct option lopts[] = { { "batch-mode", no_argument, NULL, 'b' }, { "cmdline-toggle", no_argument, NULL, 'c' }, -@@ -4097,6 +4097,8 @@ static void parse_args (int argc, char **argv) { +@@ -4248,6 +4248,8 @@ static void parse_args (int argc, char * { "version", no_argument, NULL, 'V' }, { "width", optional_argument, NULL, 'w' }, { "single-cpu-toggle", no_argument, NULL, '1' }, @@ -32,7 +31,7 @@ index 04cf084..fbf0236 100644 { NULL, 0, NULL, 0 } }; float tmp_delay = FLT_MAX; -@@ -4219,6 +4221,17 @@ static void parse_args (int argc, char **argv) { +@@ -4370,6 +4372,17 @@ static void parse_args (int argc, char * error_exit(fmtmk(N_fmt(BAD_widtharg_fmt), cp)); Width_mode = (int)tmp; continue; @@ -50,11 +49,9 @@ index 04cf084..fbf0236 100644 default: // we'll rely on getopt for any error message ... bye_bye(NULL); -diff --git a/top/top_nls.c b/top/top_nls.c -index 92f12ba..2e9c7fd 100644 ---- a/top/top_nls.c -+++ b/top/top_nls.c -@@ -409,6 +409,8 @@ static void build_norm_nlstab (void) { +--- a/src/top/top_nls.c ++++ b/src/top/top_nls.c +@@ -431,6 +431,8 @@ static void build_norm_nlstab (void) { " -u, --filter-only-euser =USER show only processes owned by USER\n" " -w, --width [=COLUMNS] change print width [,use COLUMNS]\n" " -1, --single-cpu-toggle reverse last remembered '1' state\n" @@ -63,6 +60,3 @@ index 92f12ba..2e9c7fd 100644 "\n" " -h, --help display this help text, then exit\n" " -V, --version output version information & exit\n" --- -2.33.0 - diff --git a/0002-top-exit-with-error-when-pid-overflow.patch b/openeuler-top-exit-with-error-when-pid-overflow.patch similarity index 80% rename from 0002-top-exit-with-error-when-pid-overflow.patch rename to openeuler-top-exit-with-error-when-pid-overflow.patch index a19cc36f881e68a2bfdeea734077bcf6965e537f..89bdb8914b51a8755eba420a05839f8dabd0c665 100644 --- a/0002-top-exit-with-error-when-pid-overflow.patch +++ b/openeuler-top-exit-with-error-when-pid-overflow.patch @@ -4,15 +4,14 @@ Date: Wed, 23 Jan 2019 07:57:53 -0500 Subject: [PATCH] top: exit with error when pid overflow Signed-off-by: xuchunmei +Signed-off-by: Qiang Wei --- top/top.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -diff --git a/top/top.c b/top/top.c -index fbf0236..4bcfff0 100644 ---- a/top/top.c -+++ b/top/top.c -@@ -4189,7 +4189,8 @@ static void parse_args (int argc, char **argv) { +--- a/src/top/top.c ++++ b/src/top/top.c +@@ -4338,7 +4338,8 @@ static void parse_args (int argc, char * if (Monpidsidx >= MONPIDMAX) error_exit(fmtmk(N_fmt(LIMIT_exceed_fmt), MONPIDMAX)); if (1 != sscanf(cp, "%d", &pid) @@ -22,6 +21,3 @@ index fbf0236..4bcfff0 100644 error_exit(fmtmk(N_fmt(BAD_mon_pids_fmt), cp)); if (!pid) pid = getpid(); for (i = 0; i < Monpidsidx; i++) --- -2.33.0 - diff --git a/procps-ng-4.0.0.tar.xz b/procps-ng-4.0.0.tar.xz deleted file mode 100644 index f271d29bdcd540826607b54c86f3eae79653a31b..0000000000000000000000000000000000000000 Binary files a/procps-ng-4.0.0.tar.xz and /dev/null differ diff --git a/procps-ng-4.0.2.tar.xz b/procps-ng-4.0.2.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..8ebf3053e7530340f9da4bcbc543e70f7e4722a7 Binary files /dev/null and b/procps-ng-4.0.2.tar.xz differ diff --git a/procps-ng.spec b/procps-ng.spec index 3d76daf753f462e8eecc00bf51f007bb6ea46b75..2b3c1d110a85fa981d1e6680e2e783d16a368072 100644 --- a/procps-ng.spec +++ b/procps-ng.spec @@ -1,6 +1,6 @@ Name: procps-ng -Version: 4.0.0 -Release: 4 +Version: 4.0.2 +Release: 1 Summary: Utilities that provide system information. License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+ URL: https://sourceforge.net/projects/procps-ng/ @@ -9,10 +9,9 @@ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz Source1: README.md Source2: README.top -Patch1: 0001-add-M-and-N-options-for-top.patch -Patch2: 0002-top-exit-with-error-when-pid-overflow.patch -Patch3: 0003-top-eliminate-a-potential-abend-when-exiting-A-mode.patch -Patch4: 0004-skill-Restore-the-p-flag-functionality.patch +Patch1: openeuler-add-M-and-N-options-for-top.patch +Patch2: openeuler-top-exit-with-error-when-pid-overflow.patch +Patch3: skill-Restore-the-p-flag-functionality.patch BuildRequires: ncurses-devel libtool autoconf automake gcc gettext-devel systemd-devel @@ -47,7 +46,7 @@ The package is used for the Internationalization of %{name} %autosetup -n procps-ng-%{version} -p1 cp -p %{SOURCE1} . -cp -p %{SOURCE2} top/ +cp -p %{SOURCE2} src/top/ %build autoreconf -ivf @@ -73,10 +72,10 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof %doc COPYING COPYING.LIB %{!?_licensedir:%global license %%doc} %license COPYING COPYING.LIB -%{_libdir}/libproc-2.so.* +%{_libdir}/libproc2.so.* %{_bindir}/* %{_sbindir}/* -%exclude %{_libdir}/libproc-2.la +%exclude %{_libdir}/libproc2.la %exclude /unwanted/* %exclude %{_libdir}/*.a @@ -84,17 +83,20 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof %doc COPYING COPYING.LIB %{!?_licensedir:%global license %%doc} %license COPYING COPYING.LIB -%{_libdir}/libproc-2.so -%{_libdir}/pkgconfig/libproc-2.pc -%{_includedir}/procps +%{_libdir}/libproc2.so +%{_libdir}/pkgconfig/libproc2.pc +%{_includedir}/libproc2 %files i18n -f %{name}.lang %files help -%doc AUTHORS Documentation/bugs.md Documentation/FAQ NEWS README.md top/README.top Documentation/TODO +%doc AUTHORS NEWS README.md %{_mandir}/man* %changelog +* Wed Feb 1 2023 Qiang Wei - 4.0.2-1 +- Update to 4.0.2. + * Mon Dec 12 2022 Liu Chao - 4.0.0-4 - skill: Restore the -p flag functionality diff --git a/0004-skill-Restore-the-p-flag-functionality.patch b/skill-Restore-the-p-flag-functionality.patch similarity index 77% rename from 0004-skill-Restore-the-p-flag-functionality.patch rename to skill-Restore-the-p-flag-functionality.patch index de60eeca558c3baa973c3761bd0235f4a7991add..55065d128a762a9b489aaf34a23f3c233680d7bb 100644 --- a/0004-skill-Restore-the-p-flag-functionality.patch +++ b/skill-Restore-the-p-flag-functionality.patch @@ -9,17 +9,30 @@ on PID, used by the -p option, was missed. It is now restored. References: https://bugs.debian.org/1025915 -Conflict:remove NES part and change src/skill.c to skill.c +Signed-off-by: Qiang Wei --- - skill.c | 2 ++ + NEWS | 4 ++++ + src/skill.c | 2 ++ testsuite/skill.test/skill.exp | 32 ++++++++++++++++++++++++++++++++ - 2 files changed, 34 insertions(+) + 3 files changed, 38 insertions(+) create mode 100644 testsuite/skill.test/skill.exp -diff --git a/skill.c b/skill.c +diff --git a/NEWS b/NEWS +index d334c0d6..2d13978d 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,7 @@ ++procps-ng-NEXT ++--------------- ++ * docs: Don't install English manpages twice ++ * skill: Match on -p again Debian #1025915 + procps-ng-4.0.2 + --------------- + * library revision - 0:1:0 +diff --git a/src/skill.c b/src/skill.c index 9f617bfd..c2e52744 100644 ---- a/skill.c -+++ b/skill.c +--- a/src/skill.c ++++ b/src/skill.c @@ -287,6 +287,8 @@ static void scan_procs(struct run_time_conf_t *run_time) for (i=0; i < total_procs; i++) { if (PIDS_GETINT(PID) == my_pid || PIDS_GETINT(PID) == 0) @@ -68,5 +81,5 @@ index 00000000..162d9610 +# Cleanup +kill_testproc -- -2.27.0 +2.33.0