diff --git a/screen-4.3.1-crypt.patch b/screen-4.3.1-crypt.patch new file mode 100644 index 0000000000000000000000000000000000000000..63a1578b096908566753101b394e19b7a286a4bc --- /dev/null +++ b/screen-4.3.1-crypt.patch @@ -0,0 +1,13 @@ +diff --git a/misc.c b/misc.c +index 43e93a2..178fda9 100644 +--- a/misc.c ++++ b/misc.c +@@ -56,6 +56,8 @@ register const char *str; + { + register char *cp; + ++ if(str == NULL) ++ Panic(0, "SaveStr() received NULL - possibly failed crypt()"); + if ((cp = malloc(strlen(str) + 1)) == NULL) + Panic(0, "%s", strnomem); + else diff --git a/screen-4.3.1-screenrc.patch b/screen-4.3.1-screenrc.patch new file mode 100644 index 0000000000000000000000000000000000000000..67e36982bf529b7d03626fc56251b899755726cd --- /dev/null +++ b/screen-4.3.1-screenrc.patch @@ -0,0 +1,157 @@ +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 +@@ -36,8 +36,8 @@ vbell_msg " Wuff ---- Wuff!! " + # IC insert multiple chars + # nx terminal uses xon/xoff + +-termcap facit|vt100|xterm LP:G0 +-terminfo facit|vt100|xterm LP:G0 ++termcap facit|vt100|xterm|xterm-* LP:G0 ++terminfo facit|vt100|xterm|xterm-* LP:G0 + + #the vt100 description does not mention "dl". *sigh* + termcap vt100 dl=5\E[M +@@ -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 +@@ -59,18 +43,18 @@ 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|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~' + + # special xterm hardstatus: use the window title. +-termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' ++termcapinfo xterm|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' ++termcapinfo xterm|xterm-* 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' + + # xterm-52 tweaks: + # - uses background color for delete operations +@@ -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 diff --git a/screen-4.3.1-suppress_remap.patch b/screen-4.3.1-suppress_remap.patch new file mode 100644 index 0000000000000000000000000000000000000000..85109a2ef1047ab1a58581c28f164af1764eb1b6 --- /dev/null +++ b/screen-4.3.1-suppress_remap.patch @@ -0,0 +1,13 @@ +Author: Loic Minier +Description: Unbreak several useful keybindings. +--- a/termcap.c ++++ b/termcap.c +@@ -552,8 +552,6 @@ + else + break; + } +- if (n < KMAP_KEYS) +- domap = 1; + if (map == 0 && domap) + return 0; + if (map && !domap) diff --git a/screen-E3.patch b/screen-E3.patch new file mode 100644 index 0000000000000000000000000000000000000000..31fb2be28b2baf4d13714425bb7d9ca1858f79ee --- /dev/null +++ b/screen-E3.patch @@ -0,0 +1,51 @@ +diff --git a/display.c b/display.c +index b11b18b..180f19c 100644 +--- a/display.c ++++ b/display.c +@@ -3818,4 +3818,10 @@ char **cmdv; + + #endif /* BLANKER_PRG */ + ++void ++ClearScrollbackBuffer() ++{ ++ if (D_CE3) ++ AddCStr(D_CE3); ++} + +diff --git a/extern.h b/extern.h +index 7966008..e1ec242 100644 +--- a/extern.h ++++ b/extern.h +@@ -316,6 +316,7 @@ extern int color256to88 __P((int)); + extern void ResetIdle __P((void)); + extern void KillBlanker __P((void)); + extern void DisplaySleep1000 __P((int, int)); ++extern void ClearScrollbackBuffer __P((void)); + + /* resize.c */ + extern int ChangeWindowSize __P((struct win *, int, int, int)); +diff --git a/screen.c b/screen.c +index 64650e9..c68d949 100644 +--- a/screen.c ++++ b/screen.c +@@ -1958,6 +1958,7 @@ void Detach(int mode) + + case D_LOCK: + ClearAll(); ++ ClearScrollbackBuffer(); + sign = SIG_LOCK; + /* tell attacher to lock terminal with a lockprg. */ + break; +diff --git a/term.c b/term.c +index c92d85a..a6e9200 100644 +--- a/term.c ++++ b/term.c +@@ -83,6 +83,7 @@ struct term term[T_N] = + { "CD", T_STR }, + { "ce", T_STR }, + { "cb", T_STR }, ++ { "E3", T_STR }, + + /* initialise */ + { "is", T_STR }, diff --git a/screen.spec b/screen.spec index 5c7403d8a8c059175e55c5c1c11ac3899efa5399..95508b07e2eb85aee37d66239172ac8e26927120 100644 --- a/screen.spec +++ b/screen.spec @@ -1,13 +1,18 @@ Name: screen Epoch: 1 Version: 4.6.2 -Release: 5 +Release: 6 Summary: A full-screen window manager License: GPLv3+ URL: http://www.gnu.org/software/screen Source0: http://ftp.gnu.org/gnu/screen/screen-%{version}.tar.gz Source1: screen.pam +Patch0: screen-4.3.1-screenrc.patch +Patch1: screen-E3.patch +Patch2: screen-4.3.1-suppress_remap.patch +Patch3: screen-4.3.1-crypt.patch + BuildRequires: automake autoconf gcc ncurses-devel texinfo Requires: shadow-utils Requires(preun): info @@ -26,7 +31,7 @@ BuildArch: noarch %{summary}. %prep -%autosetup -n %{name}-%{version} +%autosetup -n %{name}-%{version} -p1 %build autoreconf -fiv @@ -92,6 +97,12 @@ fi %{_infodir}/screen.info* %changelog +* Wed Mar 18 2020 openEuler Buildteam - 1:4.6.2-6 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix Null pointer reference + * Sat Dec 21 2019 openEuler Buildteam - 1:4.6.2-5 - Type:enhancement - ID:NA