1
0
Fork 0

Adding debian version 4.9.1-3.

Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
Daniel Baumann 2025-06-22 15:19:58 +02:00
parent e88291c4cd
commit ea1ae6b476
Signed by: daniel.baumann
GPG key ID: BCC918A2ABD66424
64 changed files with 4702 additions and 0 deletions

31
debian/NEWS vendored Normal file
View file

@ -0,0 +1,31 @@
screen (4.1.0~20120320gitdb59704-10) unstable; urgency=medium
On systems running systemd, the management of /run/screen previously
handled by /etc/init.d/screen-cleanup now occurs via systemd-tmpfiles and
/usr/lib/tmpfiles.d/screen-cleanup.conf. The installed version of that
file works for systems with the default screen permissions; if you override
the permissions of /usr/bin/screen with dpkg-statoverride as documented in
/usr/share/doc/screen/README.Debian, you should create an overriding file
/etc/tmpfiles.d/screen-cleanup.conf setting the corresponding permissions.
See /usr/share/doc/screen/README.Debian for details.
If you have already overridden the permissions of /usr/bin/screen, an
/etc/tmpfiles.d/screen-cleanup.conf has been created for you.
-- Axel Beckert <abe@debian.org> Fri, 28 Feb 2014 12:23:42 +0100
screen (4.1.0~20120320gitdb59704-7) unstable; urgency=low
In case you upgrade screen from 4.0.3 to 4.1.0 while running inside
screen and you have to reconnect to that screen session (or any other
screen session which has been started before the upgrade), there may be
a few screen features not working until you exit the 4.0.3-started
session and replace it with a 4.1.0-started session.
Known issues of 4.0.3 to 4.1.0 interoperability as of now:
* Terminal window resizing (WINCH signal) does not propagate to the
screen session. Detach and reattach again instead to get the size of
the terminals inside the screen session adjusted propely.
-- Axel Beckert <abe@debian.org> Sun, 16 Sep 2012 12:48:44 +0200

182
debian/README.Debian vendored Normal file
View file

@ -0,0 +1,182 @@
Screen Information
==================
See the copyright file for information about where to get screen,
licensing, and other assorted information.
Debian Modifications
--------------------
* added Debian package maintenance files
* Use /run/screen as socket directory
* udeb only: Use setgid "utmp" instead of setuid root or
libutempter.
Debian Screen Q&A
-----------------
Q: screen always complains about the permissions of /run/screen.
What's wrong?
A: Simplified, the binary ensures that $SCREENDIR has just enough
permission bits enabled so that each user can create and access his
socket directory. This means:
/usr/bin/screen setuid root -> /run/screen 0755
/usr/bin/screen setgid utmp -> /run/screen 0775
/usr/bin/screen without setid bits -> /run/screen 0777
These cases are all handled by the init script or by the tmpfiles.d
configuration documented later in this file. However, the actual
test is a bit more complicated. And as the variable names are all
quite self-explanatory, just have a look at the C code itself:
] n = (eff_uid == 0 && (real_uid || (st.st_mode & 0775) != 0775)) ? 0755 :
] (eff_gid == (int)st.st_gid && eff_gid != real_gid) ? 0775 :
] 0777;
] if (((int)st.st_mode & 0777) != n)
] Panic(0, "Directory '%s' must have mode %03o.", SockDir, n);
If the invoking user has primary group utmp, the above assumption
will fail. The same holds if the underlying file system is mounted
'nosuid'. In these cases you have to adapt the init script or
tmpfiles.d configuration yourself.
Q: shift+page up in xterm/gnome-terminal/konsole used to let me scroll
back a bit, but now it doesn't. How can I make it work with
scrollback?
A: It doesn't scrollback consistently because screen (the program)
displays in xterm's alternate screen buffer.
To have screen use xterm's normal screen buffer (which includes
scrollback), you can add the following to your .screenrc:
termcapinfo xterm|xterms|xs|rxvt ti@:te@
Q: Screen sets my xterm titlebar. I don't like this, how do I make it
stop?
A: The titlebar setting is set in the /etc/screenrc by telling screen
that some of the GUI terminals have a hardstatus line and that it
can be set by sending the xterm escape sequences that set the
title/icon.
# Set the hardstatus prop on gui terms to set the titlebar/icon title
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
You can override this on a system wide basis by commenting out this
line in the /etc/screenrc or you can override it in your personal
screenrc by adding the following line:
hardstatus alwaysmessage
Q: Why do I get #!$@#$@!% trailing spaces when I cut and paste from
mutt running within screen?
Q: Why does the statusbar in my irc client extend to the end of the
screen in xterm but not in screen?
A: This has to do with handling of the bce terminal attribute, or lack
thereof by default in screen. You can enable bce on a per-user
basis by adding the following to your .screenrc:
defbce on
term screen-bce
NOTE: if you do this your TERM will be screen-bce. When you login
to other machines they may not have a screen-bce terminal
type, so you will see errors. To fix this you must put the
terminfo for screen-bce on that remote machine. The screen
terminfo is found in
/usr/share/doc/screen/terminfo/screeninfo.src and you can
compile it on the remote machine using tic(1).
Q: Screen doesn't notice when I resize the term - what's wrong?
A: Firstly look for the same question in FAQ.gz. If the problem
persists: There have been reports of sshd instances blocking
SIGWINCH (presumably restarted from aptitude and thus inheriting
its signal mask) which therefore also prohibit remote screen
sessions from ever seeing the signal. Have a look at the old
bugreport <https://bugs.debian.org/392302> for means to determine
whether you are affected. (You might have to restart sshd with a
crontab entry or similar magic if ssh is your only way to access
the box.)
Q: Multiuser mode is not working - how can I enable it?
A: Screen has to be setuid root to accomplish this. (Note the security
implications this has! See e.g. https://bugs.debian.org/852484 for
a bug which becomes a root exploit with this. Also bear in mind
that setuid programs remove some variables from their environment
for exactly this reason - see ld.so(1).) If you still want to
enable the feature, you may do so with the following commands:
] dpkg-statoverride --update --add root root 4755 /usr/bin/screen
] chmod 0755 /run/screen
] echo 'd /run/screen 0755 root utmp' > /etc/tmpfiles.d/screen-cleanup.conf
dpkg-statoverride will make sure that the modified permissions
remain in effect even if a new version of the screen package is
installed. /run/screen will be automatically recreated with the
proper permissions if the directory lives on volatile storage
(doesn't persist between subsequent reboots).
Q: I've configured screen with different permissions, but I want to go
back to the default setgid configuration - how can I do that?
A:
] dpkg-statoverride --remove /usr/bin/screen
] chmod 1777 /run/screen
] rm /etc/tmpfiles.d/screen-cleanup.conf
Q: When I'm using ssh from inside screen, I get the error message
"Error opening terminal: screen.xterm-256color." or similar.
A: The TERM variable inside a screen session (which is then passed to
the remote shell by ssh) depends on two things:
1. Availability of specific termcap entries locally.
2. Value of the TERM variable when the session was started.
To avoid this error message, the best way is to start a new screen
session under different terminal settings, but there are also ways
without starting a new sessions. You have several options:
Without starting a new screen session:
* Start ssh with "env TERM=screen-256color ssh".
* Install ncurses-term on the remote machine and then start a new
ssh session. (Might help, depending on the remote distribution.)
Exiting the current screen session, change one of the following and
start a new screen session:
* Add "term screen-256color" to ~/.screenrc or /etc/screenrc on
your local machine.
* Start the new screen session with "env TERM=xterm screen".
* Start the new screen session with "screen -T screen-256color".
* Uninstall ncurses-term locally and then start a new screen
session. (Might help, depending on the remote distribution.)
If "screen-256color" is not available on the remote distribution
either, especially if it's not a recent release, try just "screen"
instead of "screen-256color".
See https://bugs.debian.org/854414 for a thorough discussion on
this topic.
-- Axel Beckert <abe@debian.org>, Thu, 20 Jul 2017 23:54:05 +0200

12
debian/README.source vendored Normal file
View file

@ -0,0 +1,12 @@
Jenkins Autobuilds of Debian's Screen Package
=============================================
The Jenkins instance of the Grml Project builds new screen packages
upon each push to the collab-maint git repository, see
http://jenkins.grml.org/view/Debian/. Thanks Mika Prokop and the Grml
Team for that service!
You can get the resulting .deb packages also via APT, see
http://jenkins.grml.org/view/Debian/job/screen-binaries/ for details.
-- Axel Beckert <abe@debian.org>, Sat, 13 Jun 2015 23:48:43 +0200

5
debian/README.terminfo vendored Normal file
View file

@ -0,0 +1,5 @@
Debian uses ncurses/terminfo, not curses/termcap, so you really shouldn't need
the screencap file in this directory.
The screeninfo.src file is installed by the `ncurses-term' package
-- it's here for reference, and to recover from stupid errors (like?).

1766
debian/changelog vendored Normal file

File diff suppressed because it is too large Load diff

12
debian/clean vendored Normal file
View file

@ -0,0 +1,12 @@
config.log
config.status
Makefile
*.o
comm.h
config.h
doc/Makefile
kmapdef.c
osdef.h
screen
term.h
tty.c

50
debian/control vendored Normal file
View file

@ -0,0 +1,50 @@
Source: screen
Section: misc
Priority: standard
Maintainer: Axel Beckert <abe@debian.org>
Uploaders: Antti Järvinen <antti.jarvinen@katiska.org>
Standards-Version: 4.6.2
Build-Depends: debhelper-compat (= 13),
dpkg-dev (>= 1.16.1~),
libncurses-dev,
libpam0g-dev,
texinfo
Homepage: https://savannah.gnu.org/projects/screen
Vcs-Git: https://salsa.debian.org/debian/screen.git
Vcs-Browser: https://salsa.debian.org/debian/screen
Rules-Requires-Root: no
Package: screen
Architecture: any
Depends: ${misc:Depends},
${shlibs:Depends},
debianutils (>= 5.3-1~)
Suggests: byobu | screenie | iselect (>= 1.4.0-1),
ncurses-term
Description: terminal multiplexer with VT100/ANSI terminal emulation
GNU Screen is a terminal multiplexer that runs several separate "screens" on
a single physical character-based terminal. Each virtual terminal emulates a
DEC VT100 plus several ANSI X3.64 and ISO 2022 functions. Screen sessions
can be detached and resumed later on a different terminal.
.
Screen also supports a whole slew of other features, including configurable
input and output translation, serial port support, configurable logging,
and multi-user support.
Package: screen-udeb
Architecture: any
Section: debian-installer
Package-Type: udeb
Depends: ${misc:Depends},
${shlibs:Depends}
Description: terminal multiplexer with VT100/ANSI terminal emulation - udeb
GNU Screen is a terminal multiplexer that runs several separate "screens" on
a single physical character-based terminal. Each virtual terminal emulates a
DEC VT100 plus several ANSI X3.64 and ISO 2022 functions. Screen sessions
can be detached and resumed later on a different terminal.
.
Screen also supports a whole slew of other features, including configurable
input and output translation, serial port support, configurable logging,
and multi-user support.
.
This is stripped-down version of screen for debian-installer.

42
debian/copyright vendored Normal file
View file

@ -0,0 +1,42 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: GNU Screen
Upstream-Contact: screen-devel@gnu.org
Source: https://savannah.gnu.org/projects/screen
https://ftp.gnu.org/gnu/screen/
Files: *
Copyright: 1987 Oliver Laumann
1991 Wayne Davidson
1993-2017 Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de>
1993-2009 Michael Schroeder <mlschroe@immd4.informatik.uni-erlangen.de>
2008-2009 Micah Cowan <micah@cowan.name>
2008-2015 Sadrul Habib Chowdhury <sadrul@users.sourceforge.net>
2015-2022 Alexander Naumov <alexander_naumov@opensuse.org>
2015-2022 Amadeusz Sławiński <amade@asmblr.net>
License: GPL-3+
Files: debian/*
Copyright: 1996 Ian Murdock <imurdock@debian.org>
1997 joost witteveen <joosteto@gmail.com>
1997-2001 Juan Cespedes <cespedes@debian.org>
2001-2003 Adam Lazur <zal@debian.org>
2007-2009 Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
2011 Brian Kroth <bpkroth@gmail.com>
2011-2023 Axel Beckert <abe@debian.org>
License: GPL-3+
Comment: It is assumed that the Debian packaging is licensed under the
same terms as the upstream project unless stated otherwise.
License: GPL-3+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
.
On Debian systems, the complete text of the GNU General Public
License, version 3 can be found in "/usr/share/common-licenses/GPL-3".

9
debian/gitlab-ci.yml vendored Normal file
View file

@ -0,0 +1,9 @@
include:
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
variables:
RELEASE: 'unstable'
reprotest:
allow_failure: true

40
debian/patches/03disable-utmp.patch vendored Normal file
View file

@ -0,0 +1,40 @@
Disable UTMP updating feature.
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1104514
--- a/acconfig.h
+++ b/acconfig.h
@@ -191,7 +191,7 @@
* If screen is installed with permissions to update /etc/utmp (such
* as if it is installed set-uid root), define UTMPOK.
*/
-#define UTMPOK
+#undef UTMPOK
/* Set LOGINDEFAULT to one (1)
* if you want entries added to /etc/utmp by default, else set it to
@@ -214,7 +214,7 @@
* Set CAREFULUTMP to one (1) if you want that users have at least one
* window per screen session logged in.
*/
-#define LOGOUTOK 1
+#undef LOGOUTOK
#undef CAREFULUTMP
--- a/utmp.c
+++ b/utmp.c
@@ -882,6 +882,7 @@
}
# endif /* BUGGYGETLOGIN */
+#ifdef UTMPOK
#if defined(linux) && defined(GETUTENT)
# undef pututline
@@ -899,4 +900,5 @@
return u->ut_type == u2->ut_type ? u : 0;
}
#endif
+#endif

View file

@ -0,0 +1,45 @@
Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?filename=0001-Prefer-libtinfo-over-libcurses.patch;att=1;msg=14;bug=819789
From: Sven Joachim <svenjoac@gmx.de>
Date: Sat, 2 Apr 2016 13:31:00 +0200
Subject: Prefer libtinfo over libcurses
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819789
Forwarded: no
Try to link with -ltinfo before -lcurses to avoid a spurious
dependency on systems where ncurses is built with "--with-termlib".
---
configure.ac | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/configure.ac
+++ b/configure.ac
@@ -669,6 +669,14 @@
tgetent((char *)0, (char *)0);
],,
olibs="$LIBS"
+LIBS="-ltinfo $olibs"
+AC_CHECKING(libtinfo)
+AC_TRY_LINK([
+ #include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-lcurses $olibs"
AC_CHECKING(libcurses)
AC_TRY_LINK([
@@ -718,14 +726,6 @@
AC_TRY_LINK([
#include <curses.h>
#include <term.h>
-],[
- tgetent((char *)0, (char *)0);
-],,
-LIBS="-ltinfo $olibs"
-AC_CHECKING(libtinfo)
-AC_TRY_LINK([
- #include <curses.h>
- #include <term.h>
],[
tgetent((char *)0, (char *)0);
],,

198
debian/patches/11replace_doc_paths.patch vendored Normal file
View file

@ -0,0 +1,198 @@
Author: Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
Description: Fix the references to configuration and pipe paths to match the locations Debian uses.
Forwarded: not-needed
--- a/doc/screen.1
+++ b/doc/screen.1
@@ -100,7 +100,7 @@
the invoking shell to the application (emacs in this case), because it is
forked from the parent screen process, not from the invoking shell.
.PP
-If \*Q/etc/utmp\*U is writable by
+If \*Q/run/utmp\*U is writable by
.IR screen ,
an appropriate record will be written to this file for each window, and
removed when the window is terminated.
@@ -229,7 +229,7 @@
The use of this option is discouraged.
.TP 5
.BR \-l " and " \-ln
-turns login mode on or off (for /etc/utmp updating).
+turns login mode on or off (for /run/utmp updating).
This can also be defined through the \*Qdeflogin\*U .screenrc command.
.TP 5
.BR \-ls " [" \fImatch ]
@@ -767,7 +767,7 @@
.SH CUSTOMIZATION
The \*Qsocket directory\*U defaults either to $HOME/.screen or simply to
-/tmp/screens or preferably to /usr/local/screens chosen at compile-time. If
+/tmp/screens or preferably to /run/screen chosen at compile-time. If
.I screen
is installed setuid-root, then the administrator
should compile
@@ -780,7 +780,7 @@
When
.I screen
is invoked, it executes initialization commands from the files
-\*Q/usr/local/etc/screenrc\*U and
+\*Q/etc/screenrc\*U and
\*Q.screenrc\*U in the user's home directory. These are the \*Qprogrammer's
defaults\*U that can be overridden in the following ways: for the
global screenrc file
@@ -2050,7 +2050,7 @@
The echo command may be used to annoy
.I screen
users with a 'message of the
-day'. Typically installed in a global /local/etc/screenrc.
+day'. Typically installed in a global /etc/screenrc.
The option \*Q\-n\*U may be used to suppress the line feed.
See also \*Qsleep\*U.
Echo is also useful for online checking of environment variables.
@@ -5212,14 +5212,14 @@
.I screen
distribution package for private and global initialization files.
.IP $SYSSCREENRC
-.IP /usr/local/etc/screenrc
+.IP /etc/screenrc
.I screen
initialization commands
.IP $SCREENRC
.IP $HOME/.screenrc
-Read in after /usr/local/etc/screenrc
+Read in after /etc/screenrc
.IP $SCREENDIR/S\-<login>
-.IP /local/screens/S\-<login>
+.IP /run/screen/S\-<login>
Socket directories (default)
.IP /usr/tmp/screens/S\-<login>
Alternate socket directories.
@@ -5238,7 +5238,7 @@
or
.IP /etc/termcap
Terminal capability databases
-.IP /etc/utmp
+.IP /run/utmp
Login records
.IP $LOCKPRG
Program that locks a terminal.
@@ -5365,9 +5365,9 @@
must be installed as set-uid with owner root on most systems in order
to be able to correctly change the owner of the tty device file for
each window.
-Special permission may also be required to write the file \*Q/etc/utmp\*U.
+Special permission may also be required to write the file \*Q/run/utmp\*U.
.IP \(bu
-Entries in \*Q/etc/utmp\*U are not removed when
+Entries in \*Q/run/utmp\*U are not removed when
.I screen
is killed with SIGKILL.
This will cause some programs (like "w" or "rwho")
--- a/doc/screen.texinfo
+++ b/doc/screen.texinfo
@@ -185,7 +185,7 @@
the invoking shell to the application (emacs in this case), because it is
forked from the parent screen process, not from the invoking shell.
-If @file{/etc/utmp} is writable by @code{screen}, an appropriate record
+If @file{/run/utmp} is writable by @code{screen}, an appropriate record
will be written to this file for each window, and removed when the
window is closed. This is useful for working with @code{talk},
@code{script}, @code{shutdown}, @code{rsend}, @code{sccs} and other
@@ -314,7 +314,7 @@
@item -l
@itemx -ln
-Turn login mode on or off (for @file{/etc/utmp} updating). This option
+Turn login mode on or off (for @file{/run/utmp} updating). This option
is equivalent to the @code{deflogin} command (@pxref{Login}).
@item -ls [@var{match}]
@@ -497,7 +497,7 @@
@cindex screenrc
When @code{screen} is invoked, it executes initialization commands from
the files @file{.screenrc} in the user's home directory and
-@file{/usr/local/etc/screenrc}. These defaults can be overridden in the
+@file{/etc/screenrc}. These defaults can be overridden in the
following ways:
For the global screenrc file @code{screen} searches for the environment
variable @code{$SYSSCREENRC} (this override feature may be disabled at
@@ -1089,7 +1089,7 @@
@item logfile @var{filename}
Place where to collect logfiles. @xref{Log}.
@item login [@var{state}]
-Log the window in @file{/etc/utmp}. @xref{Login}.
+Log the window in @file{/run/utmp}. @xref{Login}.
@item logtstamp [@var{state}]
Configure logfile time-stamps. @xref{Log}.
@item mapdefault
@@ -2411,7 +2411,7 @@
* Naming Windows:: Control the name of the window
* Console:: See the host's console messages
* Kill:: Destroy an unwanted window
-* Login:: Control @file{/etc/utmp} logging
+* Login:: Control @file{/run/utmp} logging
* Mode:: Control the file mode of the pty
* Monitor:: Watch for activity or inactivity in a window
* Windows:: List the active windows
@@ -2620,7 +2620,7 @@
@kindex L
@deffn Command login [state]
(@kbd{C-a L})@*
-Adds or removes the entry in @file{/etc/utmp} for the current window.
+Adds or removes the entry in @file{/run/utmp} for the current window.
This controls whether or not the window is @dfn{logged in}. In addition
to this toggle, it is convenient to have ``log in'' and ``log out''
keys. For instance, @code{bind I login on} and @code{bind O
@@ -5811,17 +5811,17 @@
global initialization files.
@item @code{$SYSSCREENRC}
-@itemx /local/etc/screenrc
+@itemx /etc/screenrc
@code{screen} initialization commands
@item @code{$SCREENRC}
@itemx @code{$HOME}/.iscreenrc
@itemx @code{$HOME}/.screenrc
-Read in after /local/etc/screenrc
+Read in after /etc/screenrc
@item @code{$SCREENDIR}/S-@var{login}
-@item /local/screens/S-@var{login}
+@item /run/screen/S-@var{login}
Socket directories (default)
@item /usr/tmp/screens/S-@var{login}
@@ -5844,7 +5844,7 @@
@itemx /etc/termcap
Terminal capability databases
-@item /etc/utmp
+@item /run/utmp
Login records
@item @code{$LOCKPRG}
@@ -5956,10 +5956,10 @@
in order to be able to
correctly change the owner of the tty device file for each window.
Special permission may also be required to write the file
-@file{/etc/utmp}.
+@file{/run/utmp}.
@item
-Entries in @file{/etc/utmp} are not removed when @code{screen} is killed
+Entries in @file{/run/utmp} are not removed when @code{screen} is killed
with SIGKILL. This will cause some programs (like "w" or "rwho") to
advertise that a user is logged on who really isn't.
@@ -6039,7 +6039,7 @@
@cindex socket directory
The socket directory defaults either to @file{$HOME/.screen} or simply to
-@file{/tmp/screens} or preferably to @file{/usr/local/screens} chosen at
+@file{/tmp/screens} or preferably to @file{/run/screen} chosen at
compile-time. If @code{screen} is installed
setuid root, then the administrator should compile screen with an
adequate (not NFS mounted) @code{SOCKDIR}. If @code{screen} is not

17
debian/patches/13split_info_files.patch vendored Normal file
View file

@ -0,0 +1,17 @@
Author: Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
Description: Split the info files at 50k
This matches the distribution style of the orig tarball.
Last-Revised: 2013-05-16 by Axel Beckert <abe@debian.org>
Bug-Debian: https://bugs.debian.org/707530
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -28,7 +28,7 @@
info screen.info: screen.texinfo
@rm -f screen.info*
- $(MAKEINFO) $(srcdir)/screen.texinfo -o screen.info
+ $(MAKEINFO) --split-size=50000 $(srcdir)/screen.texinfo -o screen.info
install: installdirs
$(INSTALL_DATA) $(srcdir)/screen.1 $(DESTDIR)$(mandir)/man1/screen.1

357
debian/patches/26source_encoding.patch vendored Normal file
View file

@ -0,0 +1,357 @@
Author: Ben Finney <ben@benfinney.id.au>
Description: Replace the composed characters with their respective description.
Bugs-Debian: https://bugs.debian.org/437024
Index: screen/process.c
===================================================================
--- screen.orig/process.c 2015-06-13 23:33:02.469345223 +0200
+++ screen/process.c 2015-06-13 23:33:02.469345223 +0200
@@ -252,177 +252,177 @@
/* digraph table taken from old vim and rfc1345 */
static struct digraph digraphs[MAX_DIGRAPH + 1] = {
- {{' ', ' '}, 160}, /*   */
- {{'N', 'S'}, 160}, /*   */
- {{'~', '!'}, 161}, /* ¡ */
- {{'!', '!'}, 161}, /* ¡ */
- {{'!', 'I'}, 161}, /* ¡ */
- {{'c', '|'}, 162}, /* ¢ */
- {{'c', 't'}, 162}, /* ¢ */
- {{'$', '$'}, 163}, /* £ */
- {{'P', 'd'}, 163}, /* £ */
- {{'o', 'x'}, 164}, /* ¤ */
- {{'C', 'u'}, 164}, /* ¤ */
- {{'C', 'u'}, 164}, /* ¤ */
- {{'E', 'u'}, 164}, /* ¤ */
- {{'Y', '-'}, 165}, /* ¥ */
- {{'Y', 'e'}, 165}, /* ¥ */
- {{'|', '|'}, 166}, /* ¦ */
- {{'B', 'B'}, 166}, /* ¦ */
- {{'p', 'a'}, 167}, /* § */
- {{'S', 'E'}, 167}, /* § */
- {{'"', '"'}, 168}, /* ¨ */
- {{'\'', ':'}, 168}, /* ¨ */
- {{'c', 'O'}, 169}, /* © */
- {{'C', 'o'}, 169}, /* © */
- {{'a', '-'}, 170}, /* ª */
- {{'<', '<'}, 171}, /* « */
- {{'-', ','}, 172}, /* ¬ */
- {{'N', 'O'}, 172}, /* ¬ */
- {{'-', '-'}, 173}, /* ­ */
- {{'r', 'O'}, 174}, /* ® */
- {{'R', 'g'}, 174}, /* ® */
- {{'-', '='}, 175}, /* ¯ */
- {{'\'', 'm'}, 175}, /* ¯ */
- {{'~', 'o'}, 176}, /* ° */
- {{'D', 'G'}, 176}, /* ° */
- {{'+', '-'}, 177}, /* ± */
- {{'2', '2'}, 178}, /* ² */
- {{'2', 'S'}, 178}, /* ² */
- {{'3', '3'}, 179}, /* ³ */
- {{'3', 'S'}, 179}, /* ³ */
- {{'\'', '\''}, 180}, /* ´ */
- {{'j', 'u'}, 181}, /* µ */
- {{'M', 'y'}, 181}, /* µ */
- {{'p', 'p'}, 182}, /* ¶ */
- {{'P', 'I'}, 182}, /* ¶ */
- {{'~', '.'}, 183}, /* · */
- {{'.', 'M'}, 183}, /* · */
- {{',', ','}, 184}, /* ¸ */
- {{'\'', ','}, 184}, /* ¸ */
- {{'1', '1'}, 185}, /* ¹ */
- {{'1', 'S'}, 185}, /* ¹ */
- {{'o', '-'}, 186}, /* º */
- {{'>', '>'}, 187}, /* » */
- {{'1', '4'}, 188}, /* ¼ */
- {{'1', '2'}, 189}, /* ½ */
- {{'3', '4'}, 190}, /* ¾ */
- {{'~', '?'}, 191}, /* ¿ */
- {{'?', '?'}, 191}, /* ¿ */
- {{'?', 'I'}, 191}, /* ¿ */
- {{'A', '`'}, 192}, /* À */
- {{'A', '!'}, 192}, /* À */
- {{'A', '\''}, 193}, /* Á */
- {{'A', '^'}, 194}, /* Â */
- {{'A', '>'}, 194}, /* Â */
- {{'A', '~'}, 195}, /* Ã */
- {{'A', '?'}, 195}, /* Ã */
- {{'A', '"'}, 196}, /* Ä */
- {{'A', ':'}, 196}, /* Ä */
- {{'A', '@'}, 197}, /* Å */
- {{'A', 'A'}, 197}, /* Å */
- {{'A', 'E'}, 198}, /* Æ */
- {{'C', ','}, 199}, /* Ç */
- {{'E', '`'}, 200}, /* È */
- {{'E', '!'}, 200}, /* È */
- {{'E', '\''}, 201}, /* É */
- {{'E', '^'}, 202}, /* Ê */
- {{'E', '>'}, 202}, /* Ê */
- {{'E', '"'}, 203}, /* Ë */
- {{'E', ':'}, 203}, /* Ë */
- {{'I', '`'}, 204}, /* Ì */
- {{'I', '!'}, 204}, /* Ì */
- {{'I', '\''}, 205}, /* Í */
- {{'I', '^'}, 206}, /* Î */
- {{'I', '>'}, 206}, /* Î */
- {{'I', '"'}, 207}, /* Ï */
- {{'I', ':'}, 207}, /* Ï */
- {{'D', '-'}, 208}, /* Ð */
- {{'N', '~'}, 209}, /* Ñ */
- {{'N', '?'}, 209}, /* Ñ */
- {{'O', '`'}, 210}, /* Ò */
- {{'O', '!'}, 210}, /* Ò */
- {{'O', '\''}, 211}, /* Ó */
- {{'O', '^'}, 212}, /* Ô */
- {{'O', '>'}, 212}, /* Ô */
- {{'O', '~'}, 213}, /* Õ */
- {{'O', '?'}, 213}, /* Õ */
- {{'O', '"'}, 214}, /* Ö */
- {{'O', ':'}, 214}, /* Ö */
- {{'/', '\\'}, 215}, /* × */
- {{'*', 'x'}, 215}, /* × */
- {{'O', '/'}, 216}, /* Ø */
- {{'U', '`'}, 217}, /* Ù */
- {{'U', '!'}, 217}, /* Ù */
- {{'U', '\''}, 218}, /* Ú */
- {{'U', '^'}, 219}, /* Û */
- {{'U', '>'}, 219}, /* Û */
- {{'U', '"'}, 220}, /* Ü */
- {{'U', ':'}, 220}, /* Ü */
- {{'Y', '\''}, 221}, /* Ý */
- {{'I', 'p'}, 222}, /* Þ */
- {{'T', 'H'}, 222}, /* Þ */
- {{'s', 's'}, 223}, /* ß */
- {{'s', '"'}, 223}, /* ß */
- {{'a', '`'}, 224}, /* à */
- {{'a', '!'}, 224}, /* à */
- {{'a', '\''}, 225}, /* á */
- {{'a', '^'}, 226}, /* â */
- {{'a', '>'}, 226}, /* â */
- {{'a', '~'}, 227}, /* ã */
- {{'a', '?'}, 227}, /* ã */
- {{'a', '"'}, 228}, /* ä */
- {{'a', ':'}, 228}, /* ä */
- {{'a', 'a'}, 229}, /* å */
- {{'a', 'e'}, 230}, /* æ */
- {{'c', ','}, 231}, /* ç */
- {{'e', '`'}, 232}, /* è */
- {{'e', '!'}, 232}, /* è */
- {{'e', '\''}, 233}, /* é */
- {{'e', '^'}, 234}, /* ê */
- {{'e', '>'}, 234}, /* ê */
- {{'e', '"'}, 235}, /* ë */
- {{'e', ':'}, 235}, /* ë */
- {{'i', '`'}, 236}, /* ì */
- {{'i', '!'}, 236}, /* ì */
- {{'i', '\''}, 237}, /* í */
- {{'i', '^'}, 238}, /* î */
- {{'i', '>'}, 238}, /* î */
- {{'i', '"'}, 239}, /* ï */
- {{'i', ':'}, 239}, /* ï */
- {{'d', '-'}, 240}, /* ð */
- {{'n', '~'}, 241}, /* ñ */
- {{'n', '?'}, 241}, /* ñ */
- {{'o', '`'}, 242}, /* ò */
- {{'o', '!'}, 242}, /* ò */
- {{'o', '\''}, 243}, /* ó */
- {{'o', '^'}, 244}, /* ô */
- {{'o', '>'}, 244}, /* ô */
- {{'o', '~'}, 245}, /* õ */
- {{'o', '?'}, 245}, /* õ */
- {{'o', '"'}, 246}, /* ö */
- {{'o', ':'}, 246}, /* ö */
- {{':', '-'}, 247}, /* ÷ */
- {{'o', '/'}, 248}, /* ø */
- {{'u', '`'}, 249}, /* ù */
- {{'u', '!'}, 249}, /* ù */
- {{'u', '\''}, 250}, /* ú */
- {{'u', '^'}, 251}, /* û */
- {{'u', '>'}, 251}, /* û */
- {{'u', '"'}, 252}, /* ü */
- {{'u', ':'}, 252}, /* ü */
- {{'y', '\''}, 253}, /* ý */
- {{'i', 'p'}, 254}, /* þ */
- {{'t', 'h'}, 254}, /* þ */
- {{'y', '"'}, 255}, /* ÿ */
- {{'y', ':'}, 255}, /* ÿ */
- {{'"', '['}, 196}, /* Ä */
- {{'"', '\\'}, 214}, /* Ö */
- {{'"', ']'}, 220}, /* Ü */
- {{'"', '{'}, 228}, /* ä */
- {{'"', '|'}, 246}, /* ö */
- {{'"', '}'}, 252}, /* ü */
- {{'"', '~'}, 223} /* ß */
+ {{' ', ' '}, 0x00a0}, /* NO-BREAK SPACE */
+ {{'N', 'S'}, 0x00a0}, /* NO-BREAK SPACE */
+ {{'~', '!'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */
+ {{'!', '!'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */
+ {{'!', 'I'}, 0x00a1}, /* INVERTED EXCLAMATION MARK */
+ {{'c', '|'}, 0x00a2}, /* CENT SIGN */
+ {{'c', 't'}, 0x00a2}, /* CENT SIGN */
+ {{'$', '$'}, 0x00a3}, /* POUND SIGN */
+ {{'P', 'd'}, 0x00a3}, /* POUND SIGN */
+ {{'o', 'x'}, 0x00a4}, /* CURRENCY SIGN */
+ {{'C', 'u'}, 0x00a4}, /* CURRENCY SIGN */
+ {{'C', 'u'}, 0x00a4}, /* CURRENCY SIGN */
+ {{'E', 'u'}, 0x00a4}, /* CURRENCY SIGN */
+ {{'Y', '-'}, 0x00a5}, /* YEN SIGN */
+ {{'Y', 'e'}, 0x00a5}, /* YEN SIGN */
+ {{'|', '|'}, 0x00a6}, /* BROKEN BAR */
+ {{'B', 'B'}, 0x00a6}, /* BROKEN BAR */
+ {{'p', 'a'}, 0x00a7}, /* SECTION SIGN */
+ {{'S', 'E'}, 0x00a7}, /* SECTION SIGN */
+ {{'"', '"'}, 0x00a8}, /* DIAERESIS */
+ {{'\'', ':'}, 0x00a8}, /* DIAERESIS */
+ {{'c', 'O'}, 0x00a9}, /* COPYRIGHT SIGN */
+ {{'C', 'o'}, 0x00a9}, /* COPYRIGHT SIGN */
+ {{'-', 'a'}, 0x00aa}, /* FEMININE ORDINAL INDICATOR */
+ {{'<', '<'}, 0x00ab}, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
+ {{'-', ','}, 0x00ac}, /* NOT SIGN */
+ {{'N', 'O'}, 0x00ac}, /* NOT SIGN */
+ {{'-', '-'}, 0x00ad}, /* SOFT HYPHEN */
+ {{'r', 'O'}, 0x00ae}, /* REGISTERED SIGN */
+ {{'R', 'g'}, 0x00ae}, /* REGISTERED SIGN */
+ {{'-', '='}, 0x00af}, /* MACRON */
+ {{'\'', 'm'}, 0x00af}, /* MACRON */
+ {{'~', 'o'}, 0x00b0}, /* DEGREE SIGN */
+ {{'D', 'G'}, 0x00b0}, /* DEGREE SIGN */
+ {{'+', '-'}, 0x00b1}, /* PLUS-MINUS SIGN */
+ {{'2', '2'}, 0x00b2}, /* SUPERSCRIPT TWO */
+ {{'2', 'S'}, 0x00b2}, /* SUPERSCRIPT TWO */
+ {{'3', '3'}, 0x00b3}, /* SUPERSCRIPT THREE */
+ {{'3', 'S'}, 0x00b3}, /* SUPERSCRIPT THREE */
+ {{'\'', '\''}, 0x00b4}, /* ACUTE ACCENT */
+ {{'j', 'u'}, 0x00b5}, /* MICRO SIGN */
+ {{'M', 'y'}, 0x00b5}, /* MICRO SIGN */
+ {{'p', 'p'}, 0x00b6}, /* PILCROW SIGN */
+ {{'P', 'I'}, 0x00b6}, /* PILCROW SIGN */
+ {{'~', '.'}, 0x00b7}, /* MIDDLE DOT */
+ {{'.', 'M'}, 0x00b7}, /* MIDDLE DOT */
+ {{',', ','}, 0x00b8}, /* CEDILLA */
+ {{'\'', ','}, 0x00b8}, /* CEDILLA */
+ {{'1', '1'}, 0x00b9}, /* SUPERSCRIPT ONE */
+ {{'1', 'S'}, 0x00b9}, /* SUPERSCRIPT ONE */
+ {{'-', 'o'}, 0x00ba}, /* MASCULINE ORDINAL INDICATOR */
+ {{'>', '>'}, 0x00bb}, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
+ {{'1', '4'}, 0x00bc}, /* VULGAR FRACTION ONE QUARTER */
+ {{'1', '2'}, 0x00bd}, /* VULGAR FRACTION ONE HALF */
+ {{'3', '4'}, 0x00be}, /* VULGAR FRACTION THREE QUARTERS */
+ {{'~', '?'}, 0x00bf}, /* INVERTED QUESTION MARK */
+ {{'?', '?'}, 0x00bf}, /* INVERTED QUESTION MARK */
+ {{'?', 'I'}, 0x00bf}, /* INVERTED QUESTION MARK */
+ {{'A', '`'}, 0x00c0}, /* LATIN CAPITAL LETTER A WITH GRAVE */
+ {{'A', '!'}, 0x00c0}, /* LATIN CAPITAL LETTER A WITH GRAVE */
+ {{'A', '\''}, 0x00c1}, /* LATIN CAPITAL LETTER A WITH ACUTE */
+ {{'A', '^'}, 0x00c2}, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+ {{'A', '>'}, 0x00c2}, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+ {{'A', '~'}, 0x00c3}, /* LATIN CAPITAL LETTER A WITH TILDE */
+ {{'A', '?'}, 0x00c3}, /* LATIN CAPITAL LETTER A WITH TILDE */
+ {{'A', '"'}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ {{'A', ':'}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ {{'A', '@'}, 0x00c5}, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
+ {{'A', 'A'}, 0x00c5}, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
+ {{'A', 'E'}, 0x00c6}, /* LATIN CAPITAL LETTER AE */
+ {{'C', ','}, 0x00c7}, /* LATIN CAPITAL LETTER C WITH CEDILLA */
+ {{'E', '`'}, 0x00c8}, /* LATIN CAPITAL LETTER E WITH GRAVE */
+ {{'E', '!'}, 0x00c8}, /* LATIN CAPITAL LETTER E WITH GRAVE */
+ {{'E', '\''}, 0x00c9}, /* LATIN CAPITAL LETTER E WITH ACUTE */
+ {{'E', '^'}, 0x00ca}, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
+ {{'E', '>'}, 0x00ca}, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
+ {{'E', '"'}, 0x00cb}, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
+ {{'E', ':'}, 0x00cb}, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
+ {{'I', '`'}, 0x00cc}, /* LATIN CAPITAL LETTER I WITH GRAVE */
+ {{'I', '!'}, 0x00cc}, /* LATIN CAPITAL LETTER I WITH GRAVE */
+ {{'I', '\''}, 0x00cd}, /* LATIN CAPITAL LETTER I WITH ACUTE */
+ {{'I', '^'}, 0x00ce}, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+ {{'I', '>'}, 0x00ce}, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+ {{'I', '"'}, 0x00cf}, /* LATIN CAPITAL LETTER I WITH DIAERESIS */
+ {{'I', ':'}, 0x00cf}, /* LATIN CAPITAL LETTER I WITH DIAERESIS */
+ {{'D', '-'}, 0x00d0}, /* LATIN CAPITAL LETTER ETH */
+ {{'N', '~'}, 0x00d1}, /* LATIN CAPITAL LETTER N WITH TILDE */
+ {{'N', '?'}, 0x00d1}, /* LATIN CAPITAL LETTER N WITH TILDE */
+ {{'O', '`'}, 0x00d2}, /* LATIN CAPITAL LETTER O WITH GRAVE */
+ {{'O', '!'}, 0x00d2}, /* LATIN CAPITAL LETTER O WITH GRAVE */
+ {{'O', '\''}, 0x00d3}, /* LATIN CAPITAL LETTER O WITH ACUTE */
+ {{'O', '^'}, 0x00d4}, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+ {{'O', '>'}, 0x00d4}, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+ {{'O', '~'}, 0x00d5}, /* LATIN CAPITAL LETTER O WITH TILDE */
+ {{'O', '?'}, 0x00d5}, /* LATIN CAPITAL LETTER O WITH TILDE */
+ {{'O', '"'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
+ {{'O', ':'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
+ {{'/', '\\'}, 0x00d7}, /* MULTIPLICATION SIGN */
+ {{'*', 'x'}, 0x00d7}, /* MULTIPLICATION SIGN */
+ {{'O', '/'}, 0x00d8}, /* LATIN CAPITAL LETTER O WITH STROKE */
+ {{'U', '`'}, 0x00d9}, /* LATIN CAPITAL LETTER U WITH GRAVE */
+ {{'U', '!'}, 0x00d9}, /* LATIN CAPITAL LETTER U WITH GRAVE */
+ {{'U', '\''}, 0x00da}, /* LATIN CAPITAL LETTER U WITH ACUTE */
+ {{'U', '^'}, 0x00db}, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+ {{'U', '>'}, 0x00db}, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+ {{'U', '"'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
+ {{'U', ':'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
+ {{'Y', '\''}, 0x00dd}, /* LATIN CAPITAL LETTER Y WITH ACUTE */
+ {{'I', 'p'}, 0x00de}, /* LATIN CAPITAL LETTER THORN */
+ {{'T', 'H'}, 0x00de}, /* LATIN CAPITAL LETTER THORN */
+ {{'s', 's'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */
+ {{'s', '"'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */
+ {{'a', '`'}, 0x00e0}, /* LATIN SMALL LETTER A WITH GRAVE */
+ {{'a', '!'}, 0x00e0}, /* LATIN SMALL LETTER A WITH GRAVE */
+ {{'a', '\''}, 0x00e1}, /* LATIN SMALL LETTER A WITH ACUTE */
+ {{'a', '^'}, 0x00e2}, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
+ {{'a', '>'}, 0x00e2}, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
+ {{'a', '~'}, 0x00e3}, /* LATIN SMALL LETTER A WITH TILDE */
+ {{'a', '?'}, 0x00e3}, /* LATIN SMALL LETTER A WITH TILDE */
+ {{'a', '"'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */
+ {{'a', ':'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */
+ {{'a', 'a'}, 0x00e5}, /* LATIN SMALL LETTER A WITH RING ABOVE */
+ {{'a', 'e'}, 0x00e6}, /* LATIN SMALL LETTER AE */
+ {{'c', ','}, 0x00e7}, /* LATIN SMALL LETTER C WITH CEDILLA */
+ {{'e', '`'}, 0x00e8}, /* LATIN SMALL LETTER E WITH GRAVE */
+ {{'e', '!'}, 0x00e8}, /* LATIN SMALL LETTER E WITH GRAVE */
+ {{'e', '\''}, 0x00e9}, /* LATIN SMALL LETTER E WITH ACUTE */
+ {{'e', '^'}, 0x00ea}, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
+ {{'e', '>'}, 0x00ea}, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
+ {{'e', '"'}, 0x00eb}, /* LATIN SMALL LETTER E WITH DIAERESIS */
+ {{'e', ':'}, 0x00eb}, /* LATIN SMALL LETTER E WITH DIAERESIS */
+ {{'i', '`'}, 0x00ec}, /* LATIN SMALL LETTER I WITH GRAVE */
+ {{'i', '!'}, 0x00ec}, /* LATIN SMALL LETTER I WITH GRAVE */
+ {{'i', '\''}, 0x00ed}, /* LATIN SMALL LETTER I WITH ACUTE */
+ {{'i', '^'}, 0x00ee}, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
+ {{'i', '>'}, 0x00ee}, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
+ {{'i', '"'}, 0x00ef}, /* LATIN SMALL LETTER I WITH DIAERESIS */
+ {{'i', ':'}, 0x00ef}, /* LATIN SMALL LETTER I WITH DIAERESIS */
+ {{'d', '-'}, 0x00f0}, /* LATIN SMALL LETTER ETH */
+ {{'n', '~'}, 0x00f1}, /* LATIN SMALL LETTER N WITH TILDE */
+ {{'n', '?'}, 0x00f1}, /* LATIN SMALL LETTER N WITH TILDE */
+ {{'o', '`'}, 0x00f2}, /* LATIN SMALL LETTER O WITH GRAVE */
+ {{'o', '!'}, 0x00f2}, /* LATIN SMALL LETTER O WITH GRAVE */
+ {{'o', '\''}, 0x00f3}, /* LATIN SMALL LETTER O WITH ACUTE */
+ {{'o', '^'}, 0x00f4}, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
+ {{'o', '>'}, 0x00f4}, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
+ {{'o', '~'}, 0x00f5}, /* LATIN SMALL LETTER O WITH TILDE */
+ {{'o', '?'}, 0x00f5}, /* LATIN SMALL LETTER O WITH TILDE */
+ {{'o', '"'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */
+ {{'o', ':'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */
+ {{'-', ':'}, 0x00f7}, /* DIVISION SIGN */
+ {{'o', '/'}, 0x00f8}, /* LATIN SMALL LETTER O WITH STROKE */
+ {{'u', '`'}, 0x00f9}, /* LATIN SMALL LETTER U WITH GRAVE */
+ {{'u', '!'}, 0x00f9}, /* LATIN SMALL LETTER U WITH GRAVE */
+ {{'u', '\''}, 0x00fa}, /* LATIN SMALL LETTER U WITH ACUTE */
+ {{'u', '^'}, 0x00fb}, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
+ {{'u', '>'}, 0x00fb}, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
+ {{'u', '"'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */
+ {{'u', ':'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */
+ {{'y', '\''}, 0x00fd}, /* LATIN SMALL LETTER Y WITH ACUTE */
+ {{'i', 'p'}, 0x00fe}, /* LATIN SMALL LETTER THORN */
+ {{'t', 'h'}, 0x00fe}, /* LATIN SMALL LETTER THORN */
+ {{'y', '"'}, 0x00ff}, /* LATIN SMALL LETTER Y WITH DIAERESIS */
+ {{'y', ':'}, 0x00ff}, /* LATIN SMALL LETTER Y WITH DIAERESIS */
+ {{'"', '['}, 0x00c4}, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ {{'"', '\\'}, 0x00d6}, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
+ {{'"', ']'}, 0x00dc}, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
+ {{'"', '{'}, 0x00e4}, /* LATIN SMALL LETTER A WITH DIAERESIS */
+ {{'"', '|'}, 0x00f6}, /* LATIN SMALL LETTER O WITH DIAERESIS */
+ {{'"', '}'}, 0x00fc}, /* LATIN SMALL LETTER U WITH DIAERESIS */
+ {{'"', '~'}, 0x00df}, /* LATIN SMALL LETTER SHARP S */
};
#define RESIZE_FLAG_H 1

15
debian/patches/45suppress_remap.patch vendored Normal file
View file

@ -0,0 +1,15 @@
Author: Loic Minier <lool@dooz.org>
Description: Unbreak several useful keybindings.
Bugs-Debian: https://bugs.debian.org/484647
--- a/termcap.c
+++ b/termcap.c
@@ -553,8 +553,6 @@
else
break;
}
- if (n < KMAP_KEYS)
- domap = 1;
if (map == 0 && domap)
return 0;
if (map && !domap)

View file

@ -0,0 +1,57 @@
Description: Patch to make 4.2.1 compatible with Debian's 4.1.0 and
4.2.0 packages 4.2.1 includes the Debian patches to extend the login
name and $TERM length, but uses even larger values. This causes
screen clients to no more be able to talk to older screen
servers. See #644788 for a discussion of the same issue with earlier
release combinations (4.1.0 vs 4.0.3).
.
For now this patch sets the mentioned values back to those which
werew in use in Debian before (and seemed to be large enough for use
in Debian).
Author: Axel Beckert <abe@debian.org>
Forwarded: not-needed
--- a/os.h
+++ b/os.h
@@ -524,6 +524,6 @@
/* Changing those you won't be able to attach to your old sessions
* when changing those values in official tree don't forget to bump
* MSG_VERSION */
-#define MAXTERMLEN 32
-#define MAXLOGINLEN 256
+#define MAXTERMLEN 40
+#define MAXLOGINLEN 50
--- a/screen.h
+++ b/screen.h
@@ -186,7 +186,7 @@
* 4: screen version 4.2.1 (bumped once again due to changed terminal and login length)
* 5: screen version 4.4.0 (fix screenterm size)
*/
-#define MSG_VERSION 5
+#define MSG_VERSION 2
#define MSG_REVISION (('m'<<24) | ('s'<<16) | ('g'<<8) | MSG_VERSION)
struct msg
@@ -205,7 +205,7 @@
int nargs;
char line[MAXPATHLEN];
char dir[MAXPATHLEN];
- char screenterm[MAXTERMLEN + 1]; /* is screen really "screen" ? */
+ char screenterm[20]; /* is screen really "screen" ? */
}
create;
struct
--- a/socket.c
+++ b/socket.c
@@ -723,8 +723,8 @@
goto end;
}
if (nwin->term != nwin_undef.term)
- strncpy(m.m.create.screenterm, nwin->term, MAXTERMLEN);
- m.m.create.screenterm[MAXTERMLEN] = '\0';
+ strncpy(m.m.create.screenterm, nwin->term, 20-1);
+ m.m.create.screenterm[20-1] = '\0';
m.protocol_revision = MSG_REVISION;
debug1("SendCreateMsg writing '%s'\n", m.m.create.line);
if (write(s, (char *) &m, sizeof m) != sizeof m)

View file

@ -0,0 +1,38 @@
Description: Set PATH_MAX to 4096 if undefined
Fixes FTBFS since 4.4.0 on GNU/Hurd. Updated to add one more occurrence for 4.5.0.
Author: Axel Beckert <abe@debian.org>
Bug: https://savannah.gnu.org/bugs/?50089
Last-Updated: 2017-01-18
--- a/tty.sh
+++ b/tty.sh
@@ -1526,6 +1526,13 @@
return 0;
}
+/*
+ * Define PATH_MAX to 4096 if it's not defined, like on GNU/Hurd
+ */
+
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
int CheckTtyname (char *tty)
{
--- a/screen.h
+++ b/screen.h
@@ -109,6 +109,13 @@
# define DEFAULT_BUFFERFILE "/tmp/screen-exchange"
#endif
+/*
+ * Define PATH_MAX to 4096 if it's not defined, like on GNU/Hurd
+ */
+
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
#if defined(hpux) && !(defined(VSUSP) && defined(VDSUSP) && defined(VWERASE) && defined(VLNEXT))
# define HPUX_LTCHARS_HACK

View file

@ -0,0 +1,24 @@
Description: Add guarding commandline option around libutempter check
Author: Axel Beckert <abe@debian.org>
Forwarded: not-yet
Bug-Debian: https://bugs.debian.org/819781
--- a/configure.ac
+++ b/configure.ac
@@ -933,6 +933,8 @@
],
[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE(GETUTENT), LIBS="$olibs")
)
+AC_ARG_ENABLE(utempter, [ --enable-utempter enable utempter support])
+if test "$enable_utempter" = "yes"; then
AC_CHECKING(ut_host)
AC_TRY_COMPILE([
#include <time.h>
@@ -949,6 +951,7 @@
AC_DEFINE(HAVE_UTEMPTER)
LIBS="$LIBS -lutempter"
fi
+fi
dnl
dnl **** loadav ****

147
debian/patches/65-wcwidth.patch vendored Normal file
View file

@ -0,0 +1,147 @@
Description: Use wcwdith instead of a hardcoded list of wide characters
Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=1027733;filename=screen.wcwidth.v2.patch;msg=80
Author: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-By: Axel Beckert <abe@debian.org>
Bug-Debian: https://bugs.debian.org/1027733
Forwarded: no
(It is currently unclear if this patch is suitable for upstream usage.)
--- a/encoding.c
+++ b/encoding.c
@@ -22,6 +22,7 @@
*/
#include <sys/types.h>
+#include <wchar.h>
#include "config.h"
#include "screen.h"
@@ -1142,127 +1143,10 @@
{0xF0000, 0xFFFFD},
{0x100000, 0x10FFFD},
};
- /* A sorted list of intervals of double width characters generated by
- * https://github.com/GNOME/glib/blob/glib-2-50/glib/gen-unicode-tables.pl */
- static const struct interval wide[] = {
- {0x1100, 0x115F},
- {0x231A, 0x231B},
- {0x2329, 0x232A},
- {0x23E9, 0x23EC},
- {0x23F0, 0x23F0},
- {0x23F3, 0x23F3},
- {0x25FD, 0x25FE},
- {0x2614, 0x2615},
- {0x2648, 0x2653},
- {0x267F, 0x267F},
- {0x2693, 0x2693},
- {0x26A1, 0x26A1},
- {0x26AA, 0x26AB},
- {0x26BD, 0x26BE},
- {0x26C4, 0x26C5},
- {0x26CE, 0x26CE},
- {0x26D4, 0x26D4},
- {0x26EA, 0x26EA},
- {0x26F2, 0x26F3},
- {0x26F5, 0x26F5},
- {0x26FA, 0x26FA},
- {0x26FD, 0x26FD},
- {0x2705, 0x2705},
- {0x270A, 0x270B},
- {0x2728, 0x2728},
- {0x274C, 0x274C},
- {0x274E, 0x274E},
- {0x2753, 0x2755},
- {0x2757, 0x2757},
- {0x2795, 0x2797},
- {0x27B0, 0x27B0},
- {0x27BF, 0x27BF},
- {0x2B1B, 0x2B1C},
- {0x2B50, 0x2B50},
- {0x2B55, 0x2B55},
- {0x2E80, 0x2E99},
- {0x2E9B, 0x2EF3},
- {0x2F00, 0x2FD5},
- {0x2FF0, 0x2FFB},
- {0x3000, 0x303E},
- {0x3041, 0x3096},
- {0x3099, 0x30FF},
- {0x3105, 0x312F},
- {0x3131, 0x318E},
- {0x3190, 0x31BA},
- {0x31C0, 0x31E3},
- {0x31F0, 0x321E},
- {0x3220, 0x3247},
- {0x3250, 0x4DBF},
- {0x4E00, 0xA48C},
- {0xA490, 0xA4C6},
- {0xA960, 0xA97C},
- {0xAC00, 0xD7A3},
- {0xF900, 0xFAFF},
- {0xFE10, 0xFE19},
- {0xFE30, 0xFE52},
- {0xFE54, 0xFE66},
- {0xFE68, 0xFE6B},
- {0xFF01, 0xFF60},
- {0xFFE0, 0xFFE6},
- {0x16FE0, 0x16FE3},
- {0x17000, 0x187F7},
- {0x18800, 0x18AF2},
- {0x1B000, 0x1B11E},
- {0x1B150, 0x1B152},
- {0x1B164, 0x1B167},
- {0x1B170, 0x1B2FB},
- {0x1F004, 0x1F004},
- {0x1F0CF, 0x1F0CF},
- {0x1F18E, 0x1F18E},
- {0x1F191, 0x1F19A},
- {0x1F200, 0x1F202},
- {0x1F210, 0x1F23B},
- {0x1F240, 0x1F248},
- {0x1F250, 0x1F251},
- {0x1F260, 0x1F265},
- {0x1F300, 0x1F320},
- {0x1F32D, 0x1F335},
- {0x1F337, 0x1F37C},
- {0x1F37E, 0x1F393},
- {0x1F3A0, 0x1F3CA},
- {0x1F3CF, 0x1F3D3},
- {0x1F3E0, 0x1F3F0},
- {0x1F3F4, 0x1F3F4},
- {0x1F3F8, 0x1F43E},
- {0x1F440, 0x1F440},
- {0x1F442, 0x1F4FC},
- {0x1F4FF, 0x1F53D},
- {0x1F54B, 0x1F54E},
- {0x1F550, 0x1F567},
- {0x1F57A, 0x1F57A},
- {0x1F595, 0x1F596},
- {0x1F5A4, 0x1F5A4},
- {0x1F5FB, 0x1F64F},
- {0x1F680, 0x1F6C5},
- {0x1F6CC, 0x1F6CC},
- {0x1F6D0, 0x1F6D2},
- {0x1F6D5, 0x1F6D5},
- {0x1F6EB, 0x1F6EC},
- {0x1F6F4, 0x1F6FA},
- {0x1F7E0, 0x1F7EB},
- {0x1F90D, 0x1F971},
- {0x1F973, 0x1F976},
- {0x1F97A, 0x1F9A2},
- {0x1F9A5, 0x1F9AA},
- {0x1F9AE, 0x1F9CA},
- {0x1F9CD, 0x1F9FF},
- {0x1FA70, 0x1FA73},
- {0x1FA78, 0x1FA7A},
- {0x1FA80, 0x1FA82},
- {0x1FA90, 0x1FA95},
- {0x20000, 0x2FFFD},
- {0x30000, 0x3FFFD},
- };
if (c >= 0xdf00 && c <= 0xdfff)
return 1; /* dw combining sequence */
- return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
+ return ((wcwidth(c) == 2) ||
(cjkwidth &&
bisearch(c, ambiguous,
sizeof(ambiguous) / sizeof(struct interval) - 1)));

View file

@ -0,0 +1,74 @@
Author: Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
Description: Add lookup code for the creation time of each session.
Requires digging in /proc/$pid and /proc/uptime, though, so it's
definitely no candidate for the Beautiful C contest.
.
Affects screen's behaviour in the following situations:
.
* 'screen -ls' lists available sessions sorted chronologically
* 'screen -RR' now picks the youngest session instead of an
arbitrary one
.
Patch 1/3: documentation
Bug-Debian: https://bugs.debian.org/206572
Forwarded: not-yet
--- a/doc/screen.1
+++ b/doc/screen.1
@@ -241,7 +241,7 @@
.IR screen ,
but prints a list of
.I pid.tty.host
-strings identifying your
+strings and creation timestamps identifying your
.I screen
sessions.
Sessions marked `detached' can be resumed with \*Qscreen \-r\*U. Those marked
@@ -348,7 +348,7 @@
.I screen
is detached. Otherwise lists available sessions.
.B \-RR
-attempts to resume the first detached
+attempts to resume the youngest (in terms of creation time) detached
.I screen
session it finds. If successful, all other command-line options are ignored.
If no detached session exists, starts a new session using the specified
@@ -358,6 +358,8 @@
.I screen
is run as a login-shell (actually screen uses \*Q\-xRR\*U in that case).
For combinations with the \fB\-d\fP/\fB\-D\fP option see there.
+.B Note:
+Time-based session selection is a Debian addition.
.TP 5
.BI "\-s " program
sets the default shell to the program specified, instead of the value
--- a/doc/screen.texinfo
+++ b/doc/screen.texinfo
@@ -321,7 +321,8 @@
@itemx -list [@var{match}]
Do not start @code{screen}, but instead print a list of session
identification strings (usually of the form @var{pid.tty.host};
-@pxref{Session Name}). Sessions marked @samp{detached} can be resumed
+@pxref{Session Name}) and the corresponding creation timestamps.
+Sessions marked @samp{detached} can be resumed
with @code{screen -r}. Those marked @samp{attached} are running and
have a controlling terminal. If the session runs in multiuser mode,
it is marked @samp{multi}. Sessions marked as @samp{unreachable} either
@@ -415,14 +416,15 @@
when only one @code{screen} is detached. Otherwise lists available sessions.
@item -RR
-Resume the first appropriate detached @code{screen} session. If
-successful, all other command-line options are ignored. If no detached
+Resume the most-recently created appropriate detached @code{screen} session.
+If successful, all other command-line options are ignored. If no detached
session exists, start a new session using the specified options, just as
if @samp{-R} had not been specified. This option is set by default if
screen is run as a login-shell (actually screen uses @samp{-xRR} in
that case).
For combinations with the
@samp{-D}/@samp{-d} option see there.
+@samp{Note:} Time-based session selection is a Debian addition.
@item -s @var{program}
Set the default shell to be @var{program}. By default, @code{screen}

View file

@ -0,0 +1,77 @@
Author: Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
Description: Add lookup code for the creation time of each session.
Requires digging in /proc/$pid and /proc/uptime, though, so it's
definitely no candidate for the Beautiful C contest.
.
Affects screen's behaviour in the following situations:
.
* 'screen -ls' lists available sessions sorted chronologically
* 'screen -RR' now picks the youngest session instead of an
arbitrary one
.
Patch 2/3: new utility functions
Bug-Debian: https://bugs.debian.org/206572
Forwarded: not-yet
--- a/extern.h
+++ b/extern.h
@@ -395,6 +395,8 @@
#else
extern int xsnprintf __P(());
#endif
+extern time_t SessionCreationTime __P((const char *));
+extern time_t GetUptime __P((void));
/* acl.c */
--- a/misc.c
+++ b/misc.c
@@ -30,6 +30,7 @@
#include <sys/types.h>
#include <sys/stat.h> /* mkdir() declaration */
#include <signal.h>
+#include <fcntl.h>
#include "config.h"
#include "screen.h"
@@ -720,3 +721,40 @@
}
#endif
+
+time_t SessionCreationTime(const char *fifo) {
+ char ppath[20];
+ int pfd;
+ char pdata[512];
+ char *jiffies;
+
+ int pid = atoi(fifo);
+ if (pid <= 0) return 0;
+ sprintf(ppath, "/proc/%u/stat", pid);
+ pfd = open(ppath, O_RDONLY);
+ if (pfd < 0) return 0;
+ while (1) {
+ int R=0, RR;
+ RR = read(pfd, pdata + R, 512-R);
+ if (RR < 0) {close(pfd); return 0;}
+ else if (RR == 0) break;
+ }
+ close(pfd);
+
+ for (pfd=21, jiffies=pdata; pfd; --pfd) {
+ jiffies = strchr(jiffies, ' ');
+ if (!jiffies) break; else ++jiffies;
+ }
+ if (!jiffies) return 0;
+
+ return atol(jiffies) / 100;
+}
+
+time_t GetUptime(void) {
+ char uptimestr[32];
+ int fd = open("/proc/uptime", O_RDONLY);
+ if (fd < 0) return 0;
+ (void)read(fd, uptimestr, 32);
+ close(fd);
+ return atol(uptimestr);
+}

View file

@ -0,0 +1,161 @@
Author: Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
Description: Add lookup code for the creation time of each session.
Requires digging in /proc/$pid and /proc/uptime, though, so it's
definitely no candidate for the Beautiful C contest.
.
Affects screen's behaviour in the following situations:
.
* 'screen -ls' lists available sessions sorted chronologically
* 'screen -RR' now picks the youngest session instead of an
arbitrary one
.
Patch 3/3: implementation of actual new feature
Bug-Debian: https://bugs.debian.org/206572
Bug-Debian: https://bugs.debian.org/507817
Forwarded: not-yet
--- a/socket.c
+++ b/socket.c
@@ -137,16 +137,18 @@
int sdirlen;
int matchlen = 0;
char *name, *n;
- int firsts = -1, sockfd;
- char *firstn = NULL;
+ int sockfd;
int nfound = 0, ngood = 0, ndead = 0, nwipe = 0, npriv = 0;
int nperfect = 0;
+ time_t time_sysboot = time(NULL) - GetUptime();
struct sent
{
struct sent *next;
int mode;
+ int fd;
char *name;
- } *slist, **slisttail, *sent, *nsent;
+ time_t time_created;
+ } *slist, **slisttail, *sent, *nsent, *schosen;
if (match)
{
@@ -172,7 +174,7 @@
if ((dirp = opendir(SockPath)) == 0)
Panic(errno, "Cannot opendir %s", SockPath);
- slist = 0;
+ slist = schosen = NULL;
slisttail = &slist;
while ((dp = readdir(dirp)))
{
@@ -255,13 +257,16 @@
debug(" store it.\n");
if ((sent = (struct sent *)malloc(sizeof(struct sent))) == 0)
continue;
- sent->next = 0;
sent->name = SaveStr(name);
sent->mode = mode;
+ sent->time_created = time_sysboot + SessionCreationTime(name);
+ for (slisttail = &slist; *slisttail; slisttail = &((*slisttail)->next)) {
+ if ((*slisttail)->time_created < sent->time_created) break;
+ }
+ sent->next = *slisttail;
*slisttail = sent;
- slisttail = &sent->next;
nfound++;
- sockfd = MakeClientSocket(0, *is_sock);
+ sent->fd = sockfd = MakeClientSocket(0, *is_sock);
#ifdef USE_SETEUID
/* MakeClientSocket sets ids back to eff */
xseteuid(real_uid);
@@ -326,12 +331,17 @@
ngood++;
if (cmatch)
nperfect++;
- if (fdp && (firsts == -1 || (cmatch && nperfect == 1)))
+ // prefer the current one if one of the following is true:
+ // - we had no previous hit
+ // - the current one has a later timestamp than our previous one, and we haven't found a perfect match yet
+ // - this one is the first perfect match
+ if (fdp && (!schosen ||
+ (schosen && schosen->time_created < sent->time_created && nperfect == 0) ||
+ (cmatch && nperfect == 1)))
{
- if (firsts != -1)
- close(firsts);
- firsts = sockfd;
- firstn = sent->name;
+ if (schosen)
+ close(schosen->fd);
+ schosen = sent;
debug(" taken.\n");
}
else
@@ -359,36 +369,27 @@
}
for (sent = slist; sent; sent = sent->next)
{
- switch (sent->mode)
+ char timestr[64];
+ if (sent->time_created == 0)
{
- case 0700:
- printf("\t%s\t(Attached)\n", sent->name);
- break;
- case 0600:
- printf("\t%s\t(Detached)\n", sent->name);
- break;
+ sprintf(timestr, "??" "?");
+ }
+ else
+ {
+ strftime(timestr, 64, "%x %X", localtime(&sent->time_created));
+ }
+ printf("\t%s\t(%s)\t(%s)\n", sent->name, timestr,
+ (sent->mode == 0700) ? "Attached" :
+ (sent->mode == 0600) ? "Detached" :
#ifdef MULTIUSER
- case 0701:
- printf("\t%s\t(Multi, attached)\n", sent->name);
- break;
- case 0601:
- printf("\t%s\t(Multi, detached)\n", sent->name);
- break;
+ (sent->mode == 0701) ? "Multi, attached" :
+ (sent->mode == 0601) ? "Multi, detached" :
#endif
- case -1:
- /* No trigraphs here! */
- printf("\t%s\t(Dead ?%c?)\n", sent->name, '?');
- break;
- case -2:
- printf("\t%s\t(Removed)\n", sent->name);
- break;
- case -3:
- printf("\t%s\t(Remote or dead)\n", sent->name);
- break;
- case -4:
- printf("\t%s\t(Private)\n", sent->name);
- break;
- }
+ (sent->mode == -1) ? "Dead ??" "?" :
+ (sent->mode == -2) ? "Removed" :
+ (sent->mode == -3) ? "Remote or dead" :
+ (sent->mode == -4) ? "Private" :
+ "Unknown");
}
}
if (ndead && !quietflag)
@@ -399,10 +400,10 @@
else
Msg(0, m, ndead > 1 ? "s" : "", ndead > 1 ? "" : "es"); /* other args for nethack */
}
- if (firsts != -1)
+ if (schosen)
{
- sprintf(SockPath + sdirlen, "/%s", firstn);
- *fdp = firsts;
+ sprintf(SockPath + sdirlen, "/%s", schosen->name);
+ *fdp = schosen->fd;
}
else
SockPath[sdirlen] = 0;

View file

@ -0,0 +1,281 @@
Origin: https://savannah.gnu.org/bugs/download.php?file_id=52911
Author: Hayaki Saito <user@zuse.jp>
Date: Fri, 15 Mar 2013 16:23:54 +0100
Description: Support "bracket paste mode" and cursor-style manipulation
Bug: https://savannah.gnu.org/bugs/?62102
Bug-Debian: https://bugs.debian.org/1019576
Hello, lists
This patch adds the following two features to GNU Screen:
- Bracket Paste Mode (DECSET/DECRST 2004)
- DECSCUSR(cursor style manipulation)
By using "bracketed paste mode", the pasted text is bracketed with special
control sequences.
DECSCUSR can change cursor style and shape (blink/steady, block/Vertical
bar/horizontal bar).
ref: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
These days, many of xterm-compatible terminal emulators support these features.
But current GNU Screen blocks them.
This patch manages states of "Bracket Paste Mode (DECSET/DECRST 2004)" and
DECSCUSR(cursor style manipulation), for each of screens.
Please check it.
Hayaki Saito <user@zuse.jp>
https://lists.gnu.org/archive/html/screen-devel/2013-03/msg00000.html
---
ansi.c | 12 ++++++++++++
display.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
display.h | 4 ++++
extern.h | 4 ++++
layer.c | 26 ++++++++++++++++++++++++++
window.c | 2 ++
window.h | 2 ++
7 files changed, 100 insertions(+)
--- a/ansi.c
+++ b/ansi.c
@@ -194,6 +194,8 @@
p->w_origin = 0;
p->w_insert = 0;
p->w_revvid = 0;
+ p->w_bracketed = 0;
+ p->w_cursorstyle = 0;
p->w_mouse = 0;
p->w_curinv = 0;
p->w_curvvis = 0;
@@ -1346,6 +1348,12 @@
break;
}
break;
+ case ' ':
+ if (c == 'q') {
+ curr->w_cursorstyle = a1;
+ LCursorStyle(&curr->w_layer, curr->w_cursorstyle);
+ }
+ break;
case '?':
for (a2 = 0; a2 < curr->w_NumArgs; a2++)
{
@@ -1477,6 +1485,10 @@
LExtMouseMode(&curr->w_layer, curr->w_extmouse);
break;
/* case 1015: UXRVT mouse mode rejected */
+ case 2004: /* bracketed paste mode */
+ curr->w_bracketed = i ? 1 : 0;
+ LBracketedPasteMode(&curr->w_layer, curr->w_bracketed);
+ break;
}
}
break;
--- a/display.c
+++ b/display.c
@@ -131,6 +131,8 @@
int defobuflimit = OBUF_MAX;
int defnonblock = -1;
int defmousetrack = 0;
+int defbracketed = 0;
+int defcursorstyle = 0;
#ifdef AUTO_NUKE
int defautonuke = 0;
#endif
@@ -193,6 +195,8 @@
LCursorkeysMode(flayer, 0);
LCursorVisibility(flayer, 0);
LMouseMode(flayer, 0);
+ LBracketedPasteMode(flayer, 0);
+ LCursorStyle(flayer, 0);
LSetRendition(flayer, &mchar_null);
LSetFlow(flayer, nwin_default.flowflag & FLOW_NOW);
}
@@ -324,6 +328,8 @@
D_user = *u;
D_processinput = ProcessInput;
D_mousetrack = defmousetrack;
+ D_bracketed = defbracketed;
+ D_cursorstyle = defcursorstyle;
return display;
}
@@ -498,6 +504,8 @@
D_mousetrack = 0;
MouseMode(0);
ExtMouseMode(0);
+ BracketedPasteMode(0);
+ CursorStyle(0);
SetRendition(&mchar_null);
SetFlow(FLOW_NOW);
#ifdef MAPKEYS
@@ -872,6 +880,42 @@
}
}
+void BracketedPasteMode(int mode)
+{
+ if (!display)
+ return;
+
+ if (D_bracketed != mode) {
+ if (!D_CXT)
+ return;
+ if (D_bracketed) {
+ AddStr("\033[?2004l");
+ }
+ if (mode) {
+ AddStr("\033[?2004h");
+ }
+ D_bracketed = mode;
+ }
+}
+
+void CursorStyle(int mode)
+{
+ char buf[32];
+
+ if (!display)
+ return;
+
+ if (D_cursorstyle != mode) {
+ if (!D_CXT)
+ return;
+ if (mode < 0)
+ return;
+ sprintf(buf, "\033[%d q", mode);
+ AddStr(buf);
+ D_cursorstyle = mode;
+ }
+}
+
static int StrCost;
/* ARGSUSED */
@@ -1298,6 +1342,8 @@
CursorVisibility(0);
MouseMode(0);
ExtMouseMode(0);
+ BracketedPasteMode(0);
+ CursorStyle(0);
SetRendition(&mchar_null);
SetFlow(FLOW_NOW);
@@ -3199,6 +3245,8 @@
int oldcurvis = D_curvis;
int oldmouse = D_mouse;
int oldextmouse = D_extmouse;
+ int oldbracketed = D_bracketed;
+ int oldcursorstyle = D_cursorstyle;
oldrend = D_rend;
len = D_obufp - D_obuf;
@@ -3262,6 +3310,8 @@
CursorVisibility(oldcurvis);
MouseMode(oldmouse);
ExtMouseMode(oldextmouse);
+ BracketedPasteMode(oldbracketed);
+ CursorStyle(oldcursorstyle);
if (D_CWS)
{
debug("ResizeDisplay: using WS\n");
--- a/display.h
+++ b/display.h
@@ -111,6 +111,8 @@
struct mouse_parse d_mouse_parse; /* state of mouse code parsing */
int d_mousetrack; /* set when user wants to use mouse even when the window
does not */
+ int d_bracketed; /* bracketed paste mode */
+ int d_cursorstyle; /* cursor style */
#ifdef RXVT_OSC
int d_xtermosc[5]; /* osc used */
#endif
@@ -198,6 +200,8 @@
#define D_user DISPLAY(d_user)
#define D_username (DISPLAY(d_user) ? DISPLAY(d_user)->u_name : 0)
+#define D_bracketed DISPLAY(d_bracketed)
+#define D_cursorstyle DISPLAY(d_cursorstyle)
#define D_canvas DISPLAY(d_canvas)
#define D_cvlist DISPLAY(d_cvlist)
#define D_layout DISPLAY(d_layout)
--- a/extern.h
+++ b/extern.h
@@ -291,6 +291,8 @@
extern void CursorVisibility __P((int));
extern void MouseMode __P((int));
extern void ExtMouseMode __P((int));
+extern void BracketedPasteMode (int);
+extern void CursorStyle (int);
extern void SetFont __P((int));
extern void SetAttr __P((int));
extern void SetColor __P((int, int));
@@ -454,6 +456,8 @@
extern void LCursorkeysMode __P((struct layer *, int));
extern void LMouseMode __P((struct layer *, int));
extern void LExtMouseMode __P((struct layer *, int));
+extern void LBracketedPasteMode __P((struct layer *, int));
+extern void LCursorStyle __P((struct layer *, int));
#if defined(USEVARARGS)
extern void LMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3)));
#else
--- a/layer.c
+++ b/layer.c
@@ -840,6 +840,32 @@
}
}
+void LBracketedPasteMode(struct layer *l, int on)
+{
+ struct canvas *cv;
+ for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
+ display = cv->c_display;
+ if (D_blocked)
+ continue;
+ if (cv != D_forecv)
+ continue;
+ BracketedPasteMode(on);
+ }
+}
+
+void LCursorStyle(struct layer *l, int style)
+{
+ struct canvas *cv;
+ for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
+ display = cv->c_display;
+ if (D_blocked)
+ continue;
+ if (cv != D_forecv)
+ continue;
+ CursorStyle(style);
+ }
+}
+
void LClearAll(struct layer *l, int uself)
{
LClearArea(l, 0, 0, l->l_width - 1, l->l_height - 1, 0, uself);
--- a/window.c
+++ b/window.c
@@ -509,6 +509,8 @@
CursorVisibility(fore->w_curinv ? -1 : fore->w_curvvis);
MouseMode(fore->w_mouse);
ExtMouseMode(fore->w_extmouse);
+ BracketedPasteMode(fore->w_bracketed);
+ CursorStyle(fore->w_cursorstyle);
}
}
--- a/window.h
+++ b/window.h
@@ -241,6 +241,8 @@
#endif
int w_mouse; /* mouse mode 0,9,1000 */
int w_extmouse; /* extended mouse mode 0,1006 */
+ int w_bracketed; /* bracketed paste mode */
+ int w_cursorstyle; /* cursor style */
#ifdef HAVE_BRAILLE
int w_bd_x, w_bd_y; /* Braille cursor position */
#endif

View file

@ -0,0 +1,134 @@
From: Matthias Gerstner <matthias.gerstner@suse.de>
Date: Mon, 12 May 2025 15:15:38 +0200
Subject: fix CVE-2025-46802: attacher.c - prevent temporary 0666 mode on PTYs
Origin: https://git.savannah.gnu.org/cgit/screen.git/commit/?id=049b26b22e197ba3be9c46e5c193032e01a4724a
Bug-Debian: https://bugs.debian.org/1105191
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-46802
This temporary chmod of the PTY to mode 0666 is most likely a remnant of
past times, before the PTY file descriptor was passed to the target
session via the UNIX domain socket.
This chmod() causes a race condition during which any other user in the
system can open the PTY for reading and writing, and thus allows PTY
hijacking.
Simply remove this logic completely.
---
src/attacher.c | 27 ---------------------------
src/screen.c | 19 -------------------
2 files changed, 46 deletions(-)
--- a/attacher.c
+++ b/attacher.c
@@ -73,7 +73,6 @@ extern int MasterPid, attach_fd;
#ifdef MULTIUSER
extern char *multi;
extern int multiattach, multi_uid, own_uid;
-extern int tty_mode, tty_oldmode;
# ifndef USE_SETEUID
static int multipipe[2];
# endif
@@ -160,9 +159,6 @@ int how;
if (pipe(multipipe))
Panic(errno, "pipe");
- if (chmod(attach_tty, 0666))
- Panic(errno, "chmod %s", attach_tty);
- tty_oldmode = tty_mode;
eff_uid = -1; /* make UserContext fork */
real_uid = multi_uid;
if ((ret = UserContext()) <= 0)
@@ -174,11 +170,6 @@ int how;
Panic(errno, "UserContext");
close(multipipe[1]);
read(multipipe[0], &dummy, 1);
- if (tty_oldmode >= 0)
- {
- chmod(attach_tty, tty_oldmode);
- tty_oldmode = -1;
- }
ret = UserStatus();
#ifdef LOCK
if (ret == SIG_LOCK)
@@ -224,9 +215,6 @@ int how;
xseteuid(multi_uid);
xseteuid(own_uid);
#endif
- if (chmod(attach_tty, 0666))
- Panic(errno, "chmod %s", attach_tty);
- tty_oldmode = tty_mode;
}
# endif /* USE_SETEUID */
#endif /* MULTIUSER */
@@ -423,13 +411,6 @@ int how;
ContinuePlease = 0;
# ifndef USE_SETEUID
close(multipipe[1]);
-# else
- xseteuid(own_uid);
- if (tty_oldmode >= 0)
- if (chmod(attach_tty, tty_oldmode))
- Panic(errno, "chmod %s", attach_tty);
- tty_oldmode = -1;
- xseteuid(real_uid);
# endif
}
#endif
@@ -505,14 +486,6 @@ AttacherFinit SIGDEFARG
close(s);
}
}
-#ifdef MULTIUSER
- if (tty_oldmode >= 0)
- {
- if (setuid(own_uid))
- Panic(errno, "setuid");
- chmod(attach_tty, tty_oldmode);
- }
-#endif
exit(0);
SIGRETURN;
}
--- a/screen.c
+++ b/screen.c
@@ -230,8 +230,6 @@ char *multi_home;
int multi_uid;
int own_uid;
int multiattach;
-int tty_mode;
-int tty_oldmode = -1;
#endif
char HostName[MAXSTR];
@@ -1009,9 +1007,6 @@ int main(int ac, char** av)
/* ttyname implies isatty */
SetTtyname(true, &st);
-#ifdef MULTIUSER
- tty_mode = (int)st.st_mode & 0777;
-#endif
fl = fcntl(0, F_GETFL, 0);
if (fl != -1 && (fl & (O_RDWR|O_RDONLY|O_WRONLY)) == O_RDWR)
@@ -2170,20 +2165,6 @@ DEFINE_VARARGS_FN(Panic)
if (D_userpid)
Kill(D_userpid, SIG_BYE);
}
-#ifdef MULTIUSER
- if (tty_oldmode >= 0) {
-
-# ifdef USE_SETEUID
- if (setuid(own_uid))
- xseteuid(own_uid); /* may be a loop. sigh. */
-# else
- setuid(own_uid);
-# endif
-
- debug1("Panic: changing back modes from %s\n", attach_tty);
- chmod(attach_tty, tty_oldmode);
- }
-#endif
eexit(1);
}

View file

@ -0,0 +1,118 @@
From: Matthias Gerstner <matthias.gerstner@suse.de>
Date: Mon, 12 May 2025 15:26:11 +0200
Subject: fix CVE-2025-46804: avoid file existence test information leaks
Origin: https://git.savannah.gnu.org/cgit/screen.git/commit/?id=e0eef5aac453fa98a2664416a56c50ad1d00cb30
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-46804
In setuid-root context the current error messages give away whether
certain paths not accessible by the real user exist and what type they
have. To prevent this only output generic error messages in setuid-root
context.
In some situations, when an error is pertaining a directory and the
directory is owner by the real user then we can still output more
detailed diagnostics.
This change can lead to less helpful error messages when Screen is
install setuid-root. More complex changes would be needed to avoid this
(e.g. only open the `SocketPath` with raised privileges when
multi-attach is requested).
There might still be lingering some code paths that allow such
information leaks, since `SocketPath` is a global variable that is used
across the code base. The majority of issues should be caught with this
fix, however.
---
src/screen.c | 45 ++++++++++++++++++++++++++++++++++-----------
src/socket.c | 9 +++++++--
2 files changed, 41 insertions(+), 13 deletions(-)
--- a/screen.c
+++ b/screen.c
@@ -1122,15 +1122,28 @@ int main(int ac, char** av)
#endif
}
- if (stat(SockPath, &st) == -1)
- Panic(errno, "Cannot access %s", SockPath);
- else
- if (!S_ISDIR(st.st_mode))
+ if (stat(SockPath, &st) == -1) {
+ if (eff_uid == real_uid) {
+ Panic(errno, "Cannot access %s", SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ } else if (!S_ISDIR(st.st_mode)) {
+ if (eff_uid == real_uid || st.st_uid == real_uid) {
Panic(0, "%s is not a directory.", SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ }
#ifdef MULTIUSER
if (multi) {
- if ((int)st.st_uid != multi_uid)
- Panic(0, "%s is not the owner of %s.", multi, SockPath);
+ if ((int)st.st_uid != multi_uid) {
+ if (eff_uid == real_uid || st.st_uid == real_uid) {
+ Panic(0, "%s is not the owner of %s.", multi, SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ }
}
else
#endif
@@ -1144,9 +1157,13 @@ int main(int ac, char** av)
Panic(0, "You are not the owner of %s.", SockPath);
#endif
}
-
- if ((st.st_mode & 0777) != 0700)
- Panic(0, "Directory %s must have mode 700.", SockPath);
+ if ((st.st_mode & 0777) != 0700) {
+ if (eff_uid == real_uid || st.st_uid == real_uid) {
+ Panic(0, "Directory %s must have mode 700.", SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ }
if (SockMatch && index(SockMatch, '/'))
Panic(0, "Bad session name '%s'", SockMatch);
SockName = SockPath + strlen(SockPath) + 1;
@@ -1184,8 +1201,14 @@ int main(int ac, char** av)
else
exit(9 + (fo || oth ? 1 : 0) + fo);
}
- if (fo == 0)
- Panic(0, "No Sockets found in %s.\n", SockPath);
+ if (fo == 0) {
+ if (eff_uid == real_uid || st.st_uid == real_uid) {
+ Panic(0, "No Sockets found in %s.\n", SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ }
+
Msg(0, "%d Socket%s in %s.", fo, fo > 1 ? "s" : "", SockPath);
eexit(0);
}
--- a/socket.c
+++ b/socket.c
@@ -171,8 +171,13 @@ bool *is_sock;
xsetegid(real_gid);
#endif
- if ((dirp = opendir(SockPath)) == 0)
- Panic(errno, "Cannot opendir %s", SockPath);
+ if ((dirp = opendir(SockPath)) == 0) {
+ if (eff_uid == real_uid) {
+ Panic(errno, "Cannot opendir %s", SockPath);
+ } else {
+ Panic(0, "Error accessing %s", SockPath);
+ }
+ }
slist = schosen = NULL;
slisttail = &slist;

View file

@ -0,0 +1,113 @@
From: Matthias Gerstner <matthias.gerstner@suse.de>
Date: Mon, 12 May 2025 15:38:19 +0200
Subject: fix CVE-2025-46805: socket.c - don't send signals with root
privileges
Origin: https://git.savannah.gnu.org/cgit/screen.git/commit/?id=161f85b98b7e1d5e4893aeed20f4cdb5e3dfaaa4
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-46805
The CheckPid() function was introduced to address CVE-2023-24626, to
prevent sending SIGCONT and SIGHUP to arbitrary PIDs in the system. This
fix still suffers from a TOCTOU race condition. The client can replace
itself by a privileged process, or try to cycle PIDs until a privileged
process receives the original PID.
To prevent this, always send signals using the real privileges. Keep
CheckPid() for error diagnostics. If sending the actual signal fails
later on then there will be no more error reporting.
It seems the original bugfix already introduced a regression when
attaching to another's user session that is not owned by root. In this
case the target sessions runs with real uid X, while for sending a
signal to the `pid` provided by the client real uid Y (or root
privileges) are required.
This is hard to properly fix without this regression. On Linux pidfds
could be used to allow safely sending signals to other PIDs as root
without involving race conditions. In this case the client PID should
also be obtained via the UNIX domain socket's SO_PEERCRED option,
though.
---
src/socket.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
--- a/socket.c
+++ b/socket.c
@@ -832,6 +832,11 @@ int pid;
return UserStatus();
}
+static void KillUnpriv(pid_t pid, int sig) {
+ UserContext();
+ UserReturn(kill(pid, sig));
+}
+
#ifdef hpux
/*
* From: "F. K. Bruner" <napalm@ugcs.caltech.edu>
@@ -917,14 +922,14 @@ struct win *wi;
{
Msg(errno, "Could not perform necessary sanity checks on pts device.");
close(i);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
return -1;
}
if (strcmp(ttyname_in_ns, m->m_tty))
{
Msg(errno, "Attach: passed fd does not match tty: %s - %s!", ttyname_in_ns, m->m_tty[0] != '\0' ? m->m_tty : "(null)");
close(i);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
return -1;
}
/* m->m_tty so far contains the actual name of the pts device in the
@@ -941,19 +946,19 @@ struct win *wi;
{
Msg(errno, "Attach: passed fd does not match tty: %s - %s!", m->m_tty, myttyname ? myttyname : "NULL");
close(i);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
return -1;
}
}
else if ((i = secopen(m->m_tty, O_RDWR | O_NONBLOCK, 0)) < 0)
{
Msg(errno, "Attach: Could not open %s!", m->m_tty);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
return -1;
}
#ifdef MULTIUSER
if (attach)
- Kill(pid, SIGCONT);
+ KillUnpriv(pid, SIGCONT);
#endif
#if defined(ultrix) || defined(pyr) || defined(NeXT)
@@ -966,7 +971,7 @@ struct win *wi;
{
write(i, "Attaching from inside of screen?\n", 33);
close(i);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
Msg(0, "Attach msg ignored: coming from inside.");
return -1;
}
@@ -977,7 +982,7 @@ struct win *wi;
{
write(i, "Access to session denied.\n", 26);
close(i);
- Kill(pid, SIG_BYE);
+ KillUnpriv(pid, SIG_BYE);
Msg(0, "Attach: access denied for user %s.", user);
return -1;
}
@@ -1295,7 +1300,7 @@ ReceiveMsg()
Msg(0, "Query attempt with bad pid(%d)!", m.m.command.apid);
}
else {
- Kill(m.m.command.apid,
+ KillUnpriv(m.m.command.apid,
(queryflag >= 0)
? SIGCONT
: SIG_BYE); /* Send SIG_BYE if an error happened */

20
debian/patches/series vendored Normal file
View file

@ -0,0 +1,20 @@
# 01-08: fixes to configure, altering preprocessor macros etc.
03disable-utmp.patch
05prefer-libtinfo-over-libcurses.patch
# 10-79: "regular" code and documentation fixes
11replace_doc_paths.patch
13split_info_files.patch
26source_encoding.patch
45suppress_remap.patch
60-screen-4.2.1-debian4.1.0-compatibility.patch
61-default-PATH_MAX-if-undefined-for-hurd.patch
63-add-utempter-switch.patch
65-wcwidth.patch
# 80-89: experimental patches, new features etc.
80_session_creation_docs.patch
81_session_creation_util.patch
82_session_creation_core.patch
85_bracketed-paste-patch-by-Unit193_dpaste.com_5KJ572GZM.patch
fix-CVE-2025-46802-attacher.c-prevent-temporary-0666.patch
fix-CVE-2025-46804-avoid-file-existence-test-informa.patch
fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch

69
debian/rules vendored Executable file
View file

@ -0,0 +1,69 @@
#!/usr/bin/make -f
#
# Copyright (C) 1997 joost witteveen <joost@rulcmc.leidenuniv.nl>
# Copyright (C) 1997-2001 Juan Cespedes <cespedes@debian.org>
# Copyright (C) 2001 Adam Lazur <zal@debian.org>
# Copyright (C) 2011-2016 Axel Beckert <abe@debian.org>
# Uncomment me to turn on debugging
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
export DEB_CFLAGS_MAINT_APPEND=-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
ROOT := $(CURDIR)/debian/screen
ROOT_UDEB := $(CURDIR)/debian/screen-udeb
# statically define this... sucko
TTYGROUP := 5
# Common configure options for .deb and .udeb
SCREEN_CONFIGURE=--with-socket-dir=/run/screen \
--with-pty-mode=0600 \
--with-pty-group=${TTYGROUP} \
--enable-rxvt_osc \
--with-sys-screenrc=/etc/screenrc \
--enable-colors256 \
--enable-telnet \
--enable-use-locale
%:
dh $@
override_dh_auto_clean:
rm -rf build build-udeb
override_dh_auto_configure:
dh_auto_configure -B build -- $(SCREEN_CONFIGURE) --enable-pam
# To minimize the library dependencies, the .udeb binary is
# built without "--enable-pam"
dh_auto_configure -B build-udeb -- $(SCREEN_CONFIGURE)
# Assert the use of fifos instead of sockets
cd build; grep -q "define.*NAMEDPIPE.*1" config.h || echo "#define NAMEDPIPE 1" >> config.h
cd build-udeb; grep -q "define.*NAMEDPIPE.*1" config.h || echo "#define NAMEDPIPE 1" >> config.h
override_dh_auto_build:
dh_auto_build --builddirectory build
dh_auto_build --builddirectory build-udeb
dh_auto_build --sourcedirectory build/doc
override_dh_auto_install:
# can't call the normal install target b/c it installs the
# info files and other crud
cd build; $(MAKE) prefix=$(ROOT)/usr SCREENENCODINGS='$$(prefix)/share/screen/utf8encodings' installdirs install_bin
cd build-udeb; $(MAKE) prefix=$(ROOT_UDEB)/usr SCREENENCODINGS='$$(prefix)/share/screen/utf8encodings' installdirs install_bin
# hack around the fact that the install target makes screen a
# symlink to screen-$$(VERSION)
rm -f $(ROOT)/usr/bin/screen $(ROOT_UDEB)/usr/bin/screen
mv -f $(ROOT)/usr/bin/screen* $(ROOT)/usr/bin/screen
mv -f $(ROOT_UDEB)/usr/bin/screen* $(ROOT_UDEB)/usr/bin/screen
chmod 755 $(ROOT_UDEB)/usr/bin/screen
chmod 755 $(ROOT)/usr/bin/screen
# Fix package-contains-info-dir-file, remove /usr/share/info/dir.gz
rm -f $(ROOT)/usr/share/info/dir*
# Remove documentation from udeb
rm -rf $(ROOT_UDEB)/usr/share/info $(ROOT_UDEB)/usr/share/man
override_dh_installinit:
dh_installinit --no-start --init-script=screen-cleanup
override_dh_installtmpfiles:
dh_installtmpfiles --name=screen-cleanup

1
debian/screen-udeb.install vendored Normal file
View file

@ -0,0 +1 @@
debian/udeb/screenrc etc/

2
debian/screen-udeb.lintian-overrides vendored Normal file
View file

@ -0,0 +1,2 @@
# Screen is setgid by default to be able to write to the utmp database
screen-udeb udeb: setgid-binary usr/bin/screen 2755 root/utmp

28
debian/screen.bug-script vendored Executable file
View file

@ -0,0 +1,28 @@
#!/bin/sh
exec 1>&3
exec 2>&3
echo File Existence and Permissions
echo ------------------------------
echo ''
ls -ldU \
/run \
/var/run \
/usr/bin/screen \
/etc/tmpfiles.d/screen-cleanup.conf \
/lib/systemd/system/screen-cleanup.service \
/etc/init.d/screen-cleanup \
/etc/rc?.d/*screen-cleanup
echo ''
echo File contents
echo -------------
echo ''
if [ -e /etc/tmpfiles.d/screen-cleanup.conf ]; then
echo '### /etc/tmpfiles.d/screen-cleanup.conf'
echo ______________________________________________________________________
cat /etc/tmpfiles.d/screen-cleanup.conf
echo ______________________________________________________________________
fi

13
debian/screen.dirs vendored Normal file
View file

@ -0,0 +1,13 @@
# The following directory is needed if the local admin wants to remove
# the setgid bit by following the steps listed in README.Debian. Just
# creating the directory in postinst (in case systemd is not
# installed) and removing it again in postrm does not work, because
# postinst either removes a directory owned by systemd (even if empty)
# or leaves an unowned directory in case of any other init system is
# used. The situation would get even more tricky if the file hasn't
# been created because running under sysvinit and then the init system
# is switched (either by installing systemd-sysv or by switching the
# init system via boot parameters) without screen being reinstalled,
# i.e. screen's postinst not being called again. (And screen's init
# script can't handle that because it's no more run by systemd.)
etc/tmpfiles.d

8
debian/screen.docs vendored Normal file
View file

@ -0,0 +1,8 @@
NEWS*
README
TODO
debian/README.Debian
doc/FAQ
doc/fdpat.ps
doc/window_to_display.ps
terminfo

2
debian/screen.examples vendored Normal file
View file

@ -0,0 +1,2 @@
etc/etcscreenrc
etc/screenrc

1
debian/screen.info vendored Normal file
View file

@ -0,0 +1 @@
build/doc/screen.info*

49
debian/screen.init vendored Normal file
View file

@ -0,0 +1,49 @@
#!/bin/sh
# $Id: init,v 1.3 2004/03/16 01:43:45 zal Exp $
#
# Script to remove stale screen named pipes on bootup.
#
### BEGIN INIT INFO
# Provides: screen-cleanup
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: S
# Default-Stop:
# Short-Description: screen sessions cleaning
# Description: Cleans up the screen session directory and fixes its
# permissions if needed.
### END INIT INFO
set -e
test -f /usr/bin/screen || exit 0
SCREENDIR=/run/screen
case "$1" in
start)
if test -L $SCREENDIR || ! test -d $SCREENDIR; then
rm -f $SCREENDIR
mkdir $SCREENDIR
chown root:utmp $SCREENDIR
[ -x /sbin/restorecon ] && /sbin/restorecon $SCREENDIR
fi
find $SCREENDIR -type p -delete
# If the local admin has used dpkg-statoverride to install the screen
# binary with different set[ug]id bits, change the permissions of
# $SCREENDIR accordingly
BINARYPERM=`stat -c%a /usr/bin/screen`
if [ "$BINARYPERM" -ge 4000 ]; then
chmod 0755 $SCREENDIR
elif [ "$BINARYPERM" -ge 2000 ]; then
chmod 0775 $SCREENDIR
else
chmod 1777 $SCREENDIR
fi
;;
stop|restart|reload|force-reload)
;;
esac
exit 0

3
debian/screen.install vendored Normal file
View file

@ -0,0 +1,3 @@
debian/README.terminfo usr/share/doc/screen/terminfo/
debian/screenrc etc/
debian/shells.d usr/share/debianutils/

19
debian/screen.lintian-overrides vendored Normal file
View file

@ -0,0 +1,19 @@
# There is no status, it's just for cleaning up.
screen: init.d-script-does-not-implement-status-option [etc/init.d/screen-cleanup]
# It doesn't need redirection to systemctl. There is
# /etc/tmpfiles.d/screen-cleanup.conf and
# /lib/systemd/system/screen-cleanup.service for that.
screen: init.d-script-does-not-source-init-functions [etc/init.d/screen-cleanup]
# False positive, handled by debian/tmpfile, debian/postinst and
# debian/postrm. See https://bugs.debian.org/740301 and
# https://bugs.launchpad.net/bugs/1462692 for the context of this
# implementation.
screen: missing-systemd-service-for-init.d-rcS-script screen-cleanup [etc/init.d/screen-cleanup]
# False positive, it's user and group
screen: spelling-error-in-readme-debian root root (duplicate word) root [usr/share/doc/screen/README.Debian.gz]
# On purpose, documentation on national encoding
screen: national-encoding [usr/share/doc/screen/terminfo/8bits]

1
debian/screen.manpages vendored Normal file
View file

@ -0,0 +1 @@
doc/screen.1

35
debian/screen.postinst vendored Normal file
View file

@ -0,0 +1,35 @@
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
if [ "$1" = configure ]; then
if ! test -d /run/screen; then
install -g utmp -m 0775 -d /run/screen
fi
perms="`stat -c%a /usr/bin/screen`"
override=/etc/tmpfiles.d/screen-cleanup.conf
if [ $perms -eq 4755 ]; then
chmod 0755 /run/screen
if [ ! -f $override ]; then
echo "# This file is generated by $0 upon package configuration" > $override
echo 'd /run/screen 0755 root utmp' >> $override
fi
elif [ $perms -eq 755 ]; then
chmod 1777 /run/screen
if [ ! -f $override ]; then
echo "# This file is generated by $0 upon package configuration" > $override
echo 'd /run/screen 1777 root utmp' >> $override
fi
fi
# LP #1462692
servicedir=/lib/systemd/system
servicefile=$servicedir/screen-cleanup.service
mkdir -p $servicedir
if [ ! -e $servicefile ]; then
ln -s /dev/null $servicefile
fi
fi
#DEBHELPER#

16
debian/screen.postrm vendored Normal file
View file

@ -0,0 +1,16 @@
#!/bin/sh
set -e
if [ "$1" = purge ] || [ "$1" = remove ]; then
rm -rf /run/screen
fi
if [ "$1" = purge ]; then
rm -vf /etc/tmpfiles.d/screen-cleanup.conf
# LP #1462692
rm -f /lib/systemd/system/screen-cleanup.service
rmdir -p --ignore-fail-on-non-empty /lib/systemd/system
fi
#DEBHELPER#

1
debian/screen.screen-cleanup.tmpfiles vendored Normal file
View file

@ -0,0 +1 @@
d /run/screen 0777 root utmp

108
debian/screenrc vendored Normal file
View file

@ -0,0 +1,108 @@
# $Id: screenrc,v 1.15 2003/10/08 11:39:03 zal Exp $
#
# /etc/screenrc
#
# This is the system wide screenrc.
#
# You can use this file to change the default behavior of screen system wide
# or copy it to ~/.screenrc and use it as a starting point for your own
# settings.
#
# Commands in this file are used to set options, bind screen functions to
# keys, redefine terminal capabilities, and to automatically establish one or
# more windows at the beginning of your screen session.
#
# This is not a comprehensive list of options, look at the screen manual for
# details on everything that you can put in this file.
#
# ------------------------------------------------------------------------------
# SCREEN SETTINGS
# ------------------------------------------------------------------------------
#startup_message off
#nethack on
#defflow on # will force screen to process ^S/^Q
deflogin on
#autodetach off
# turn visual bell on
vbell on
vbell_msg " Wuff ---- Wuff!! "
# define a bigger scrollback, default is 100 lines
defscrollback 1024
# ------------------------------------------------------------------------------
# SCREEN KEYBINDINGS
# ------------------------------------------------------------------------------
# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
# An example of a "screen scraper" which will launch urlview on the current
# screen window
#
#bind ^B eval "hardcopy_append off" "hardcopy -h $HOME/.screen-urlview" "screen urlview $HOME/.screen-urlview"
# ------------------------------------------------------------------------------
# TERMINAL SETTINGS
# ------------------------------------------------------------------------------
# The vt100 description does not mention "dl". *sigh*
termcapinfo vt100 dl=5\E[M
# turn sending of screen messages to hardstatus off
hardstatus off
# Set the hardstatus prop on gui terms to set the titlebar/icon title
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
# use this for the hard status string
hardstatus string "%h%? users: %u%?"
# An alternative hardstatus to display a bar at the bottom listing the
# windownames and highlighting the current windowname in blue. (This is only
# enabled if there is no hardstatus setting for your terminal)
#
#hardstatus lastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
# set these terminals up to be 'optimal' instead of vt100
termcapinfo xterm*|linux*|rxvt*|Eterm* OP
# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
# in bug #134198)
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
# To get screen to add lines to xterm's scrollback buffer, uncomment the
# following termcapinfo line which tells xterm to use the normal screen buffer
# (which has scrollback), not the alternate screen buffer.
#
#termcapinfo xterm|xterms|xs|rxvt ti@:te@
# Enable non-blocking mode to better cope with flaky ssh connections.
defnonblock 5
# ------------------------------------------------------------------------------
# STARTUP SCREENS
# ------------------------------------------------------------------------------
# Example of automatically running some programs in windows on screen startup.
#
# The following will open top in the first window, an ssh session to monkey
# in the next window, and then open mutt and tail in windows 8 and 9
# respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

1
debian/shells.d/screen vendored Normal file
View file

@ -0,0 +1 @@
/usr/bin/screen

1
debian/source/format vendored Normal file
View file

@ -0,0 +1 @@
3.0 (quilt)

6
debian/source/lintian-overrides vendored Normal file
View file

@ -0,0 +1,6 @@
# False positives (long lines that are clearly no issue)
screen source: very-long-line-length-in-source-file 773 > 512 [debian/tests/t/bug-982435-CVE-2021-26937.crash:1]
screen source: very-long-line-length-in-source-file 982 > 512 [etc/completer.zsh:40]
# These are binary files
screen source: very-long-line-length-in-source-file * > 512 [utf8encodings/*]

1
debian/source/options vendored Normal file
View file

@ -0,0 +1 @@
extend-diff-ignore=config\.h\.in

2
debian/tests/control vendored Normal file
View file

@ -0,0 +1,2 @@
Test-Command: prove -v debian/tests/t
Depends: @, perl

51
debian/tests/t/boilerplate.sh vendored Normal file
View file

@ -0,0 +1,51 @@
# -*- sh -*-
TESTNAME=`basename $0`.`mktemp -u XXXXXXXX`
SCREEN="screen -S $TESTNAME"
SCREENRC=/dev/null
export SCREENRC
count=0
check_exit_code_true() {
if [ "$?" != 0 ]; then echo -n 'not '; fi; echo ok $(( count+=1 )) - "$@"
}
check_exit_code_false() {
if [ "$?" = 0 ]; then echo -n 'not '; fi; echo ok $(( count+=1 )) - "$@"
}
has_session_with_testname() {
screen -ls | fgrep -q "$TESTNAME"
}
session_exists_2_tests() {
screen -ls | fgrep -q '(Detached)'
check_exit_code_true Detached session found
has_session_with_testname
check_exit_code_true Session has expected session name
}
create_session_3_tests() {
$SCREEN -d -m "$@"
check_exit_code_true Create session
sleep 1
session_exists_2_tests
}
kill_session_2_tests() {
$SCREEN -X quit
check_exit_code_true Quit command sent to session
sleep 1
has_session_with_testname
check_exit_code_false Session is gone
}
has_window_number_zero() {
$SCREEN -Q windows | egrep -q '^0 '
check_exit_code_true Session has a window with id 0
}

1
debian/tests/t/bug-600246.txt vendored Normal file
View file

@ -0,0 +1 @@
が..

1
debian/tests/t/bug-677512.txt vendored Normal file
View file

@ -0,0 +1 @@
a̅e

View file

@ -0,0 +1 @@
円ᆆᆿ忿ᇎᆿ忘ᆿᆿ忿ᆾᆿ応ᆿᆿ忿ᆷᆿ忑ᆿᆿ忿ᇠᆿ冺ᆿᆿ忿ᇇᆿ忟ᆿᆿ忿ᆺᆿ忳ᆿᆿ忿ᅳᆿ忣ᆿᆿ忿ᇯᆿ忇ᆿᆿ忿ᇅᆿ忙ᆿᆿ忿ᆼᆿ忇ᆃᆿ忿ᅶᆿ忲ᆿᆿ忿ᇃᆿ忚ᆿᆿ忿ᆫᆿ忱ᆿᆿ忿ᆅᆿ念ᆿᆿ忿ᇐᆿ忺ᆿᆿ忿ᆆᆿ忡ᆿᆿ忿ᆀᆿ忀ᆿᆿ忿ᇳᆿ凿ᆿᆿ忿ᇨᆿ忄ᆿᆿ冁ᆿᆿ忿ᇛᆿ忿ᇁᆿ冿ᆿᆿ忷ᆿᆿ必ᆿᆿ忿ᇾᆿ徆ᆿᆿ忿ᇕᆿ念ᆆᆿ忿ᅿᆿ冿ᆆᆿ忿ᆃᆿ忬ᆿᆿ忿ᆔᆿ忩ᆿᆿ冥ᆿᆿ忿ᆰᆿ忿ᆮᆿ心ᆿᆿ忿ᅱᆿ忼ᆿᆿ忿ᆠᆿ忻ᆿᆿ忿ᆙᆿ忳ᆆᆿ忿ᆂᆿ忌ᆿᆿ忿ᇔᆿ忺ᆾᆿ忿ᇲᆿ忀ᆤᆿ忿ᆄᆿ徿ᆿᆿ忿ᆉᆿ忿ᆞᆿ忿ᆎᆿ忘ᆶᆿ冊ᆿᆿ志ᆿᆿ忿ᆯᆿ忆ᆿᆿ忿ᇤᆿ忬ᆠᆿ忆ᆃᆿ忄ᆻᆿ冸ᆿᆿ忯ᆿᆿ冽ᆿᆿ忏ᆿᆿ忿ᆇᆿ忿ᆬᆿ忿ᇱᆿ快ᆿᆿ忿ᇞᆿ忿ᆜᆿ忀ᆠᆿ忯ᆞᆿ忿ᆨᆿ忹ᆿᆿ忿ᆪᆿ冴ᆿᆿ忿ᆐᆿ忿ᇰᆿ忿ᅼᆿ忖ᆿᆿ忿ᇻᆿ心ᆩᆿ忿ᇧᆿ忠ᆿᆿ忿ᇈᆿ忔ᆿᆿ忺ᆐᆿ忝ᆿᆿ忿ᇺᆿ忴ᆿᆿ忿ᆕᆿ忿ᆵᆿ忿ᇶᆿ忎ᆿᆿ忿ᅾᆿ忷ᆆᆿ忿ᆖᆿ忛ᆿᆿ忿ᇉᆿ忞ᆿᆿ忿ᇷᆿ忭ᆿᆿ冤ᆿᆿ忿ᆍᆿ忿ᇭᆿ忿ᇖᆿ冰ᆿᆿ忢ᆿᆿ忱ᆾᆿ忦ᆿᆿ忿ᆒᆿ忸ᆿᆿ冿ᆯᆿ忿ᆏᆿ忌ᆯᆿ忪ᆿᆿ忿ᇿᆿ忇ᆙᆿ忸ᆔᆿ徿ᆆᆿ忿ᆘᆿ忩ᆅᆿ忿ᇄᆿ忿ᇏᆿ忿ᆭᆿ忌ᆸᆿ忿ᆛᆿ忹ᆆᆿ忿ᅲᆿ忄ᆺᆿ忿ᇩᆿ忬ᆦᆿ忸ᆉᆿ忁ᆿᆿ忿ᆱᆿ凿ᆆᆿ忿ᇦᆿ忿ᆢᆿ忇ᆾᆿ忰ᆿᆿ忿ᆣᆿ忺ᆆᆿ忷ᆭᆿ忺ᆉᆿ忿ᆶᆿ忠ᆱᆿ忿ᇼᆿ忘ᆼᆿ忎ᆉᆿ忚ᆛᆿ忥ᆿᆿ忤ᆿᆿ忣ᆉᆿ忡ᆁᆿ忇ᆼᆿ念ᆐᆿ忿ᆿᆿ徽ᆿᆿ冿ᆐᆿ忿ᇒᆿ忿ᆧᆿ忒ᆿᆿ忿ᇜᆿ忨ᆿᆿ忿ᆦᆿ忿ᇙᆿ忿ᆈᆿ忸ᆆᆿ忿ᆲᆿ忡ᆉᆿ忿ᇘᆿ忥ᆆᆿ忿ᇥᆿ忊ᆿᆿ心ᆼᆿ忠ᆐᆿ忿ᆳᆿ忄ᆠᆿ忿ᆁᆿ志ᆱᆿ忿ᇆᆿ忤ᆆᆿ忴ᆶᆿ忿ᆓᆿ忿ᆸᆿ忳ᆻᆿ忿ᇸᆿ忮ᆿᆿ忿ᆤᆿ忰ᆎᆿ忻ᆲᆿ忇ᆞᆿ忇ᆱᆿ忋ᆿᆿ忺ᆅᆿ忴ᆆᆿ忿ᆥᆿ忇ᆄᆿ忿ᆹᆿ忧ᆿᆿ応ᆠᆿ忿ᅻᆿ忿ᆩᆿ忰ᆇᆿ忲ᆄᆿ忕ᆿᆿ応ᆕᆿ忿ᇹᆿ忿ᆊᆿ忌ᆇᆿ忿ᇊᆿ忣ᆃᆿ忆ᆱᆿ忻ᆆᆿ忿ᆚᆿ忰ᆱᆿ忿ᆌᆿ忶ᆿᆿ忿ᆻᆿ忿ᆑᆿ忞ᆳᆿ忶ᆆᆿ冇ᆿᆿ忽ᆿᆿ忿ᆟᆿ志ᆼᆿ忿ᇮᆿ忨ᆇᆿ円ᆿᆿ忿ᅰᆿ忇ᆇᆿ忤ᆯ忿ᆿ

View file

@ -0,0 +1,18 @@
#!/bin/sh
echo 1..2
. `dirname $0`/boilerplate.sh
for enc in C C.UTF-8 ; do
LC_ALL=$enc
export LC_ALL
$SCREEN cat debian/tests/t/bug-982435-CVE-2021-26937.crash > /dev/null 2>&1
sleep 1
screen -ls | fgrep -q 'Dead ???'
check_exit_code_false "No dead session found after triggering a CVE-2021-26937 crash (LC_ALL=$enc)"
# Cleanup in case of crash
screen -wipe > /dev/null 2>&1 || true
done

17
debian/tests/t/command.t vendored Executable file
View file

@ -0,0 +1,17 @@
#!/bin/sh
echo 1..4
. `dirname $0`/boilerplate.sh
$SCREEN -D -m -s /bin/true sleep 2 &
check_exit_code_true Create session
sleep 1
session_exists_2_tests
sleep 2
has_session_with_testname
check_exit_code_false Session is gone

9
debian/tests/t/create-list-quit.t vendored Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
echo 1..6
. `dirname $0`/boilerplate.sh
create_session_3_tests
has_window_number_zero
kill_session_2_tests

20
debian/tests/t/dash-Dm.t vendored Executable file
View file

@ -0,0 +1,20 @@
#!/bin/sh
echo 1..5
. `dirname $0`/boilerplate.sh
$SCREEN -D -m &
check_exit_code_true Create session
sleep 1
session_exists_2_tests
$SCREEN -X quit
check_exit_code_true Quit command sent to session
sleep 1;
has_session_with_testname
check_exit_code_false Session is gone

9
debian/tests/t/dash-U.t vendored Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
echo 1..6
. `dirname $0`/boilerplate.sh
create_session_3_tests -U
has_window_number_zero
kill_session_2_tests

View file

@ -0,0 +1 @@
e̤̒

23
debian/tests/t/unicode-output.t vendored Normal file
View file

@ -0,0 +1,23 @@
#!/bin/sh
echo 1..$(ls -1 $(dirname $0)/*.txt | wc -l)
. `dirname $0`/boilerplate.sh
LC_ALL=C.UTF-8
export LC_ALL
TERM=xterm
export TERM
for file in $(ls -1 $(dirname $0)/*.txt) ; do
echo === BEGIN $file ===
cat $file
echo === END $file ===
echo "=== BEGIN $file (escaped) ==="
cat -v $file
echo "=== END $file (escaped) ==="
script -c "$SCREEN cat $file" ${file}.output | cat -v
fgrep -F -f $file -q ${file}.output
check_exit_code_true Found contents of $file in ${file}.output
rm -f ${file}.output
done

11
debian/tests/t/version-help.t vendored Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
echo 1..2
. `dirname $0`/boilerplate.sh
screen -v | fgrep -q 'Screen version '
check_exit_code_true Outputs version
screen -h | fgrep -q 'Options:'
check_exit_code_true Outputs help

57
debian/udeb/screenrc vendored Normal file
View file

@ -0,0 +1,57 @@
# /etc/screenrc
# Stripped down version for udeb (debian-installer)
# 2016 Roger Shimizu <rogershimizu@gmail.com>
# SETTINGS
startup_message off
#defflow on # will force screen to process ^S/^Q
deflogin on
#autodetach off
vbell on
vbell_msg " Wuff ---- Wuff!! "
defscrollback 1024
# KEYBINDINGS
# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
# TERMINAL SETTINGS
hardstatus alwaysfirstline "%{= kG}[%= %{= kw}%?%-Lw%?%{r} (%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %M %d %{W}%c %{g}]"
# Enable non-blocking mode to better cope with flaky ssh connections.
defnonblock 5
# STARTUP SCREENS
# window 0: maps to window 1
# window 1: debian installer
# window 2: shell
# window 3: shell
# window 4: syslog
shell /bin/sh
defutf8 on
bind c screen 1
bind ^c screen 1
bind 0 select 1
screen -t start 0 sleep 1
screen -t shell 2 /bin/sh
screen -t shell 3 /bin/sh
screen -t log 4 tail -f /var/log/syslog
shelltitle shell

11
debian/upstream/metadata vendored Normal file
View file

@ -0,0 +1,11 @@
%YAML 1.1
---
# https://wiki.debian.org/UpstreamMetadata
Bug-Database: https://savannah.gnu.org/bugs/?group=screen
Changelog: https://git.savannah.gnu.org/cgit/screen.git/plain/src/ChangeLog?h=screen-v4
Contact: screen-devel@gnu.org
FAQ: http://aperiodic.net/screen/faq
Name: GNU Screen
Homepage: https://www.gnu.org/software/screen/
Repository: git://git.sv.gnu.org/screen.git -b screen-v4
Repository-Browse: https://git.savannah.gnu.org/cgit/screen.git/?h=screen-v4

74
debian/upstream/signing-key.asc vendored Normal file
View file

@ -0,0 +1,74 @@
Member GPG keyring of screen group.
Note that this keyring is not intended for checking releases of that group.
Use Group Release Keyring instead.
GPG keys of Amadeusz Sławiński <amade>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQINBFLYEMQBEADBOvTLwx6BIMq+/AvPWoYwy8DXF5RWe//+x/Mo9CspabLgoJdx
IN5rzPdzHpQ03jMoqliDz2m8Pq1aO10t8TRIpNpBXV2rJ9wYMFWW8jhgBA4+TDaL
2ny7JhXgd0ijtuoZBr2oLUzNQygCk/AG5cL4KiosBnpQGLXRTZgDTpMmt+6mIhgH
wa/TuYmqBy0IFiXe6cT8h+kaV/miPJIDpt01wUltBGCl+vNm+MJaTR1w54L5UKVF
WS4tYPMmsEQ03a8ooDKyqADMqV18b0onZcAY7I7Cx4Fxn5I/u6kFZXwQvt0hHHFy
BDlfR2JzASFxRqmPSc3TdSbDzeszd5aadX4GpA4XCvt0D+jpZWScs7IQMYecyGzO
U1UBAiMK3OSBIq4TW29LsHgQq1CLyZdMjX+3zy6NkiZKOAGRzq4TYCURlZbLg0NB
T11iyaZq9NXrnYp1VlYDSJZFvbji5/eoMO8L7IOgmjMNavSirD03gSTbWMcFdKtB
jZf11zKKj8YHmvccM8lmTny0haTXwZ1NxwVPo2uGlhfe4PFXd0oOp61RST+RXrYf
Ub4tKCKjoRKVAaXX6H3vy54RTXHxtxIuBJMzyG2xFohr7nPwokXm9nvdmunsA/NM
c5sDsLNfCDB7loNtdSGn5i9vNHp1E4x49ojecE/44YAwc8043ftFpbLLiQARAQAB
tCdBbWFkZXVzeiBTxYJhd2nFhHNraSA8YW1hZGVAYXNtYmxyLm5ldD6JAjcEEwEK
ACEFAlLYEMQCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQtwijg8U+86QK
Ow//bFDY/OCodRmJ/2x7MDAgE7SoRTJxftxvbILGxabTLM7sIagB23TCuWBzxj+i
oZiQVMP9eonBHQni3mMgsK5kwqZDBD52uuyeHKk3uF9eWy142DHgPRZ5RiQZA5uX
AK3pHaSXJlkWV6uHx6mxmUOC1B6waiUAJQTA+iG0h2jym32V6U8X1nDfTbRfIj3y
RXH/hKYFbsmZwJHA0n6o4GjvSBpCN2w56SdOShuujdD89p2vpXyvuGJk5i/dKthB
dhoSiMZLH7TZ8/Q6eqX7kzXvPNLXEaRl+CjR+FhBl679CRc83hbPfsZScXEvLCl0
DyHIZBaLGaUlCbFN4tcRDyHeq4jHEcL+0BjQY0I3ZI+oMPbDycCPRjKF2OorvzYM
6+ILX/ly+NBDMAwP/QZ43FmgGkUF0fjtLEl8rXk/lzZh8i/xCBuQlmDFFDgXUi8v
zRzMz0wEY1nsB8j6aQISlvZm7PnjgRQ39vHX+ERCnjtp0FRHdCksJfiS01xPjfq9
xcgmE56u6E6yMXKWx23Eo1mir5oAhLOWiVNDUxJEVPTP/k5cYbohvjkweIRUArFI
K/mG2Bog+bjaZuK7cgfilR7+9IjMPTtBWl4KAy059X20CVW2VEuqLkpbp6evw20C
1IE6kCeL7WMcafSVXbPe+xwHx4ba1haLEfHGtfyWNkuYihm5Ag0EUtgQxAEQALRi
fHNnjhmtlGG1pt+97hHtYNRhItl/Y1+jGJekCQvz4PWEPy9rPtMg5UvkhU1HIjg4
fiFstmYFATZ+moH+xTQbq6Cqgbnbg6iEj7S7ymJsPZ3/aLzX9A1MN0S+QgIIYiSp
Y6U9JE/RJhnnRsMMtBjgUJuaI3ox9SDUio1v3BGyefvLb5tgqQ2Yzdur4IjGUXaY
vRhDuyRz8Ldnee2bAqODuhgIhR/no2e+D3O3WkYMJ4FioA8Up/gmMbNrA4/ACSJL
ATciEwdnqpHdxviCWTrIadxt2DznactpAqGovMQLLxoHbC3GKiuocqRNanwoL4U5
OrpFEJfTK7riG4oYkMh/xt4BUbM2U2zYv2EcznXmUalD7vRqdatXonzGZ6X0KRHn
l77kTJ9iAIZaz5eZ0YRbV2VdpUH6s4+n9G1+zcGYBSSkxMsrsjAaUfZ/akK/BTlj
K37ta9vHn3tuqea72FoBUdhQ1v4zdxNh90fyA0VNS5NGf896fdAS6LAlXtEBf2hE
dyZ1MbBJPA/GE5YHdDRTuZobfoPgoMGcytj0NodA4pAcCtlWyC+OBmGpBv3LPQyz
tF1/xf9Xc5tAspXeraM+exKFnY5S6wzE7n4ElDT3H+9/IhZHSTEd55xvOLxrHdiI
YZNQOjFXR5YPqEK99FOH3BbWJcqC3CcbLTCidCy5ABEBAAGJAh8EGAEKAAkFAlLY
EMQCGwwACgkQtwijg8U+86TXRxAAhP0GZhupRDnuSK9VwuJlomL/eZfCRHiPIgnX
Ur/ytA9FkVNRvU2mk/iJXEUSEmT9kZpa3uE/eNqAW0ZFXmSMKXgYbzMf55nX8/M9
31a1zpi1tRs6hfhDM6v33VYoomAPwrRL/5bDcKnmZf5RRKIvK1WB+6jFsBS56d0d
M7lm6UQOVHOYvpYM22w+w04bKZ9ohiizc5FyqwQGh3TBlw8B+MXz3BXCFElPtBkB
1wyavOX9AGK+ZhwNuuT1ecIdLKZ7OXC4KQAidom2LHC5MhHYAYbMGVuspRk457AP
IK6e4qBiUbg35S1+/XOAl1qavtTkgLNIz2c4TggWPtfDBmfPrpkRvF1+i8PR+GWp
kpUlWVGNchG3fCiZq1Vxp+19V79TfwvB93DgjKCeTilT5RI6tF285C7Ri608VvpJ
kNCTt6xcwl7gknhjp1yxIEnzo6XAx4ArU0J8Vin47vQf8GikACazds+ugBt+buaK
eyWNqTfgX8X5SWDGBddW2MAH9i1tdJwiS1mvs07SCq+bo+c+0xyvFdL3WFGEB74Z
akEUDBbjrDewemAiQI2hNHbU6di49/bIEMuOr950Z0ttJT5SOWNbzh/NnFeMLl5M
i7Suaq+3Tmhx2CTmDkulmIYwop1KvGxTSH44GatsHYIbYCHlj6uc5Ve7ro9N6ceC
sBXW+7Q=
=+RA6
-----END PGP PUBLIC KEY BLOCK-----
GPG keys of Alexander Naumov <anaumov>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEY7LR/BYJKwYBBAHaRw8BAQdA4m5kbiTCVBIvof8H5gLfnthrzQUThO1Jf6Cg
AXmKk8O0MEFsZXhhbmRlciBOYXVtb3YgPGFsZXhhbmRlcl9uYXVtb3ZAb3BlbnN1
c2Uub3JnPoiaBBMWCgBCFiEEULhhs+kw7DN1DZDtkQgyl0qSoRwFAmOy0fwCGwMF
CRLMAwAFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEJEIMpdKkqEcmR8A
/iPUUq/NOZDK+OGyevpgOjM4ql27sNEUw2s5lpSrtSUWAPwPp/z6MPUaCotey8DV
/9NNY4l2WqZFSEsXOod7ymytD7g4BGOy0fwSCisGAQQBl1UBBQEBB0Cd30iQQ4mh
td+nUWAq/MuTLNStoJpuptQx43LE97teQgMBCAeIfgQYFgoAJhYhBFC4YbPpMOwz
dQ2Q7ZEIMpdKkqEcBQJjstH8AhsMBQkSzAMAAAoJEJEIMpdKkqEcKzQA/1YwYRl8
arfkUA1IwJQajL9IgAyzYmHXKbLNxnTudUvgAP9uBpUML3BzCw097e49P3YcPncf
rmvea+Jn9PDEUQQlAg==
=hWrz
-----END PGP PUBLIC KEY BLOCK-----

6
debian/watch vendored Normal file
View file

@ -0,0 +1,6 @@
version=4
opts=pgpsigurlmangle=s/$/.sig/ \
https://ftp.gnu.org/gnu/screen/screen-([\d\.]+)\.tar\.gz
#opts=pgpsigurlmangle=s/$/.sig/ \
#http://download.savannah.gnu.org/releases/screen/screen-([\d\.]+)\.tar\.gz