rpms/screen/devel screen-4.0.3-resize.patch, NONE, 1.1 screen-4.0.3-screenrc.patch, NONE, 1.1 screen.spec, 1.51, 1.52 screen-4.0.2-screenrc.patch, 1.3, NONE

Miroslav Lichvar mlichvar at fedoraproject.org
Fri Sep 25 12:35:37 UTC 2009


Author: mlichvar

Update of /cvs/pkgs/rpms/screen/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20325

Modified Files:
	screen.spec 
Added Files:
	screen-4.0.3-resize.patch screen-4.0.3-screenrc.patch 
Removed Files:
	screen-4.0.2-screenrc.patch 
Log Message:
- fix crash when resizing (#515055)
- try to improve default config (#523647, #506256, #492729)
- suppress install-info errors (#515999)


screen-4.0.3-resize.patch:
 b/src/resize.c |   60 +++++++++++++++++++++------------------------------------
 src/resize.c   |    2 -
 2 files changed, 24 insertions(+), 38 deletions(-)

--- NEW FILE screen-4.0.3-resize.patch ---
commit 45d0c395945d2ae0f99748d030a8bffcb4cb46f9
Author: Sadrul Habib Chowdhury <sadrul at users.sourceforge.net>
Date:   Wed Sep 23 16:22:06 2009 -0400

    Fix a crash when resizing.
    
    The alternate screen has to be reset after a resize. Thanks to
    Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de> for pointing
    this out. Closes savannah bug #26742.

diff --git a/src/resize.c b/src/resize.c
index 0bf5f3d..5477bb7 100644
--- a/src/resize.c
+++ b/src/resize.c
@@ -497,6 +497,7 @@ CheckMaxSize(wi)
 int wi;
 {
   unsigned char *oldnull = null;
+  unsigned char *oldblank = blank;
   struct win *p;
   int i;
   struct mline *ml;
@@ -542,49 +543,34 @@ int wi;
 # endif
 #endif
 
+#define RESET_AFC(x, bl) do { if (x == old##bl) x = bl; } while (0)
+
+#define RESET_LINES(lines, count) \
+  do { \
+    ml = lines; \
+    for (i = 0; i < count; i++, ml++) \
+      { \
+	RESET_AFC(ml->image, blank); \
+	RESET_AFC(ml->attr, null); \
+	IFFONT(RESET_AFC(ml->font, null)); \
+	IFCOLOR(RESET_AFC(ml->color, null)); \
+	IFCOLORX(RESET_AFC(ml->colorx, null)); \
+      } \
+  } while (0)
+
   /* We have to run through all windows to substitute
-   * the null references.
+   * the null and blank references.
    */
   for (p = windows; p; p = p->w_next)
     {
-      ml = p->w_mlines;
-      for (i = 0; i < p->w_height; i++, ml++)
-	{
-	  if (ml->attr == oldnull)
-	    ml->attr = null;
-#ifdef FONT
-	  if (ml->font == oldnull)
-	    ml->font = null;
-#endif
-#ifdef COLOR
-	  if (ml->color == oldnull)
-	    ml->color= null;
-#ifdef COLORS256
-	  if (ml->colorx == oldnull)
-	    ml->colorx = null;
-#endif
-#endif
-	}
+      RESET_LINES(p->w_mlines, p->w_height);
+
 #ifdef COPY_PASTE
-      ml = p->w_hlines;
-      for (i = 0; i < p->w_histheight; i++, ml++)
-	{
-	  if (ml->attr == oldnull)
-	    ml->attr = null;
-# ifdef FONT
-	  if (ml->font == oldnull)
-	    ml->font = null;
-# endif
-# ifdef COLOR
-	  if (ml->color == oldnull)
-	    ml->color= null;
-#  ifdef COLORS256
-	  if (ml->colorx == oldnull)
-	    ml->colorx = null;
-#  endif
-# endif
-	}
+      RESET_LINES(p->w_hlines, p->w_histheight);
+      RESET_LINES(p->w_alt_hlines, p->w_alt_histheight);
 #endif
+
+      RESET_LINES(p->w_alt_mlines, p->w_alt_height);
     }
 }
 
commit 7cb17d54cc8fca88e17d6d1e7be2fd49daef1b9d
Author: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date:   Wed Sep 23 16:24:21 2009 -0400

    Typo fix.
    
    Fixing this typo fixes this crash:
    https://bugzilla.redhat.com/show_bug.cgi?id=515055

diff --git a/src/resize.c b/src/resize.c
index 5477bb7..9c7b70f 100644
--- a/src/resize.c
+++ b/src/resize.c
@@ -517,7 +517,7 @@ int wi;
 #ifdef COLOR
   mline_old.color = (unsigned char *)xrealloc((char *)mline_old.color, maxwidth);
 # ifdef COLORS256
-  mline_old.colorx = (unsigned char *)xrealloc((char *)mline_old.color, maxwidth);
+  mline_old.colorx = (unsigned char *)xrealloc((char *)mline_old.colorx, maxwidth);
 # endif
 #endif
   if (!(blank && null && mline_old.image && mline_old.attr IFFONT(&& mline_old.font) IFCOLOR(&& mline_old.color) IFCOLORX(&& mline_old.colorx)))

screen-4.0.3-screenrc.patch:
 etcscreenrc |    8 ++++----
 screenrc    |   59 ++++++++++++++---------------------------------------------
 2 files changed, 18 insertions(+), 49 deletions(-)

--- NEW FILE screen-4.0.3-screenrc.patch ---
diff -up screen-4.0.3/etc/etcscreenrc.screenrc screen-4.0.3/etc/etcscreenrc
--- screen-4.0.3/etc/etcscreenrc.screenrc	2003-12-05 14:46:13.000000000 +0100
+++ screen-4.0.3/etc/etcscreenrc	2009-09-25 14:20:31.000000000 +0200
@@ -55,15 +55,15 @@ terminfo sun 'up=^K:AL=\E[%p1%dL:DL=\E[%
 #xterm understands both im/ic and doesn't have a status line.
 #Note: Do not specify im and ic in the real termcap/info file as
 #some programs (e.g. vi) will (no,no, may (jw)) not work anymore.
-termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
-terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
+#termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
+#terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
 
 # Long time I had this in my private screenrc file. But many people
 # seem to want it (jw):
 # we do not want the width to change to 80 characters on startup:
 # on suns, /etc/termcap has :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:
-termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
-terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
+#termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
+#terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
 
 #
 # Do not use xterms alternate window buffer. 
diff -up screen-4.0.3/etc/screenrc.screenrc screen-4.0.3/etc/screenrc
--- screen-4.0.3/etc/screenrc.screenrc	2006-10-23 15:06:32.000000000 +0200
+++ screen-4.0.3/etc/screenrc	2009-09-25 14:31:30.000000000 +0200
@@ -1,21 +1,11 @@
-#
-# Example of a user's .screenrc file
-#
-
 # This is how one can set a reattach password:
 # password ODSJQf.4IJN7E    # "1234"
 
-# no annoying audible bell, please
-vbell on
-
-# detach on hangup
-autodetach on
-
 # don't display the copyright page
 startup_message off
 
 # emulate .logout message
-pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
+pow_detach_msg "Screen session of $LOGNAME $:cr:$:nl:ended."
 
 # advertise hardstatus support to $TERMCAP
 # termcapinfo  * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
@@ -40,18 +30,12 @@ defscrollback 1000
 
 ################
 #
-# xterm tweaks
+# more xterm tweaks
 #
 
-#xterm understands both im/ic and doesn't have a status line.
-#Note: Do not specify im and ic in the real termcap/info file as
-#some programs (e.g. vi) will not work anymore.
-termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
-terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
-
 #80/132 column switching must be enabled for ^AW to work
 #change init sequence to not switch width
-termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
+#termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
 
 # Make the output buffer large for (fast) xterms.
 #termcapinfo xterm* OL=10000
@@ -60,14 +44,14 @@ termcapinfo xterm* OL=100
 # tell screen that xterm can switch to dark background and has function
 # keys.
 termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
-termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
-termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
+#termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
+#termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
 
 # special xterm hardstatus: use the window title.
 termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
 
 #terminfo xterm 'vb=\E[?5h$<200/>\E[?5l'
-termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
+#termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
 
 # emulate part of the 'K' charset
 termcapinfo   xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
@@ -103,32 +87,12 @@ termcapinfo linux C8
 # old rxvt versions also need this
 # termcapinfo rxvt C8
 
-
-################
-#
-# keybindings
-#
-
-#remove some stupid / dangerous key bindings
-bind k
-bind ^k
-bind .
-bind ^\
-bind \\
-bind ^h
-bind h
-#make them better
-bind 'K' kill
-bind 'I' login on
-bind 'O' login off
-bind '}' history
-
 # Yet another hack:
 # Prepend/append register [/] to the paste if ^a^] is pressed.
 # This lets me have autoindent mode in vi.
-register [ "\033:se noai\015a"
-register ] "\033:se ai\015a"
-bind ^] paste [.]
+#register [ "\033:se noai\015a"
+#register ] "\033:se ai\015a"
+#bind ^] paste [.]
 
 ################
 #
@@ -140,9 +104,14 @@ bind ^] paste [.]
 # screen -t 40 2 rlogin server
 
 # caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
+## alternative caption, gives window list, LOGNAME and current date:
+# caption always "%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=%{mk}@%H %{yk}%D %{ck}%M%{wk} %{ck}%d %{gk}%c"
 # hardstatus alwaysignore
 # hardstatus alwayslastline "%Lw"
 
+# Red Hat's normal status line
+hardstatus string "[screen %n%?: %t%?] %h"
+
 # bind = resize =
 # bind + resize +1
 # bind - resize -1


Index: screen.spec
===================================================================
RCS file: /cvs/pkgs/rpms/screen/devel/screen.spec,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -p -r1.51 -r1.52
--- screen.spec	27 Jul 2009 04:00:42 -0000	1.51
+++ screen.spec	25 Sep 2009 12:35:36 -0000	1.52
@@ -1,7 +1,7 @@
 Summary: A screen manager that supports multiple logins on one terminal
 Name: screen
 Version: 4.0.3
-Release: 14%{?dist}
+Release: 15%{?dist}
 License: GPLv2+
 Group: Applications/System
 URL: http://www.gnu.org/software/screen
@@ -18,13 +18,14 @@ Source1: screen.pam
 
 Patch1: screen-4.0.3-libs.patch
 # Some tweaks of the default screenrc
-Patch2: screen-4.0.2-screenrc.patch
+Patch2: screen-4.0.3-screenrc.patch
 Patch3: screen-4.0.3-configh.patch
 Patch4: screen-4.0.3-stropts.patch
 # Fixes potential buffer overflow when > 2^31 semicolons are passed.
 Patch7: screen-4.0.1-args.patch
 Patch11: screen-4.0.2-maxstr.patch
 Patch12: screen-4.0.3-ipv6.patch
+Patch13: screen-4.0.3-resize.patch
 
 %description
 The screen utility allows you to have multiple logins on just one
@@ -45,6 +46,7 @@ support multiple logins on one terminal.
 %patch7 -p0 -b .args
 %patch11 -p1 -b .maxstr
 %patch12 -p1 -b .ipv6
+%patch13 -p2 -b .resize
 
 %build
 autoconf
@@ -96,12 +98,14 @@ rm -rf $RPM_BUILD_ROOT
 :
 
 %post
-/sbin/install-info %{_infodir}/screen.info.gz %{_infodir}/dir --entry="* screen: (screen).				Terminal multiplexer." ||:
+/sbin/install-info %{_infodir}/screen.info.gz %{_infodir}/dir --entry="* screen: (screen).				Terminal multiplexer." &> /dev/null
+:
 
 %preun
 if [ $1 = 0 ]; then
-	/sbin/install-info --delete %{_infodir}/screen.info.gz %{_infodir}/dir --entry="* screen: (screen).				Terminal multiplexer." ||:
+	/sbin/install-info --delete %{_infodir}/screen.info.gz %{_infodir}/dir --entry="* screen: (screen).				Terminal multiplexer." &> /dev/null
 fi
+:
 
 %files
 %defattr(-,root,root,-)
@@ -115,6 +119,11 @@ fi
 %config(noreplace) %{_sysconfdir}/pam.d/screen
 
 %changelog
+* Fri Sep 25 2009 Miroslav Lichvar <mlichvar at redhat.com> - 4.0.3-15
+- fix crash when resizing (#515055)
+- try to improve default config (#523647, #506256, #492729)
+- suppress install-info errors (#515999)
+
 * Sun Jul 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 4.0.3-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 


--- screen-4.0.2-screenrc.patch DELETED ---




More information about the fedora-extras-commits mailing list