From 9355e2a1d173da4750772297dfdc2979ca0a53aa Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Wed, 12 Jul 2017 21:14:12 +0200 Subject: [PATCH] - updated to 4.6.1 - updated info,debian_fixed patches - dropped 4.1.0-4.0.3-interoperability patch (a bit outdated, Debian dropped it in 2014) - now sockets are created instead of fifos, but attaching to fifos created by older screen is supported --- ...-screen-4.1.0-4.0.3-interoperability.patch | 151 ------------------ screen-debian_fixed.patch | 22 +-- screen-info.patch | 10 +- screen.spec | 22 +-- 4 files changed, 19 insertions(+), 186 deletions(-) delete mode 100644 60-644788-screen-4.1.0-4.0.3-interoperability.patch diff --git a/60-644788-screen-4.1.0-4.0.3-interoperability.patch b/60-644788-screen-4.1.0-4.0.3-interoperability.patch deleted file mode 100644 index 1632986..0000000 --- a/60-644788-screen-4.1.0-4.0.3-interoperability.patch +++ /dev/null @@ -1,151 +0,0 @@ -Author: Julien Cristau -Debian-Bug: #644788 - -Author: Axel Beckert -Debian-Bug: #684342 - -The following patch, while not all that pretty, seems to allow me to -attach to a screen started with either the squeeze or sid version. -I'm sure there's corner cases, but. - -Cheers, -Julien - -Index: screen/screen.h -=================================================================== ---- screen.orig/screen.h 2012-08-09 01:01:28.000000000 +0200 -+++ screen/screen.h 2012-08-09 01:01:28.000000000 +0200 -@@ -240,6 +240,57 @@ struct msg - } m; - }; - -+struct old_msg -+{ -+ int protocol_revision; /* reduce harm done by incompatible messages */ -+ int type; -+ char m_tty[MAXPATHLEN]; /* ttyname */ -+ union -+ { -+ struct -+ { -+ int lflag; -+ int aflag; -+ int flowflag; -+ int hheight; /* size of scrollback buffer */ -+ int nargs; -+ char line[MAXPATHLEN]; -+ char dir[MAXPATHLEN]; -+ char screenterm[20]; /* is screen really "screen" ? */ -+ } -+ create; -+ struct -+ { -+ char auser[20 + 1]; /* username */ -+ int apid; /* pid of frontend */ -+ int adaptflag; /* adapt window size? */ -+ int lines, columns; /* display size */ -+ char preselect[20]; -+ int esc; /* his new escape character unless -1 */ -+ int meta_esc; /* his new meta esc character unless -1 */ -+ char envterm[20 + 1]; /* terminal type */ -+ int encoding; /* encoding of display */ -+ } -+ attach; -+ struct -+ { -+ char duser[20 + 1]; /* username */ -+ int dpid; /* pid of frontend */ -+ } -+ detach; -+ struct -+ { -+ char auser[20 + 1]; /* username */ -+ int nargs; -+ char cmd[MAXPATHLEN]; /* command */ -+ int apid; /* pid of frontend */ -+ char preselect[20]; -+ } -+ command; -+ char message[MAXPATHLEN * 2]; -+ } m; -+}; -+ - /* - * And the signals the attacher receives from the backend - */ -Index: screen/socket.c -=================================================================== ---- screen.orig/socket.c 2012-08-09 01:01:28.000000000 +0200 -+++ screen/socket.c 2012-08-09 01:01:29.000000000 +0200 -@@ -1067,7 +1067,9 @@ ReceiveMsg() - } - if (left > 0) - { -- if (left != sizeof(m)) -+ if (left == sizeof(struct msg) - sizeof(struct old_msg)) -+ ;/* old format message, ignore */ -+ else if (left != sizeof(m)) - Msg(0, "Message %d of %d bytes too small", left, (int)sizeof(m)); - else - debug("No data on socket.\n"); -Index: screen/attacher.c -=================================================================== ---- screen.orig/attacher.c 2012-08-09 01:01:28.000000000 +0200 -+++ screen/attacher.c 2012-08-09 01:32:08.000000000 +0200 -@@ -133,6 +133,48 @@ struct msg *m; - return 0; - } - -+int -+WriteOldMessage(struct msg *m) -+{ -+ sleep(1); /* give the server some time to reopen the pipe */ -+ if (m->type == MSG_ATTACH && (m->m.attach.detachfirst == MSG_ATTACH || -+ m->m.attach.detachfirst == MSG_DETACH || -+ m->m.attach.detachfirst == MSG_POW_DETACH)) -+ { -+ struct old_msg old_m; -+ int s; -+ int r, l = sizeof(old_m); -+ -+ s = MakeClientSocket(0); -+ if (s < 0) -+ return 0; -+ old_m.protocol_revision = (('m'<<24) | ('s'<<16) | ('g'<<8) | 0); -+ old_m.type = m->type; -+ memcpy(old_m.m_tty, m->m_tty, sizeof(old_m.m_tty)); -+ memcpy(old_m.m.attach.auser, m->m.attach.auser, sizeof(old_m.m.attach.auser)); -+ old_m.m.attach.apid = m->m.attach.apid; -+ old_m.m.attach.adaptflag = m->m.attach.adaptflag; -+ old_m.m.attach.lines = m->m.attach.lines; -+ old_m.m.attach.columns = m->m.attach.columns; -+ memcpy(old_m.m.attach.preselect, m->m.attach.preselect, sizeof(old_m.m.attach.preselect)); -+ old_m.m.attach.esc = m->m.attach.esc; -+ old_m.m.attach.meta_esc = m->m.attach.meta_esc; -+ memcpy(old_m.m.attach.envterm, m->m.attach.envterm, sizeof(old_m.m.attach.envterm)); -+ old_m.m.attach.encoding = m->m.attach.encoding; -+ while(l > 0) -+ { -+ r = write(s, (char *)&old_m + (sizeof(struct old_msg) - l), l); -+ if (r == -1 && errno == EINTR) -+ continue; -+ if (r == -1 || r == 0) -+ return -1; -+ l -= r; -+ } -+ close(s); -+ } -+ return 0; -+} -+ - - int - Attach(how) -@@ -397,6 +439,7 @@ int how; - if (WriteMessage(lasts, &m)) - Panic(errno, "WriteMessage"); - close(lasts); -+ WriteOldMessage(&m); - debug1("Attach(%d): sent\n", m.type); - #ifdef MULTIUSER - if (multi && (how == MSG_ATTACH || how == MSG_CONT)) diff --git a/screen-debian_fixed.patch b/screen-debian_fixed.patch index 4f31d09..e71b7e5 100644 --- a/screen-debian_fixed.patch +++ b/screen-debian_fixed.patch @@ -1,6 +1,6 @@ ---- screen-4.2.1/doc/screen.1.orig 2014-07-20 09:46:39.879173376 +0200 -+++ screen-4.2.1/doc/screen.1 2014-07-20 09:51:20.829161584 +0200 -@@ -1143,7 +1143,7 @@ +--- screen-4.6.1/doc/screen.1.orig 2017-07-12 19:34:02.890716565 +0200 ++++ screen-4.6.1/doc/screen.1 2017-07-12 19:34:56.057382623 +0200 +@@ -1226,7 +1226,7 @@ .PP Change the filename used for reading and writing with the paste buffer. If the optional argument to the \*Qbufferfile\*U command is omitted, @@ -9,25 +9,25 @@ The following example will paste the system's password file into the .I screen -@@ -1447,7 +1447,7 @@ - .br - .ti -2n +@@ -1540,7 +1540,7 @@ + \fBA\fP toggles in append mode and sets a (second) mark. + .PP \fB>\fP sets the (second) mark and writes the contents of the paste buffer to -the screen-exchange file (/tmp/screen\-exchange per default) once copy-mode is +the screen-exchange file ($HOME/.screen\-exchange per default) once copy-mode is finished. - .br + .PP This example demonstrates how to dump the whole scrollback buffer -@@ -3474,7 +3474,7 @@ +@@ -3651,7 +3651,7 @@ users on the same host. If an encoding is specified the paste buffer is recoded on the fly to match the encoding. The filename can be set with the \fIbufferfile\fP -command and defaults to \*Q/tmp/screen\-exchange\*U. +command and defaults to \*Q$HOME/.screen\-exchange\*U. - .sp - .ne 3 + .RE + .TP .BR "writelock " [ on | "off\fR|\fBauto\fR]" -@@ -4870,7 +4870,7 @@ +@@ -5030,7 +5030,7 @@ Written by the "termcap" output function .IP /tmp/screens/screen\-exchange or diff --git a/screen-info.patch b/screen-info.patch index 781251f..db4095d 100644 --- a/screen-info.patch +++ b/screen-info.patch @@ -1,5 +1,5 @@ ---- screen-4.5.1/doc/screen.texinfo.orig 2017-02-25 16:35:35.128808129 +0100 -+++ screen-4.5.1/doc/screen.texinfo 2017-03-11 08:59:03.613765520 +0100 +--- screen-4.6.1/doc/screen.texinfo.orig 2017-07-10 21:26:25.000000000 +0200 ++++ screen-4.6.1/doc/screen.texinfo 2017-07-12 19:33:40.440716821 +0200 @@ -3,14 +3,14 @@ @c vi:set wm=5 @setfilename screen.info @@ -9,7 +9,7 @@ @finalout @setchapternewpage odd @c %**end of header - @set version 4.5.1 + @set version 4.6.1 @direntry -* Screen: (screen). Full-screen window manager. @@ -126,10 +126,10 @@ Login records @item @code{$LOCKPRG} -@@ -5792,8 +5792,8 @@ +@@ -5796,8 +5792,8 @@ ============ - @example + @verbatim - Thomas Renninger , - Axel Beckert , + Thomas Renninger , diff --git a/screen.spec b/screen.spec index a23df90..72d5147 100644 --- a/screen.spec +++ b/screen.spec @@ -1,9 +1,3 @@ -# TODO: check interoperability with 4.0.x and 4.1.x (or don't care about it): -# 4.2.1 string buffer sizes are enlargered upstream, but to different values than Debian's 4.1.x -# -# Conditional build: -%bcond_without fifo # force using fifos even if sockets detected - # TODO # - from changelog: 'maxwin' can now be used to increase the number of maximum windows. Summary: Screen - Manages multiple sessions on one tty @@ -16,12 +10,12 @@ Summary(ru.UTF-8): Менеджер экрана, поддерживающий Summary(tr.UTF-8): Bir uçbirimde birden fazla oturumu düzenler Summary(uk.UTF-8): Менеджер екрану, що підтримує кілька логінів з одного терміналу Name: screen -Version: 4.5.1 +Version: 4.6.1 Release: 1 License: GPL v3+ Group: Applications/Terminal Source0: http://ftp.gnu.org/gnu/screen/%{name}-%{version}.tar.gz -# Source0-md5: a8c5da2f42f8a18fa4dada2419d1549b +# Source0-md5: 132c893aabfaf2020074790215c8cacd Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2 # Source1-md5: 236166e774cee788cf594b05dd1dd70d Source2: %{name}.pamd @@ -39,9 +33,8 @@ Patch15: %{name}-statusline-encoding.patch Patch17: %{name}-E3.patch Patch18: %{name}-4.1.0-suppress_remap.patch Patch22: 52fix_%{name}_utf8_nfd.patch -Patch24: 60-644788-%{name}-4.1.0-4.0.3-interoperability.patch URL: http://www.gnu.org/software/screen/ -BuildRequires: autoconf +BuildRequires: autoconf >= 2.60 BuildRequires: automake BuildRequires: ncurses-devel >= 5.0 BuildRequires: pam-devel @@ -121,7 +114,6 @@ Screen корисний користувачам, які заходять на %patch17 -p2 %patch18 -p1 %patch22 -p1 -%patch24 -p1 %build %{__aclocal} @@ -129,7 +121,6 @@ Screen корисний користувачам, які заходять на %{__autoconf} # --enable-locale vs --enable-use-locale - https://savannah.gnu.org/bugs/index.php?37528 CFLAGS="%{rpmcflags} -DMAXWIN=256" -%{?with_fifo:nore=1} \ %configure \ --enable-pam \ --enable-colors256 \ @@ -141,13 +132,6 @@ CFLAGS="%{rpmcflags} -DMAXWIN=256" --with-pty-group=5 \ --disable-socket-dir -%if %{with fifo} -if ! grep -q "define.*NAMEDPIPE.*1" config.h; then - echo "bcond with fifo but fifos not enabled!" - exit 1 -fi -%endif - %{__make} -j1 cd doc -- 2.43.0