Adding debian version 4.9.1-3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
e88291c4cd
commit
ea1ae6b476
64 changed files with 4702 additions and 0 deletions
31
debian/NEWS
vendored
Normal file
31
debian/NEWS
vendored
Normal 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
182
debian/README.Debian
vendored
Normal 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
12
debian/README.source
vendored
Normal 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
5
debian/README.terminfo
vendored
Normal 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
1766
debian/changelog
vendored
Normal file
File diff suppressed because it is too large
Load diff
12
debian/clean
vendored
Normal file
12
debian/clean
vendored
Normal 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
50
debian/control
vendored
Normal 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
42
debian/copyright
vendored
Normal 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
9
debian/gitlab-ci.yml
vendored
Normal 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
40
debian/patches/03disable-utmp.patch
vendored
Normal 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
|
||||
|
45
debian/patches/05prefer-libtinfo-over-libcurses.patch
vendored
Normal file
45
debian/patches/05prefer-libtinfo-over-libcurses.patch
vendored
Normal 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
198
debian/patches/11replace_doc_paths.patch
vendored
Normal 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
17
debian/patches/13split_info_files.patch
vendored
Normal 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
357
debian/patches/26source_encoding.patch
vendored
Normal 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
15
debian/patches/45suppress_remap.patch
vendored
Normal 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)
|
57
debian/patches/60-screen-4.2.1-debian4.1.0-compatibility.patch
vendored
Normal file
57
debian/patches/60-screen-4.2.1-debian4.1.0-compatibility.patch
vendored
Normal 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)
|
38
debian/patches/61-default-PATH_MAX-if-undefined-for-hurd.patch
vendored
Normal file
38
debian/patches/61-default-PATH_MAX-if-undefined-for-hurd.patch
vendored
Normal 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
|
24
debian/patches/63-add-utempter-switch.patch
vendored
Normal file
24
debian/patches/63-add-utempter-switch.patch
vendored
Normal 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
147
debian/patches/65-wcwidth.patch
vendored
Normal 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)));
|
74
debian/patches/80_session_creation_docs.patch
vendored
Normal file
74
debian/patches/80_session_creation_docs.patch
vendored
Normal 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}
|
77
debian/patches/81_session_creation_util.patch
vendored
Normal file
77
debian/patches/81_session_creation_util.patch
vendored
Normal 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);
|
||||
+}
|
161
debian/patches/82_session_creation_core.patch
vendored
Normal file
161
debian/patches/82_session_creation_core.patch
vendored
Normal 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;
|
281
debian/patches/85_bracketed-paste-patch-by-Unit193_dpaste.com_5KJ572GZM.patch
vendored
Normal file
281
debian/patches/85_bracketed-paste-patch-by-Unit193_dpaste.com_5KJ572GZM.patch
vendored
Normal 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
|
134
debian/patches/fix-CVE-2025-46802-attacher.c-prevent-temporary-0666.patch
vendored
Normal file
134
debian/patches/fix-CVE-2025-46802-attacher.c-prevent-temporary-0666.patch
vendored
Normal 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);
|
||||
}
|
||||
|
118
debian/patches/fix-CVE-2025-46804-avoid-file-existence-test-informa.patch
vendored
Normal file
118
debian/patches/fix-CVE-2025-46804-avoid-file-existence-test-informa.patch
vendored
Normal 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;
|
113
debian/patches/fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch
vendored
Normal file
113
debian/patches/fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch
vendored
Normal 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
20
debian/patches/series
vendored
Normal 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
69
debian/rules
vendored
Executable 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
1
debian/screen-udeb.install
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
debian/udeb/screenrc etc/
|
2
debian/screen-udeb.lintian-overrides
vendored
Normal file
2
debian/screen-udeb.lintian-overrides
vendored
Normal 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
28
debian/screen.bug-script
vendored
Executable 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
13
debian/screen.dirs
vendored
Normal 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
8
debian/screen.docs
vendored
Normal 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
2
debian/screen.examples
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
etc/etcscreenrc
|
||||
etc/screenrc
|
1
debian/screen.info
vendored
Normal file
1
debian/screen.info
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
build/doc/screen.info*
|
49
debian/screen.init
vendored
Normal file
49
debian/screen.init
vendored
Normal 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
3
debian/screen.install
vendored
Normal 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
19
debian/screen.lintian-overrides
vendored
Normal 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
1
debian/screen.manpages
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
doc/screen.1
|
35
debian/screen.postinst
vendored
Normal file
35
debian/screen.postinst
vendored
Normal 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
16
debian/screen.postrm
vendored
Normal 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
1
debian/screen.screen-cleanup.tmpfiles
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
d /run/screen 0777 root utmp
|
108
debian/screenrc
vendored
Normal file
108
debian/screenrc
vendored
Normal 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
1
debian/shells.d/screen
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/usr/bin/screen
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
6
debian/source/lintian-overrides
vendored
Normal file
6
debian/source/lintian-overrides
vendored
Normal 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
1
debian/source/options
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
extend-diff-ignore=config\.h\.in
|
2
debian/tests/control
vendored
Normal file
2
debian/tests/control
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
Test-Command: prove -v debian/tests/t
|
||||
Depends: @, perl
|
51
debian/tests/t/boilerplate.sh
vendored
Normal file
51
debian/tests/t/boilerplate.sh
vendored
Normal 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
1
debian/tests/t/bug-600246.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
が..
|
1
debian/tests/t/bug-677512.txt
vendored
Normal file
1
debian/tests/t/bug-677512.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
a̅e
|
1
debian/tests/t/bug-982435-CVE-2021-26937.crash
vendored
Normal file
1
debian/tests/t/bug-982435-CVE-2021-26937.crash
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
円ᆆᆿ忿ᇎᆿ忘ᆿᆿ忿ᆾᆿ応ᆿᆿ忿ᆷᆿ忑ᆿᆿ忿ᇠᆿ冺ᆿᆿ忿ᇇᆿ忟ᆿᆿ忿ᆺᆿ忳ᆿᆿ忿ᅳᆿ忣ᆿᆿ忿ᇯᆿ忇ᆿᆿ忿ᇅᆿ忙ᆿᆿ忿ᆼᆿ忇ᆃᆿ忿ᅶᆿ忲ᆿᆿ忿ᇃᆿ忚ᆿᆿ忿ᆫᆿ忱ᆿᆿ忿ᆅᆿ念ᆿᆿ忿ᇐᆿ忺ᆿᆿ忿ᆆᆿ忡ᆿᆿ忿ᆀᆿ忀ᆿᆿ忿ᇳᆿ凿ᆿᆿ忿ᇨᆿ忄ᆿᆿ冁ᆿᆿ忿ᇛᆿ忿ᇁᆿ冿ᆿᆿ忷ᆿᆿ必ᆿᆿ忿ᇾᆿ徆ᆿᆿ忿ᇕᆿ念ᆆᆿ忿ᅿᆿ冿ᆆᆿ忿ᆃᆿ忬ᆿᆿ忿ᆔᆿ忩ᆿᆿ冥ᆿᆿ忿ᆰᆿ忿ᆮᆿ心ᆿᆿ忿ᅱᆿ忼ᆿᆿ忿ᆠᆿ忻ᆿᆿ忿ᆙᆿ忳ᆆᆿ忿ᆂᆿ忌ᆿᆿ忿ᇔᆿ忺ᆾᆿ忿ᇲᆿ忀ᆤᆿ忿ᆄᆿ徿ᆿᆿ忿ᆉᆿ忿ᆞᆿ忿ᆎᆿ忘ᆶᆿ冊ᆿᆿ志ᆿᆿ忿ᆯᆿ忆ᆿᆿ忿ᇤᆿ忬ᆠᆿ忆ᆃᆿ忄ᆻᆿ冸ᆿᆿ忯ᆿᆿ冽ᆿᆿ忏ᆿᆿ忿ᆇᆿ忿ᆬᆿ忿ᇱᆿ快ᆿᆿ忿ᇞᆿ忿ᆜᆿ忀ᆠᆿ忯ᆞᆿ忿ᆨᆿ忹ᆿᆿ忿ᆪᆿ冴ᆿᆿ忿ᆐᆿ忿ᇰᆿ忿ᅼᆿ忖ᆿᆿ忿ᇻᆿ心ᆩᆿ忿ᇧᆿ忠ᆿᆿ忿ᇈᆿ忔ᆿᆿ忺ᆐᆿ忝ᆿᆿ忿ᇺᆿ忴ᆿᆿ忿ᆕᆿ忿ᆵᆿ忿ᇶᆿ忎ᆿᆿ忿ᅾᆿ忷ᆆᆿ忿ᆖᆿ忛ᆿᆿ忿ᇉᆿ忞ᆿᆿ忿ᇷᆿ忭ᆿᆿ冤ᆿᆿ忿ᆍᆿ忿ᇭᆿ忿ᇖᆿ冰ᆿᆿ忢ᆿᆿ忱ᆾᆿ忦ᆿᆿ忿ᆒᆿ忸ᆿᆿ冿ᆯᆿ忿ᆏᆿ忌ᆯᆿ忪ᆿᆿ忿ᇿᆿ忇ᆙᆿ忸ᆔᆿ徿ᆆᆿ忿ᆘᆿ忩ᆅᆿ忿ᇄᆿ忿ᇏᆿ忿ᆭᆿ忌ᆸᆿ忿ᆛᆿ忹ᆆᆿ忿ᅲᆿ忄ᆺᆿ忿ᇩᆿ忬ᆦᆿ忸ᆉᆿ忁ᆿᆿ忿ᆱᆿ凿ᆆᆿ忿ᇦᆿ忿ᆢᆿ忇ᆾᆿ忰ᆿᆿ忿ᆣᆿ忺ᆆᆿ忷ᆭᆿ忺ᆉᆿ忿ᆶᆿ忠ᆱᆿ忿ᇼᆿ忘ᆼᆿ忎ᆉᆿ忚ᆛᆿ忥ᆿᆿ忤ᆿᆿ忣ᆉᆿ忡ᆁᆿ忇ᆼᆿ念ᆐᆿ忿ᆿᆿ徽ᆿᆿ冿ᆐᆿ忿ᇒᆿ忿ᆧᆿ忒ᆿᆿ忿ᇜᆿ忨ᆿᆿ忿ᆦᆿ忿ᇙᆿ忿ᆈᆿ忸ᆆᆿ忿ᆲᆿ忡ᆉᆿ忿ᇘᆿ忥ᆆᆿ忿ᇥᆿ忊ᆿᆿ心ᆼᆿ忠ᆐᆿ忿ᆳᆿ忄ᆠᆿ忿ᆁᆿ志ᆱᆿ忿ᇆᆿ忤ᆆᆿ忴ᆶᆿ忿ᆓᆿ忿ᆸᆿ忳ᆻᆿ忿ᇸᆿ忮ᆿᆿ忿ᆤᆿ忰ᆎᆿ忻ᆲᆿ忇ᆞᆿ忇ᆱᆿ忋ᆿᆿ忺ᆅᆿ忴ᆆᆿ忿ᆥᆿ忇ᆄᆿ忿ᆹᆿ忧ᆿᆿ応ᆠᆿ忿ᅻᆿ忿ᆩᆿ忰ᆇᆿ忲ᆄᆿ忕ᆿᆿ応ᆕᆿ忿ᇹᆿ忿ᆊᆿ忌ᆇᆿ忿ᇊᆿ忣ᆃᆿ忆ᆱᆿ忻ᆆᆿ忿ᆚᆿ忰ᆱᆿ忿ᆌᆿ忶ᆿᆿ忿ᆻᆿ忿ᆑᆿ忞ᆳᆿ忶ᆆᆿ冇ᆿᆿ忽ᆿᆿ忿ᆟᆿ志ᆼᆿ忿ᇮᆿ忨ᆇᆿ円ᆿᆿ忿ᅰᆿ忇ᆇᆿ忤ᆯ忿ᆿ
|
18
debian/tests/t/bug-982435-CVE-2021-26937.t
vendored
Normal file
18
debian/tests/t/bug-982435-CVE-2021-26937.t
vendored
Normal 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
17
debian/tests/t/command.t
vendored
Executable 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
9
debian/tests/t/create-list-quit.t
vendored
Executable 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
20
debian/tests/t/dash-Dm.t
vendored
Executable 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
9
debian/tests/t/dash-U.t
vendored
Executable 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
|
1
debian/tests/t/subsequential-combining-diacritical.txt
vendored
Normal file
1
debian/tests/t/subsequential-combining-diacritical.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
e̤̒
|
23
debian/tests/t/unicode-output.t
vendored
Normal file
23
debian/tests/t/unicode-output.t
vendored
Normal 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
11
debian/tests/t/version-help.t
vendored
Executable 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
57
debian/udeb/screenrc
vendored
Normal 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
11
debian/upstream/metadata
vendored
Normal 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
74
debian/upstream/signing-key.asc
vendored
Normal 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
6
debian/watch
vendored
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue