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

Reply via email to