Update to 3.3.8
This commit is contained in:
		
							parent
							
								
									1c4b207578
								
							
						
					
					
						commit
						99289a5875
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -4,3 +4,4 @@ | ||||
| /procps-ng-3.3.4.tar.xz | ||||
| /procps-ng-3.3.6.tar.xz | ||||
| /procps-ng-3.3.7.tar.xz | ||||
| /procps-ng-3.3.8.tar.xz | ||||
|  | ||||
| @ -1,41 +0,0 @@ | ||||
| diff --git a/proc/readproc.c b/proc/readproc.c
 | ||||
| --- procps-ng-3.3.7.orig/proc/readproc.c	2013-03-25 11:50:21.000000000 +0100
 | ||||
| +++ procps-ng-3.3.7/proc/readproc.c	2013-03-26 17:50:54.860228114 +0100
 | ||||
| @@ -534,28 +534,32 @@
 | ||||
|   | ||||
|  static int file2str(const char *directory, const char *what, struct utlbuf_s *ub) { | ||||
|   #define readMAX  4096 | ||||
| - #define buffMIN (tot_read + num + 1)  // +1 for the '\0' delimiter
 | ||||
| + #define buffMIN (tot_read + num + 1)       // +1 for the '\0' delimiter
 | ||||
| + #define buffGRW (30 + (buffMIN * 5) / 4)   // grow by more than 25%
 | ||||
|      char path[PROCPATHLEN], chunk[readMAX]; | ||||
| -    int fd, num, tot_read = 0;
 | ||||
| +    int fd, num, eof = 0, tot_read = 0;
 | ||||
|   | ||||
|      /* on first use we preallocate a buffer of minimum size to emulate | ||||
|         former 'local static' behavior -- even if this read fails, that | ||||
| -       buffer will likely soon be used for another sudirectory anyway */
 | ||||
| +       buffer will likely soon be used for another subdirectory anyway */
 | ||||
|      if (ub->buf) ub->buf[0] = '\0'; | ||||
|      else ub->buf = xcalloc((ub->siz = readMAX)); | ||||
|      sprintf(path, "%s/%s", directory, what); | ||||
|      if (-1 == (fd = open(path, O_RDONLY, 0))) return -1; | ||||
| -    while (0 < (num = read(fd, chunk, readMAX))) {
 | ||||
| +    while (!eof && 0 < (num = read(fd, chunk, readMAX))) {
 | ||||
|          if (ub->siz < buffMIN) | ||||
| -            ub->buf = xrealloc(ub->buf, (ub->siz = buffMIN));
 | ||||
| +            ub->buf = xrealloc(ub->buf, (ub->siz = buffGRW));
 | ||||
|          memcpy(ub->buf + tot_read, chunk, num); | ||||
|          tot_read += num; | ||||
| +        eof = (num < readMAX);
 | ||||
|      }; | ||||
|      ub->buf[tot_read] = '\0'; | ||||
|      close(fd); | ||||
| +    if (unlikely(tot_read < 1)) return -1;
 | ||||
|      return tot_read; | ||||
|   #undef readMAX | ||||
|   #undef buffMIN | ||||
| + #undef buffGRW
 | ||||
|  } | ||||
|   | ||||
|  static char** file2strvec(const char* directory, const char* what) { | ||||
| @ -1,12 +0,0 @@ | ||||
| diff -Naur procps-ng-3.3.7.orig/testsuite/config/unix.exp procps-ng-3.3.7/testsuite/config/unix.exp
 | ||||
| --- procps-ng-3.3.7.orig/testsuite/config/unix.exp	2013-03-25 11:50:21.000000000 +0100
 | ||||
| +++ procps-ng-3.3.7/testsuite/config/unix.exp	2013-03-26 17:50:54.860228114 +0100
 | ||||
| @@ -80,7 +80,7 @@
 | ||||
|      } | ||||
|   | ||||
|      set do_loop 1 | ||||
| -    set last_value &9
 | ||||
| +    set last_value 99999999
 | ||||
|      set found_item 0 | ||||
|      while { $do_loop ==1 } { | ||||
|      expect { | ||||
| @ -1,120 +0,0 @@ | ||||
| From 9f6bd9a47a41942bbcecbb2648d6c4ffa456c744 Mon Sep 17 00:00:00 2001 | ||||
| From: Jim Warner <james.warner@comcast.net> | ||||
| Date: Sat, 18 May 2013 00:00:00 -0500 | ||||
| Subject: [PATCH] top: inoculated against a window manager like 'screen' | ||||
| 
 | ||||
| If top were invoked under the 'screen' window manager, | ||||
| writing the terminfo string 'exit_ca_mode' at top exit | ||||
| would not restore the display to the state existing at | ||||
| the time top was started. That's what occurs normally. | ||||
| The net result of that failure was a corrupted screen. | ||||
| 
 | ||||
| However, there is a 'screen' configuration option that | ||||
| will produce proper 'rmcup' behavior, but it is off by | ||||
| default. That screencr option is known as 'altscreen'. | ||||
| I stumbled across this provision by cloning the screen | ||||
| git repository then searching for references to 'cup'. | ||||
| 
 | ||||
| If 'altscreen on' had been in either the /etc/screenrc | ||||
| or the $HOME/.screenrc configuration file, my poor old | ||||
| top would never have been accused of such corruptions. | ||||
| Of course, the Programming Gods decree that any simple | ||||
| solution for our problem must always be revealed last. | ||||
| 
 | ||||
| So before discovering that rc option, another approach | ||||
| was taken involving top only. With just a little extra | ||||
| refactoring of top display logic he was made immune to | ||||
| any such quirk in the implementation of 'smcup/rmcup'. | ||||
| 
 | ||||
| I always feel good about any enhancement that actually | ||||
| reduces the total number of lines of code. Even though | ||||
| this change involved mostly rearranging some logic, it | ||||
| yielded one less line (can't judge by diffstat because | ||||
| of braces & notes). Anyway, rather than requiring some | ||||
| change to a screenrc file, now we are self-sufficient. | ||||
| 
 | ||||
| Reference(s): | ||||
|   procps --------------------------------------------- | ||||
| https://bugzilla.redhat.com/show_bug.cgi?id=962022 | ||||
| http://www.freelists.org/post/procps/top-procpsng337-no-screen-cleaning-at-exit,3 | ||||
| . top : disable tty scrollback buffer to improve SIGWINCH | ||||
| commit dedaf6e1a81738ff08ee8e8523871e12f555ad6d | ||||
|   screen --------------------------------------------- | ||||
| git://git.sv.gnu.org/screen.git | ||||
| . Improve cursor store/restore on smcup/rmcup. | ||||
| commit f95352946080be803b794c9f2733d8c809c1a39a | ||||
| . Fix using alternate screen buffers in some cases. | ||||
| commit ad56f746c6243d45124485d198d577bdbb78071c | ||||
| http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=558724 | ||||
| 
 | ||||
| Signed-off-by: Jim Warner <james.warner@comcast.net> | ||||
| ---
 | ||||
|  NEWS      |  2 ++ | ||||
|  top/top.c | 18 ++++++++---------- | ||||
|  2 files changed, 10 insertions(+), 10 deletions(-) | ||||
| 
 | ||||
| diff --git a/top/top.c b/top/top.c
 | ||||
| index 4caf658..2b05a60 100644
 | ||||
| --- a/top/top.c
 | ||||
| +++ b/top/top.c
 | ||||
| @@ -350,16 +350,14 @@ static void at_eoj (void) {
 | ||||
|     if (Ttychanged) { | ||||
|        tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original); | ||||
|        if (keypad_local) putp(keypad_local); | ||||
| -      if (exit_ca_mode)
 | ||||
| +      putp("\n");
 | ||||
| +      if (exit_ca_mode) {
 | ||||
|           // this next will also replace top's most recent screen with the | ||||
|           // original display contents that were visible at our invocation | ||||
|           putp(exit_ca_mode); | ||||
| -      else {
 | ||||
| -         // but if we can't, we'll simply do it as old top always used to
 | ||||
| -         putp(tg2(0, Screen_rows));
 | ||||
| -         putp("\n");
 | ||||
|        } | ||||
|        putp(Cap_curs_norm); | ||||
| +      putp(Cap_clr_eol);
 | ||||
|  #ifndef RMAN_IGNORED | ||||
|        putp(Cap_smam); | ||||
|  #endif | ||||
| @@ -756,7 +754,6 @@ static int show_pmt (const char *str) {
 | ||||
|           * Show a special coordinate message, in support of scrolling */ | ||||
|  static inline void show_scroll (void) { | ||||
|     PUTT(Scroll_fmts, tg2(0, Msg_row), Frame_maxtask); | ||||
| -   putp(tg2(0, Msg_row));
 | ||||
|  } // end: show_scroll | ||||
| 
 | ||||
| 
 | ||||
| @@ -5445,7 +5442,7 @@ static void frame_hlp (int wix, int max) {
 | ||||
|           * (*subordinate* functions invoked know WHEN the user's had) | ||||
|           * (ENOUGH already.  And at Frame End, it SHOULD be apparent) | ||||
|           * (WE am d'MAN -- clearing UNUSED screen LINES and ensuring) | ||||
| -         * (the CURSOR is STUCK in just the RIGHT place, know what I)
 | ||||
| +         * (that those auto-sized columns are addressed, know what I)
 | ||||
|           * (mean?  Huh, "doesn't DO MUCH"!  Never, EVER think or say) | ||||
|           * (THAT about THIS function again, Ok?  Good that's better.) | ||||
|           * | ||||
| @@ -5474,7 +5471,10 @@ static void frame_make (void) {
 | ||||
|     Tree_idx = Pseudo_row = Msg_row = scrlins = 0; | ||||
|     summary_show(); | ||||
|     Max_lines = (Screen_rows - Msg_row) - 1; | ||||
| -   OFFw(Curwin, INFINDS_xxx);
 | ||||
| +   OFFw(w, INFINDS_xxx);
 | ||||
| +
 | ||||
| +   if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll();
 | ||||
| +   else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol);
 | ||||
| 
 | ||||
|     if (!Rc.mode_altscr) { | ||||
|        // only 1 window to show so, piece o' cake | ||||
| @@ -5498,8 +5498,6 @@ static void frame_make (void) {
 | ||||
|        putp(Cap_nl_clreos); | ||||
|        PSU_CLREOS(Pseudo_row); | ||||
|     } | ||||
| -   if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll();
 | ||||
| -   else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol);
 | ||||
|     fflush(stdout); | ||||
| 
 | ||||
|     /* we'll deem any terminal not supporting tgoto as dumb and disable | ||||
| --
 | ||||
| 1.8.1.2 | ||||
| 
 | ||||
| @ -2,18 +2,14 @@ | ||||
| 
 | ||||
| Summary: System and process monitoring utilities | ||||
| Name: procps-ng | ||||
| Version: 3.3.7 | ||||
| Release: 4%{?dist} | ||||
| Version: 3.3.8 | ||||
| Release: 1%{?dist} | ||||
| License: GPLv2+ and LGPLv2+ | ||||
| Group: Applications/System | ||||
| URL: https://sourceforge.net/projects/procps-ng/ | ||||
| 
 | ||||
| Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz | ||||
| 
 | ||||
| Patch0: procps-ng-3.3.7-testsuite-reverting-bogus-commit-unix-exp.patch | ||||
| Patch1: procps-ng-3.3.7-segv-file2str-read-zero-bytes.patch | ||||
| Patch2: procps-ng-3.3.7-top-inoculated-against-a-window-manager-like-screen.patch | ||||
| 
 | ||||
| Requires(post): /sbin/ldconfig | ||||
| Requires(postun): /sbin/ldconfig | ||||
| 
 | ||||
| @ -68,10 +64,6 @@ System and process monitoring utilities development headers | ||||
| %prep | ||||
| %setup -q -n %{name}-%{version} | ||||
| 
 | ||||
| %patch0 -p1 | ||||
| %patch1 -p1 | ||||
| %patch2 -p1 | ||||
| 
 | ||||
| %build | ||||
| # The following stuff is needed for git archives only | ||||
| #echo "%{version}" > .tarball-version | ||||
| @ -133,6 +125,9 @@ mkdir -p %{buildroot}%{_sysconfdir}/sysctl.d | ||||
| %{_includedir}/proc | ||||
| 
 | ||||
| %changelog | ||||
| * Wed May 29 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-1 | ||||
| - Update to 3.3.8 | ||||
| 
 | ||||
| * Wed May 22 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.7-4 | ||||
| - top: inoculated against a window manager like 'screen' (#962022) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user