commit: ee54ea3b8ef01d85b1fd8c8bbb468a03dc763da8 Author: Andrew Savchenko <bircoph <AT> gentoo <DOT> org> AuthorDate: Mon Jun 13 12:36:47 2016 +0000 Commit: Andrew Savchenko <bircoph <AT> gentoo <DOT> org> CommitDate: Mon Jun 13 12:36:47 2016 +0000 URL: https://gitweb.gentoo.org/dev/bircoph.git/commit/?id=ee54ea3b
screen: fix bug 585696 app-misc/screen/Manifest | 8 + .../screen/files/screen-4.3.0-no-utempter.patch | 14 + app-misc/screen/files/screen-4.3.1-ansi.c.patch | 37 +++ app-misc/screen/files/screen-4.3.1-termlen.patch | 164 ++++++++++ app-misc/screen/files/screenrc | 356 +++++++++++++++++++++ app-misc/screen/metadata.xml | 35 ++ app-misc/screen/screen-4.3.1-r1.ebuild | 159 +++++++++ app-misc/screen/screen-9999.ebuild | 141 ++++++++ profiles/categories | 1 + 9 files changed, 915 insertions(+) diff --git a/app-misc/screen/Manifest b/app-misc/screen/Manifest new file mode 100644 index 0000000..9dc7935 --- /dev/null +++ b/app-misc/screen/Manifest @@ -0,0 +1,8 @@ +AUX screen-4.3.0-no-utempter.patch 363 SHA256 c8e4b1a03175fb2af3e13fa514b8a5456b53905a7ca51587195a62cb8d60e1c9 SHA512 0b2e6a2b54e6155e217ab44a0d8314afafd97fae684fbc2875c0f4d21df29cb259ea4023343e92da16dd3a2bf11ec6d06e677d765748299d1633aa1b9261a604 WHIRLPOOL c59a0c3f32ad50e15cd5e902b7b600cda18d2b676209628e7b96120866e7aba968264fbf8b35dc3e252b9fd63f21611005c9ec46cddc5e42b30c8da29a5e5186 +AUX screen-4.3.1-ansi.c.patch 657 SHA256 806fa628fbbfcf4a63153e0f2a4979ad02d9531151817ef5183c34c4d12adb26 SHA512 ca746103856afd2e93eff8b5b81fa1f4f83c9a89511ce2bd88a6ebfb4becd858da97df48c2939ec2bc631d17e98613f252ca92f1e53f5ad5358f118c449ab545 WHIRLPOOL 39ff78cb6aadf4fe8a7a3cdfb44f7fb656d497a60d3809bd751b7ba0fdb3ae9ebf11ee93e663a1f713fe3e16e34792e10670825eda36754be46dc7fcecc0e810 +AUX screen-4.3.1-termlen.patch 5928 SHA256 1dc2d737105e2571fa7cfc87b417319fdba415fc355228d9a581aa045b807f43 SHA512 23b22ccb24be133f2885bd270e3f24e547d5db78c95c77ffe18369162f497ab12c5afd897ff8890588d3734524a5c93db688d08067529a093b84ca6931c02d88 WHIRLPOOL 0a7afacc026c49b1d5794ef7383b85791ea3ce7fc8b54f33cc90f0811f6f3a8160e28b230b6527d08c7c40986e23bdf96d227c46a5a9b715480871fac50dbfbf +AUX screenrc 10412 SHA256 191d91f9fd1e676525a9e1a3bdc5ac73283f948caf74b4bb6e0cfcecbe4798bb SHA512 06fbec5e28480a2c369330fac0c94faa47e5d28e037d9fefd0cb3e813002c504866dc8ac86872b7ac6f16059a219e396a9c425b578b8afe882153ddb506158f7 WHIRLPOOL e05785d9810a709ccd189bbf1557022bd91f653ddb2f138e54286fbbc11ddbbedf2276d2b8bc975a8ff1ac024ab24d955a6b3055cf5cd2dfb445c35484e90f09 +DIST screen-4.3.1.tar.gz 845958 SHA256 fa4049f8aee283de62e283d427f2cfd35d6c369b40f7f45f947dbfd915699d63 SHA512 8e8a25b23330a7d8e00fc9e6cc430f0eb3937ccf4183efbd6fd24e4dc04cc09b3acae45bfc24892faee433b18fa79b1cfe0211fd75c0d74ecf908f916bf774aa WHIRLPOOL b47f7538351028cc3a2ec7f69a9373e152fa7655c6ae9feb75ba46db3cdc9b7d58ce78043993b7f134da3a04754c5e52d1a77da4c30a8decda21c79cf5c50f51 +EBUILD screen-4.3.1-r1.ebuild 4175 SHA256 15a6ac7f86f6a99d946daf46cc29b4de31e46917a6ff20286a7a9019645fbb2f SHA512 6c4f85ac9eeab991f391215c9895c27330d636600b48d2acc1c6d2c90e18d24438b62c99cf7b1836c0b9ccd4e59e871315bf0c2e6ff40075421f1c74bf832ec7 WHIRLPOOL 01462e35f0e15a82c3732b4cd6d5adf116fbc5f19e9bddf1d7cab14f776908ed78676abdc76b032a5c088fa3a43ef5df5276d1882d8666317baa15099531f8f8 +EBUILD screen-9999.ebuild 3547 SHA256 a1331ae77d9bf29dbe671553c8ce6bc23e68d9a32c0138fabefdbe2fb5e8091d SHA512 5ac4c2bc01a5d69fe039fd5b6e51b911fc4f222f55a51198a3e7404768e3ad1a0aededcda864bc8706c5a834c2695cfbadbfb317632d20687f03f8179304e9cf WHIRLPOOL a47db36b0395a8db33a306f1a32c685a5e83ed27648b69f4fb274a24cc364c8b3cdb43fb070673f16fbb971c29958a51147a6f8df0d90d1952e30455b67118bb +MISC metadata.xml 1836 SHA256 984b97ece43237c29770f80c3aa7ab62fc2d426cffa8a2c0075674e935c19ce0 SHA512 e327b61501e6b496045d552851db574b519a99f56c9203c3376b886808a422f8e4aab23b667bcab0d1388ba7ea781c9c9e9f1d07b1426f113119c60cd70d0bcf WHIRLPOOL 545db9b6f0ad028845854bb55829c39b832251e8e790e910e64c2e00c8e8f554ee5fb7d98f1919b1f327fbae9b9e4e0978acef3a534e03de4b6b30f5bced07f6 diff --git a/app-misc/screen/files/screen-4.3.0-no-utempter.patch b/app-misc/screen/files/screen-4.3.0-no-utempter.patch new file mode 100644 index 0000000..9a830a2 --- /dev/null +++ b/app-misc/screen/files/screen-4.3.0-no-utempter.patch @@ -0,0 +1,14 @@ +--- screen-4.3.0/configure.ac ++++ screen-4.3.0/configure.ac +@@ -878,11 +878,6 @@ + #include <utmp.h> + #endif + ],[struct utmp u; u.ut_host[0] = 0;], AC_DEFINE(UTHOST)) +-AC_CHECK_HEADER(utempter.h, have_utempter=yes, have_utempter=no) +-if test "$have_utempter" = yes; then +- AC_DEFINE(HAVE_UTEMPTER) +- LIBS="$LIBS -lutempter" +-fi + + dnl + dnl **** loadav **** diff --git a/app-misc/screen/files/screen-4.3.1-ansi.c.patch b/app-misc/screen/files/screen-4.3.1-ansi.c.patch new file mode 100644 index 0000000..24a1167 --- /dev/null +++ b/app-misc/screen/files/screen-4.3.1-ansi.c.patch @@ -0,0 +1,37 @@ +--- a/ansi.c ++++ b/ansi.c +@@ -2502,13 +2502,13 @@ + return; + if (n > 0) + { ++ if (ye - ys + 1 < n) ++ n = ye - ys + 1; + if (n > 256) + { + MScrollV(p, n - 256, ys, ye, bce); + n = 256; + } +- if (ye - ys + 1 < n) +- n = ye - ys + 1; + #ifdef COPY_PASTE + if (compacthist) + { +@@ -2562,15 +2562,14 @@ + } + else + { ++ n = -n; ++ if (ye - ys + 1 < n) ++ n = ye - ys + 1; + if (n < -256) + { + MScrollV(p, n + 256, ys, ye, bce); + n = -256; + } +- n = -n; +- if (ye - ys + 1 < n) +- n = ye - ys + 1; +- + ml = p->w_mlines + ye; + /* Clear lines */ + for (i = ye; i > ye - n; i--, ml--) diff --git a/app-misc/screen/files/screen-4.3.1-termlen.patch b/app-misc/screen/files/screen-4.3.1-termlen.patch new file mode 100644 index 0000000..1452768 --- /dev/null +++ b/app-misc/screen/files/screen-4.3.1-termlen.patch @@ -0,0 +1,164 @@ +Backported git commit 37ca949e462a7608572f653848b5a7554964fd53 +"Fix more hardcoded termlen" +See bug 585696. + +diff -Naurd screen-4.3.1.orig/attacher.c screen-4.3.1/attacher.c +--- screen-4.3.1.orig/attacher.c 2015-06-29 00:22:55.000000000 +0300 ++++ screen-4.3.1/attacher.c 2016-06-12 17:00:41.091761944 +0300 +@@ -364,8 +364,8 @@ + } + #endif + ASSERT(how == MSG_ATTACH || how == MSG_CONT); +- strncpy(m.m.attach.envterm, attach_term, sizeof(m.m.attach.envterm) - 1); +- m.m.attach.envterm[sizeof(m.m.attach.envterm) - 1] = 0; ++ strncpy(m.m.attach.envterm, attach_term, MAXTERMLEN); ++ m.m.attach.envterm[MAXTERMLEN] = 0; + debug1("attach: sending %d bytes... ", (int)sizeof(m)); + + strncpy(m.m.attach.auser, LoginName, sizeof(m.m.attach.auser) - 1); +diff -Naurd screen-4.3.1.orig/display.c screen-4.3.1/display.c +--- screen-4.3.1.orig/display.c 2015-06-29 00:22:55.000000000 +0300 ++++ screen-4.3.1/display.c 2016-06-12 17:03:00.196561319 +0300 +@@ -309,8 +309,8 @@ + + strncpy(D_usertty, utty, sizeof(D_usertty) - 1); + D_usertty[sizeof(D_usertty) - 1] = 0; +- strncpy(D_termname, term, sizeof(D_termname) - 1); +- D_termname[sizeof(D_termname) - 1] = 0; ++ strncpy(D_termname, term, MAXTERMLEN); ++ D_termname[MAXTERMLEN] = 0; + D_user = *u; + D_processinput = ProcessInput; + D_mousetrack = defmousetrack; +@@ -3725,14 +3725,14 @@ + char *m; + int pid; + int slave = -1; +- char termname[30]; ++ char termname[MAXTERMLEN + 6]; + #ifndef TIOCSWINSZ + char libuf[20], cobuf[20]; + #endif + char **np; + + strcpy(termname, "TERM="); +- strncpy(termname + 5, D_termname, sizeof(termname) - 6); ++ strncpy(termname + 5, D_termname, MAXTERMLEN - 6); + termname[sizeof(termname) - 1] = 0; + KillBlanker(); + D_blankerpid = -1; +diff -Naurd screen-4.3.1.orig/process.c screen-4.3.1/process.c +--- screen-4.3.1.orig/process.c 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/process.c 2016-06-12 17:04:37.999014093 +0300 +@@ -2672,13 +2672,14 @@ + s = NULL; + if (ParseSaveStr(act, &s)) + break; +- if (strlen(s) >= MAXTERMLEN) ++ if (strlen(s) > MAXTERMLEN) + { + OutputMsg(0, "%s: term: argument too long ( < %d)", rc_name, MAXTERMLEN); + free(s); + break; + } +- strcpy(screenterm, s); ++ strncpy(screenterm, s, MAXTERMLEN); ++ screenterm[MAXTERMLEN] = '\0'; + free(s); + debug1("screenterm set to %s\n", screenterm); + MakeTermcap((display == 0)); +diff -Naurd screen-4.3.1.orig/screen.c screen-4.3.1/screen.c +--- screen-4.3.1.orig/screen.c 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/screen.c 2016-06-12 17:18:35.887758770 +0300 +@@ -507,7 +507,8 @@ + #endif + nwin = nwin_undef; + nwin_options = nwin_undef; +- strcpy(screenterm, "screen"); ++ strncpy(screenterm, "screen", MAXTERMLEN); ++ screenterm[MAXTERMLEN] = '\0'; + #ifdef BUILTIN_TELNET + af = AF_UNSPEC; + #endif +@@ -689,8 +690,10 @@ + case 'T': + if (--ac == 0) + exit_with_usage(myname, "Specify terminal-type with -T", NULL); +- if (strlen(*++av) < 20) +- strcpy(screenterm, *av); ++ if (strlen(*++av) < MAXTERMLEN) { ++ strncpy(screenterm, *av, MAXTERMLEN); ++ screenterm[MAXTERMLEN] = '\0'; ++ } + else + Panic(0, "-T: terminal name too long. (max. 20 char)"); + nwin_options.term = screenterm; +@@ -1034,7 +1037,7 @@ + + if ((attach_term = getenv("TERM")) == 0 || *attach_term == 0) + Panic(0, "Please set a terminal type."); +- if (strlen(attach_term) > sizeof(D_termname) - 1) ++ if (strlen(attach_term) > MAXTERMLEN) + Panic(0, "$TERM too long - sorry."); + GetTTY(0, &attach_Mode); + #ifdef DEBUGGGGGGGGGGGGGGG +diff -Naurd screen-4.3.1.orig/screen.h screen-4.3.1/screen.h +--- screen-4.3.1.orig/screen.h 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/screen.h 2016-06-12 17:19:07.821253585 +0300 +@@ -204,7 +204,7 @@ + int nargs; + char line[MAXPATHLEN]; + char dir[MAXPATHLEN]; +- char screenterm[MAXTERMLEN]; /* is screen really "screen" ? */ ++ char screenterm[MAXTERMLEN + 1]; /* is screen really "screen" ? */ + } + create; + struct +diff -Naurd screen-4.3.1.orig/socket.c screen-4.3.1/socket.c +--- screen-4.3.1.orig/socket.c 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/socket.c 2016-06-12 17:20:01.577403167 +0300 +@@ -695,8 +695,8 @@ + return; + } + if (nwin->term != nwin_undef.term) +- strncpy(m.m.create.screenterm, nwin->term, 19); +- m.m.create.screenterm[19] = '\0'; ++ strncpy(m.m.create.screenterm, nwin->term, MAXTERMLEN); ++ m.m.create.screenterm[MAXTERMLEN] = '\0'; + m.protocol_revision = MSG_REVISION; + debug1("SendCreateMsg writing '%s'\n", m.m.create.line); + if (write(s, (char *) &m, sizeof m) != sizeof m) +diff -Naurd screen-4.3.1.orig/termcap.c screen-4.3.1/termcap.c +--- screen-4.3.1.orig/termcap.c 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/termcap.c 2016-06-12 17:21:40.297841419 +0300 +@@ -72,7 +72,7 @@ + static int Termcaplen; + static int tcLineLen; + char Term[MAXSTR+5]; /* +5: "TERM=" */ +-char screenterm[20]; /* new $TERM, usually "screen" */ ++char screenterm[MAXTERMLEN + 1]; /* new $TERM, usually "screen" */ + + char *extra_incap, *extra_outcap; + +@@ -883,7 +883,8 @@ + if (*screenterm == '\0' || strlen(screenterm) > MAXSTR - 3) + { + debug("MakeTermcap sets screenterm=screen\n"); +- strcpy(screenterm, "screen"); ++ strncpy(screenterm, "screen", MAXTERMLEN); ++ screenterm[MAXTERMLEN] = '\0'; + } + #if 0 + found = 1; +diff -Naurd screen-4.3.1.orig/window.c screen-4.3.1/window.c +--- screen-4.3.1.orig/window.c 2015-06-29 00:22:56.000000000 +0300 ++++ screen-4.3.1/window.c 2016-06-12 17:22:53.174688514 +0300 +@@ -1438,7 +1438,7 @@ + NewEnv[4] = shellbuf; + debug1("ForkWindow: NewEnv[4] = '%s'\n", shellbuf); + if (win->w_term && *win->w_term && strcmp(screenterm, win->w_term) && +- (strlen(win->w_term) < 20)) ++ (strlen(win->w_term) < MAXTERMLEN)) + { + char *s1, *s2, tl; + diff --git a/app-misc/screen/files/screenrc b/app-misc/screen/files/screenrc new file mode 100644 index 0000000..11f2f55 --- /dev/null +++ b/app-misc/screen/files/screenrc @@ -0,0 +1,356 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# +# /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 +# ============================================================================== + +# ESCAPE - the COMMAND CHARACTER +# =============================================================== +# escape ^aa # default +# escape ^^^^ # suggested binding (Control-^) for Emacs users + + +# PASSWORD +# =============================================================== +# This commands sets the *internal* password for the screen session. +# WARNING!! If this is set then a "lock" command will only let you in to the +# session after you enter the user's account password and then *also* +# the internal password for that session. This gives additional safety but, +# if you forget the internal password then you cannot resume your session. +# Use :password to generate a password +# password ODSJQf.4IJN7E # "1234" + + +# VARIABLES +# =============================================================== +# No annoying audible bell, using "visual bell" +# vbell on # default: off +# vbell_msg " -- Bell,Bell!! -- " # default: "Wuff,Wuff!!" + +# Automatically detach on hangup. + autodetach on # default: on + +# Don't display the copyright page + startup_message off # default: on + +# Uses nethack-style messages +# nethack on # default: off + +# Affects the copying of text regions + crlf off # default: off + +# Enable/disable multiuser mode. Standard screen operation is singleuser. +# In multiuser mode the commands acladd, aclchg, aclgrp and acldel can be used +# to enable (and disable) other user accessing this screen session. +# Requires suid-root. + multiuser off + +# Change default scrollback value for new windows + defscrollback 1000 # default: 100 + +# Define the time that all windows monitored for silence should +# wait before displaying a message. Default 30 seconds. + silencewait 15 # default: 30 + +# bufferfile: The file to use for commands +# "readbuf" ('<') and "writebuf" ('>'): + bufferfile $HOME/.screen_exchange +# +# hardcopydir: The directory which contains all hardcopies. +# hardcopydir ~/.hardcopy +# hardcopydir ~/.screen +# +# shell: Default process started in screen's windows. +# Makes it possible to use a different shell inside screen +# than is set as the default login shell. +# If begins with a '-' character, the shell will be started as a login shell. +# shell zsh +# shell bash +# shell ksh + shell -$SHELL + +# shellaka '> |tcsh' +# shelltitle '$ |bash' + +# emulate .logout message + pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." + +# caption always " %w --- %c:%s" +# caption always "%3n %t%? @%u%?%? [%h]%?%=%c" + +# advertise hardstatus support to $TERMCAP +# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\' + +# set every new windows hardstatus line to somenthing descriptive +# defhstatus "screen: ^En (^Et)" + +# don't kill window after the process died +# zombie "^[" + +# ignore displays that block on output +defnonblock on + +# XTERM TWEAKS +# =============================================================== + +# xterm understands both im/ic and doesn't have a status line. +# Note: Do not specify im and ic in the real termcap/info file as +# some programs (e.g. vi) will not work anymore. + termcap xterm* hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l + terminfo xterm* hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l + +# 80/132 column switching must be enabled for ^AW to work +# change init sequence to not switch width + termcapinfo xterm* Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l + +# Make the output buffer large for (fast) xterms. +# termcapinfo xterm* OL=10000 + termcapinfo xterm* OL=100 + +# tell screen that xterm can switch to dark background and has function +# keys. + termcapinfo xterm* 'VR=\E[?5h:VN=\E[?5l' + termcapinfo xterm* 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' + termcapinfo xterm* 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~' + +# special xterm hardstatus: use the window title. + termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' + +#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l' + termcapinfo xterm* 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l' + +# emulate part of the 'K' charset + termcapinfo xterm* 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' + +# xterm-52 tweaks: +# - uses background color for delete operations + termcapinfo xterm* be + +# Do not use xterm's alternative window buffer, it breaks scrollback (see bug #61195) + termcapinfo xterm*|xs ti@:te=\E[2J + +# WYSE TERMINALS +# =============================================================== + +#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff") +#essential to have it here, as this is a slow terminal. + termcapinfo wy75-42 xo:hs@ + +# New termcap sequences for cursor application mode. + termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J + + +# OTHER TERMINALS +# =============================================================== + +# make hp700 termcap/info better + termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@' + +# Extend the vt100 desciption by some sequences. + termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC + terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC + termcapinfo linux C8 +# old rxvt versions also need this +# termcapinfo rxvt C8 + + +# KEYBINDINGS +# ============================================================== +# The "bind" command assign keys to (internal) commands +# SCREEN checks all the keys you type; you type the key +# which is known as the "command character" then SCREEN +# eats this key, too, and checks whether this key is +# "bound" to a command. If so then SCREEN will execute it. +# +# The command "bind" allows you to chose which keys +# will be assigned to the commands. +# +# Some commands are bound to several keys - +# usually to both some letter and its corresponding +# control key combination, eg the command +# "(create) screen" is bound to both 'c' and '^C'. +# +# The following list shows the default bindings: +# +# break ^B b +# clear C +# colon : +# copy ^[ [ +# detach ^D d +# digraph ^V +# displays * +# dumptermcap . +# fit F +# flow ^F f +# focus ^I +# hardcopy h +# help ? +# history { } +# info i +# kill K k +# lastmsg ^M m +# license , +# log H +# login L +# meta x +# monitor M +# next ^@ ^N sp n +# number N +# only Q +# other ^X +# pow_break B +# pow_detach D +# prev ^H ^P p ^? +# quit \ +# readbuf < +# redisplay ^L l +# remove X +# removebuf = +# reset Z +# screen ^C c +# select " ' +# silence _ +# split S +# suspend ^Z z +# time ^T t +# title A +# vbell ^G +# version v +# width W +# windows ^W w +# wrap ^R r +# writebuf > +# xoff ^S s +# xon ^Q q +# ^] paste . +# - select - +# 0 select 0 +# 1 select 1 +# 2 select 2 +# 3 select 3 +# 4 select 4 +# 5 select 5 +# 6 select 6 +# 7 select 7 +# 8 select 8 +# 9 select 9 +# I login on +# O login off +# ] paste . +# + +# And here are the default bind commands if you need them: +# +# bind A title +# bind C clear +# bind D pow_detach +# bind F fit +# bind H log +# bind I login on +# bind K kill +# bind L login +# bind M monitor +# bind N number +# bind O login off +# bind Q only +# bind S split +# bind W width +# bind X remove +# bind Z reset + +# Let's remove some dangerous key bindings ... + bind k + bind ^k +# bind . dumptermcap # default + bind . +# bind ^\ quit # default + bind ^\ +# bind \\ quit # default + bind \\ +# bind ^h ??? # default + bind ^h +# bind h hardcopy # default + bind h + +# ... and make them better. + bind 'K' kill + bind 'I' login on + bind 'O' login off + bind '}' history + +# Yet another hack: +# Prepend/append register [/] to the paste if ^a^] is pressed. +# This lets me have autoindent mode in vi. + register [ "\033:se noai\015a" + register ] "\033:se ai\015a" + bind ^] paste [.] + + +# hardstatus alwaysignore +# hardstatus alwayslastline "%Lw" + +# Resize the current region. The space will be removed from or added to +# the region below or if there's not enough space from the region above. + bind = resize = + bind + resize +3 + bind - resize -3 +# bind _ resize max +# +# attrcolor u "-u b" +# attrcolor b "R" + +# STARTUP SCREENS +# =============================================================== +# Defines the time screen delays a new message when one message +# is currently displayed. The default is 1 second. +# msgminwait 2 + +# Time a message is displayed if screen is not disturbed by +# other activity. The dafault is 5 seconds: +# msgwait 2 + +# Briefly show the version number of this starting +# screen session - but only for *one* second: +# msgwait 1 +# version + +# Welcome the user: +# echo "welcome :-)" +# echo "I love you today." + +# Uncomment one/some following lines to automatically let +# SCREEN start some programs in the given window numbers: +# screen -t MAIL 0 mutt +# screen -t EDIT 1 vim +# screen -t GOOGLE 2 links http://www.google.com +# screen -t NEWS 3 slrn +# screen -t WWW 4 links http://www.math.fu-berlin.de/~guckes/ +# screen 5 +# screen 6 + +# Set the environment variable var to value string. If only var is specified, +# you'll be prompted to enter a value. If no parameters are specified, +# you'll be prompted for both variable and value. The environment is +# inherited by all subsequently forked shells. +# setenv PROMPT_COMMAND 'echo -n -e "\033k\033\134"' + +# Don't you want to start programs which need a DISPLAY ? +# setenv DISPLAY '' diff --git a/app-misc/screen/metadata.xml b/app-misc/screen/metadata.xml new file mode 100644 index 0000000..fd200de --- /dev/null +++ b/app-misc/screen/metadata.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>swege...@gentoo.org</email> + <description>Primary Maintainer</description> + </maintainer> + <maintainer type="project"> + <email>shell-to...@gentoo.org</email> + <name>Gentoo Shell Tools Project</name> + </maintainer> + <longdescription> +Screen is a full-screen window manager that multiplexes a physical terminal +between several processes, typically interactive shells. Each virtual terminal +provides the functions of the DEC VT100 terminal and, in addition, several +control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., +insert/delete line and support for multiple character sets). There is a +scrollback history buffer for each virtual terminal and a copy-and-paste +mechanism that allows the user to move text regions between windows. When screen +is called, it creates a single window with a shell in it (or the specified +command) and then gets out of your way so that you can use the program as you +normally would. Then, at any time, you can create new (full-screen) windows with +other programs in them (including more shells), kill the current window, view a +list of the active windows, turn output logging on and off, copy text between +windows, view the scrollback history, switch between windows, etc. All windows +run their programs completely independent of each other. Programs continue to +run when their window is currently not visible and even when the whole screen +session is detached from the users terminal. +</longdescription> + <use> + <flag name="multiuser">Enable multiuser support (by setting correct + permissions)</flag> + <flag name="nethack">Express error messages in nethack style</flag> + </use> +</pkgmetadata> diff --git a/app-misc/screen/screen-4.3.1-r1.ebuild b/app-misc/screen/screen-4.3.1-r1.ebuild new file mode 100644 index 0000000..d80b404 --- /dev/null +++ b/app-misc/screen/screen-4.3.1-r1.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit autotools eutils flag-o-matic pam toolchain-funcs user + +DESCRIPTION="Full-screen window manager that multiplexes physical terminals between several processes" +HOMEPAGE="https://www.gnu.org/software/screen/" +SRC_URI="mirror://gnu/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd ~hppa-hpux ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="debug nethack pam selinux multiuser" + +CDEPEND=" + >=sys-libs/ncurses-5.2:0= + pam? ( virtual/pam )" +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-screen )" +DEPEND="${CDEPEND} + sys-apps/texinfo" + +# Patches: +# - Don't use utempter even if it is found on the system. +# - Bug 559394. +PATCHES=( + "${FILESDIR}"/${PN}-4.3.0-no-utempter.patch + "${FILESDIR}"/${PN}-4.3.1-ansi.c.patch + "${FILESDIR}"/${PN}-4.3.1-termlen.patch +) + +pkg_setup() { + # Make sure utmp group exists, as it's used later on. + enewgroup utmp 406 +} + +src_prepare() { + # Apply patches. + epatch "${PATCHES[@]}" + + # sched.h is a system header and causes problems with some C libraries + mv sched.h _sched.h || die + sed -i '/include/ s:sched.h:_sched.h:' screen.h || die + + # Fix manpage. + sed -i \ + -e "s:/usr/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \ + -e "s:/usr/local/screens:${EPREFIX}/tmp/screen:g" \ + -e "s:/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \ + -e "s:/etc/utmp:${EPREFIX}/var/run/utmp:g" \ + -e "s:/local/screens/S-:${EPREFIX}/tmp/screen/S-:g" \ + doc/screen.1 \ + || die + + if [[ ${CHOST} == *-darwin* ]] ; then + sed -i -e '/^#define UTMPOK/s/define/undef/' acconfig.h || die + fi + + # reconfigure + eautoreconf +} + +src_configure() { + append-cppflags "-DMAXWIN=${MAX_SCREEN_WINDOWS:-100}" + + if [[ ${CHOST} == *-solaris* ]] ; then + # https://lists.gnu.org/archive/html/screen-devel/2014-04/msg00095.html + append-cppflags -D_XOPEN_SOURCE \ + -D_XOPEN_SOURCE_EXTENDED=1 \ + -D__EXTENSIONS__ + append-libs -lsocket -lnsl + fi + + use nethack || append-cppflags "-DNONETHACK" + use debug && append-cppflags "-DDEBUG" + + econf \ + --with-socket-dir="${EPREFIX}/tmp/screen" \ + --with-sys-screenrc="${EPREFIX}/etc/screenrc" \ + --with-pty-mode=0620 \ + --with-pty-group=5 \ + --enable-rxvt_osc \ + --enable-telnet \ + --enable-colors256 \ + $(use_enable pam) +} + +src_compile() { + LC_ALL=POSIX emake comm.h term.h + emake osdef.h + + emake -C doc screen.info + default +} + +src_install() { + local tmpfiles_perms tmpfiles_group + + dobin screen + + if use multiuser || use prefix + then + fperms 4755 /usr/bin/screen + tmpfiles_perms="0755" + tmpfiles_group="root" + else + fowners root:utmp /usr/bin/screen + fperms 2755 /usr/bin/screen + tmpfiles_perms="0775" + tmpfiles_group="utmp" + fi + + dodir /etc/tmpfiles.d + echo "d /tmp/screen ${tmpfiles_perms} root ${tmpfiles_group}" \ + > "${ED}"/etc/tmpfiles.d/screen.conf + + insinto /usr/share/screen + doins terminfo/{screencap,screeninfo.src} + insinto /usr/share/screen/utf8encodings + doins utf8encodings/?? + insinto /etc + doins "${FILESDIR}"/screenrc + + pamd_mimic_system screen auth + + dodoc \ + README ChangeLog INSTALL TODO NEWS* patchlevel.h \ + doc/{FAQ,README.DOTSCREEN,fdpat.ps,window_to_display.ps} + + doman doc/screen.1 + doinfo doc/screen.info +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] + then + elog "Some dangerous key bindings have been removed or changed to more safe values." + elog "We enable some xterm hacks in our default screenrc, which might break some" + elog "applications. Please check /etc/screenrc for information on these changes." + fi + + # Add /tmp/screen in case it doesn't exist yet. This should solve + # problems like bug #508634 where tmpfiles.d isn't in effect. + local rundir="${EROOT%/}/tmp/screen" + if [[ ! -d ${rundir} ]] ; then + if use multiuser || use prefix ; then + tmpfiles_group="root" + else + tmpfiles_group="utmp" + fi + mkdir -m 0775 "${rundir}" + chgrp ${tmpfiles_group} "${rundir}" + fi + + ewarn "This revision changes the screen socket location to ${rundir}" +} diff --git a/app-misc/screen/screen-9999.ebuild b/app-misc/screen/screen-9999.ebuild new file mode 100644 index 0000000..3038ad6 --- /dev/null +++ b/app-misc/screen/screen-9999.ebuild @@ -0,0 +1,141 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGIT_REPO_URI="git://git.savannah.gnu.org/screen.git" +EGIT_CHECKOUT_DIR="${WORKDIR}/${P}" # needed for setting S later on + +inherit eutils flag-o-matic toolchain-funcs pam autotools user git-r3 + +DESCRIPTION="Full-screen window manager that multiplexes physical terminals between several processes" +HOMEPAGE="https://www.gnu.org/software/screen/" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="" +IUSE="debug nethack pam selinux multiuser" + +CDEPEND=" + >=sys-libs/ncurses-5.2:0= + pam? ( virtual/pam )" +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-screen )" +DEPEND="${CDEPEND} + sys-apps/texinfo" + +S="${WORKDIR}"/${P}/src + +pkg_setup() { + # Make sure utmp group exists, as it's used later on. + enewgroup utmp 406 +} + +src_prepare() { + # Don't use utempter even if it is found on the system + epatch "${FILESDIR}"/${PN}-4.3.0-no-utempter.patch + + # sched.h is a system header and causes problems with some C libraries + mv sched.h _sched.h || die + sed -i '/include/ s:sched.h:_sched.h:' screen.h || die + + # Fix manpage. + sed -i \ + -e "s:/usr/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \ + -e "s:/usr/local/screens:${EPREFIX}/tmp/screen:g" \ + -e "s:/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \ + -e "s:/etc/utmp:${EPREFIX}/var/run/utmp:g" \ + -e "s:/local/screens/S-:${EPREFIX}/tmp/screen/S-:g" \ + doc/screen.1 \ + || die + + # reconfigure + eautoreconf +} + +src_configure() { + append-cppflags "-DMAXWIN=${MAX_SCREEN_WINDOWS:-100}" + + [[ ${CHOST} == *-solaris* ]] && append-libs -lsocket -lnsl + + use nethack || append-cppflags "-DNONETHACK" + use debug && append-cppflags "-DDEBUG" + + econf \ + --with-socket-dir="${EPREFIX}/tmp/screen" \ + --with-sys-screenrc="${EPREFIX}/etc/screenrc" \ + --with-pty-mode=0620 \ + --with-pty-group=5 \ + --enable-telnet \ + $(use_enable pam) +} + +src_compile() { + LC_ALL=POSIX emake comm.h term.h + + emake -C doc screen.info + default +} + +src_install() { + local tmpfiles_perms tmpfiles_group + + dobin screen + + if use multiuser || use prefix + then + fperms 4755 /usr/bin/screen + tmpfiles_perms="0755" + tmpfiles_group="root" + else + fowners root:utmp /usr/bin/screen + fperms 2755 /usr/bin/screen + tmpfiles_perms="0775" + tmpfiles_group="utmp" + fi + + dodir /etc/tmpfiles.d + echo "d /tmp/screen ${tmpfiles_perms} root ${tmpfiles_group}" \ + >"${ED}"/etc/tmpfiles.d/screen.conf + + insinto /usr/share/screen + doins terminfo/{screencap,screeninfo.src} + insinto /usr/share/screen/utf8encodings + doins utf8encodings/?? + insinto /etc + doins "${FILESDIR}"/screenrc + + pamd_mimic_system screen auth + + dodoc \ + README ChangeLog INSTALL TODO NEWS* \ + doc/{FAQ,README.DOTSCREEN,fdpat.ps,window_to_display.ps} + + doman doc/screen.1 + doinfo doc/screen.info +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] + then + elog "Some dangerous key bindings have been removed or changed to more safe values." + elog "We enable some xterm hacks in our default screenrc, which might break some" + elog "applications. Please check /etc/screenrc for information on these changes." + fi + + # Add /tmp/screen in case it doesn't exist yet. This should solve + # problems like bug #508634 where tmpfiles.d isn't in effect. + local rundir="${EROOT%/}/tmp/screen" + if [[ ! -d ${rundir} ]] ; then + if use multiuser || use prefix ; then + tmpfiles_group="root" + else + tmpfiles_group="utmp" + fi + mkdir -m 0775 "${rundir}" + chgrp ${tmpfiles_group} "${rundir}" + fi + + ewarn "This revision changes the screen socket location to /run/screen." +} diff --git a/profiles/categories b/profiles/categories index 0fc669e..86b90c1 100644 --- a/profiles/categories +++ b/profiles/categories @@ -1,6 +1,7 @@ app-admin app-doc app-emulation +app-misc app-vim dev-libs dev-python