summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2010-12-08 19:11:04 +0000
committerJustin Lecher <jlec@gentoo.org>2010-12-08 19:11:04 +0000
commit9b98c6b80016e90f0ada14b37d46ad933634103a (patch)
treeb985f481b4585426ca0b4d2b3f82a5423cde5b19 /app-misc/screen
parentNeeds gnome-panel with bonobo support. (diff)
downloadgentoo-2-9b98c6b80016e90f0ada14b37d46ad933634103a.tar.gz
gentoo-2-9b98c6b80016e90f0ada14b37d46ad933634103a.tar.bz2
gentoo-2-9b98c6b80016e90f0ada14b37d46ad933634103a.zip
Support for long user names, #348152
(Portage version: 2.2.0_alpha7/cvs/Linux x86_64)
Diffstat (limited to 'app-misc/screen')
-rw-r--r--app-misc/screen/ChangeLog8
-rw-r--r--app-misc/screen/files/4.0.3-extend-d_termname-ng2.patch148
-rw-r--r--app-misc/screen/screen-4.0.3-r4.ebuild169
3 files changed, 324 insertions, 1 deletions
diff --git a/app-misc/screen/ChangeLog b/app-misc/screen/ChangeLog
index fc2d6628b92c..8b9ff3e25b5d 100644
--- a/app-misc/screen/ChangeLog
+++ b/app-misc/screen/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for app-misc/screen
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-misc/screen/ChangeLog,v 1.151 2010/11/17 16:42:00 jlec Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-misc/screen/ChangeLog,v 1.152 2010/12/08 19:11:04 jlec Exp $
+
+*screen-4.0.3-r4 (08 Dec 2010)
+
+ 08 Dec 2010; Justin Lecher <jlec@gentoo.org>
+ +files/4.0.3-extend-d_termname-ng2.patch, +screen-4.0.3-r4.ebuild:
+ Support for long user names, #348152
*screen-4.0.3-r3 (17 Nov 2010)
diff --git a/app-misc/screen/files/4.0.3-extend-d_termname-ng2.patch b/app-misc/screen/files/4.0.3-extend-d_termname-ng2.patch
new file mode 100644
index 000000000000..e7fe1abbd36c
--- /dev/null
+++ b/app-misc/screen/files/4.0.3-extend-d_termname-ng2.patch
@@ -0,0 +1,148 @@
+diff --git a/acls.c b/acls.c
+index 0f98df2..670c3aa 100644
+--- a/acls.c
++++ b/acls.c
+@@ -178,7 +178,7 @@ struct acluser **up;
+ #endif
+ (*up)->u_Esc = DefaultEsc;
+ (*up)->u_MetaEsc = DefaultMetaEsc;
+- strncpy((*up)->u_name, name, 20);
++ strncpy((*up)->u_name, name, 32);
+ (*up)->u_password = NULL;
+ if (pass)
+ (*up)->u_password = SaveStr(pass);
+@@ -314,8 +314,8 @@ struct acluser **up;
+ return UserAdd(name, pass, up);
+ if (!strcmp(name, "nobody")) /* he remains without password */
+ return -1;
+- strncpy((*up)->u_password, pass ? pass : "", 20);
+- (*up)->u_password[20] = '\0';
++ strncpy((*up)->u_password, pass ? pass : "", 32);
++ (*up)->u_password[32] = '\0';
+ return 0;
+ }
+ #endif
+diff --git a/acls.h b/acls.h
+index c41b714..cdd24d4 100644
+--- a/acls.h
++++ b/acls.h
+@@ -73,7 +73,7 @@ struct plop
+ typedef struct acluser
+ {
+ struct acluser *u_next; /* continue the main user list */
+- char u_name[20+1]; /* login name how he showed up */
++ char u_name[32+1]; /* login name how he showed up */
+ char *u_password; /* his password (may be NullStr). */
+ int u_checkpassword; /* nonzero if this u_password is valid */
+ int u_detachwin; /* the window where he last detached */
+diff --git a/display.h b/display.h
+index ef99954..563fcd0 100644
+--- a/display.h
++++ b/display.h
+@@ -22,6 +22,16 @@
+ * $Id: display.h,v 1.9 1994/05/31 12:31:54 mlschroe Exp $ FAU
+ */
+
++#include <limits.h>
++
++#ifndef NAME_MAX
++# ifndef MAXNAMELEN
++# define NAME_MAX 255
++# else
++# define NAME_MAX MAXNAMELEN
++# endif
++#endif
++
+ #ifdef MAPKEYS
+
+ #define KMAP_KEYS (T_OCAPS-T_CAPS)
+@@ -85,7 +95,7 @@ struct display
+ struct win *d_other; /* pointer to other window */
+ int d_nonblock; /* -1 don't block if obufmax reached */
+ /* >0: block after nonblock secs */
+- char d_termname[20 + 1]; /* $TERM */
++ char d_termname[NAME_MAX + 1]; /* $TERM */
+ char *d_tentry; /* buffer for tgetstr */
+ char d_tcinited; /* termcap inited flag */
+ int d_width, d_height; /* width/height of the screen */
+diff --git a/screen.h b/screen.h
+index 4f9f354..bcaaaf6 100644
+--- a/screen.h
++++ b/screen.h
+@@ -43,6 +43,15 @@
+ #include "comm.h"
+ #include "layer.h"
+ #include "term.h"
++#include <limits.h>
++
++#ifndef NAME_MAX
++# ifndef MAXNAMELEN
++# define NAME_MAX 255
++# else
++# define NAME_MAX MAXNAMELEN
++# endif
++#endif
+
+
+ #ifdef DEBUG
+@@ -195,26 +204,26 @@ struct msg
+ create;
+ struct
+ {
+- char auser[20 + 1]; /* username */
++ char auser[NAME_MAX + 1]; /* username */
+ int apid; /* pid of frontend */
+ int adaptflag; /* adapt window size? */
+ int lines, columns; /* display size */
+ char preselect[20];
+ int esc; /* his new escape character unless -1 */
+ int meta_esc; /* his new meta esc character unless -1 */
+- char envterm[20 + 1]; /* terminal type */
++ char envterm[NAME_MAX + 1]; /* terminal type */
+ int encoding; /* encoding of display */
+ }
+ attach;
+ struct
+ {
+- char duser[20 + 1]; /* username */
++ char duser[NAME_MAX + 1]; /* username */
+ int dpid; /* pid of frontend */
+ }
+ detach;
+ struct
+ {
+- char auser[20 + 1]; /* username */
++ char auser[NAME_MAX + 1]; /* username */
+ int nargs;
+ char cmd[MAXPATHLEN]; /* command */
+ int apid; /* pid of frontend */
+diff --git a/socket.c b/socket.c
+index 62a73af..1cc9c27 100644
+--- a/socket.c
++++ b/socket.c
+@@ -45,6 +45,16 @@
+
+ #include "extern.h"
+
++#include <limits.h>
++
++#ifndef NAME_MAX
++# ifndef MAXNAMELEN
++# define NAME_MAX 255
++# else
++# define NAME_MAX MAXNAMELEN
++# endif
++#endif
++
+ static int CheckPid __P((int));
+ static void ExecCreate __P((struct msg *));
+ static void DoCommandMsg __P((struct msg *));
+@@ -1248,7 +1258,7 @@ static void PasswordProcessInput __P((char *, int));
+
+ struct pwdata {
+ int l;
+- char buf[20 + 1];
++ char buf[NAME_MAX + 1];
+ struct msg m;
+ };
+
diff --git a/app-misc/screen/screen-4.0.3-r4.ebuild b/app-misc/screen/screen-4.0.3-r4.ebuild
new file mode 100644
index 000000000000..34fd6b6d0559
--- /dev/null
+++ b/app-misc/screen/screen-4.0.3-r4.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/screen/screen-4.0.3-r4.ebuild,v 1.1 2010/12/08 19:11:04 jlec Exp $
+
+EAPI="3"
+
+WANT_AUTOCONF="2.5"
+
+inherit eutils flag-o-matic toolchain-funcs pam autotools
+
+DESCRIPTION="Full-screen window manager that multiplexes physical terminals between several processes"
+HOMEPAGE="http://www.gnu.org/software/screen/"
+SRC_URI="ftp://ftp.uni-erlangen.de/pub/utilities/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd ~hppa-hpux ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug nethack pam selinux multiuser"
+
+RDEPEND=">=sys-libs/ncurses-5.2
+ pam? ( virtual/pam )
+ selinux? ( sec-policy/selinux-screen )"
+DEPEND="${RDEPEND}"
+
+pkg_setup() {
+ # Make sure utmp group exists, as it's used later on.
+ enewgroup utmp 406
+}
+
+src_prepare() {
+ # Bug 34599: integer overflow in 4.0.1
+ # (Nov 29 2003 -solar)
+ epatch "${FILESDIR}"/screen-4.0.1-int-overflow-fix.patch
+
+ # Bug 31070: configure problem which affects alpha
+ # (13 Jan 2004 agriffis)
+ epatch "${FILESDIR}"/screen-4.0.1-vsprintf.patch
+
+ # uclibc doesnt have sys/stropts.h
+ if ! (echo '#include <sys/stropts.h>' | $(tc-getCC) -E - &>/dev/null) ; then
+ epatch "${FILESDIR}"/4.0.2-no-pty.patch
+ fi
+
+ # Don't use utempter even if it is found on the system
+ epatch "${FILESDIR}"/4.0.2-no-utempter.patch
+
+ # Don't link against libelf even if it is found on the system
+ epatch "${FILESDIR}"/4.0.2-no-libelf.patch
+
+ # Patch for time function on 64bit systems
+ epatch "${FILESDIR}"/4.0.2-64bit-time.patch
+
+ # Patch that makes %u work for windowlist -b formats
+ epatch "${FILESDIR}"/4.0.2-windowlist-multiuser-fix.patch
+
+ # Open tty in non-blocking mode
+ epatch "${FILESDIR}"/4.0.2-nonblock.patch
+
+ # compability for sys-devel/autoconf-2.62
+ epatch "${FILESDIR}"/screen-4.0.3-config.h-autoconf-2.62.patch
+
+ # crosscompile patch
+ epatch "${FILESDIR}"/"${P}"-crosscompile.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
+
+ # Allow for more rendition (color/attribute) changes in status bars
+ sed -i \
+ -e "s:#define MAX_WINMSG_REND 16:#define MAX_WINMSG_REND 64:" \
+ screen.c \
+ || die "sed screen.c failed"
+
+ # Fix manpage.
+ sed -i \
+ -e "s:/usr/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \
+ -e "s:/usr/local/screens:${EPREFIX}/var/run/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}/var/run/screen/S-:g" \
+ doc/screen.1 \
+ || die "sed doc/screen.1 failed"
+
+ # proper setenv detection for Solaris
+ epatch "${FILESDIR}"/${P}-setenv_autoconf.patch
+
+ # Allow TERM string large enough to use with rxvt-unicode-256color
+ # Allow usernames up to 32 chars
+ epatch "${FILESDIR}"/${PV}-extend-d_termname-ng2.patch
+
+ # reconfigure
+ eautoconf
+}
+
+src_configure() {
+ append-flags "-DMAXWIN=${MAX_SCREEN_WINDOWS:-100}"
+
+ [[ ${CHOST} == *-solaris* ]] && append-libs -lsocket -lnsl
+
+ use nethack || append-flags "-DNONETHACK"
+ use debug && append-flags "-DDEBUG"
+
+ econf \
+ --with-socket-dir="${EPREFIX}/var/run/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) \
+ || die "econf failed"
+
+ # Second try to fix bug 12683, this time without changing term.h
+ # The last try seemed to break screen at run-time.
+ # (16 Jan 2003 agriffis)
+ LC_ALL=POSIX make term.h || die "Failed making term.h"
+}
+
+src_install() {
+ dobin screen || die "dobin failed"
+ keepdir /var/run/screen || die "keepdir failed"
+
+ if use multiuser || use prefix
+ then
+ fperms 4755 /usr/bin/screen || die "fperms failed"
+ else
+ fowners root:utmp /{usr/bin,var/run}/screen \
+ || die "fowners failed, use multiuser USE-flag instead"
+ fperms 2755 /usr/bin/screen || die "fperms failed"
+ fi
+
+ insinto /usr/share/screen
+ doins terminfo/{screencap,screeninfo.src} || die "doins failed"
+ insinto /usr/share/screen/utf8encodings
+ doins utf8encodings/?? || die "doins failed"
+ insinto /etc
+ doins "${FILESDIR}"/screenrc || die "doins failed"
+
+ pamd_mimic_system screen auth || die "pamd_mimic_system failed"
+
+ dodoc \
+ README ChangeLog INSTALL TODO NEWS* patchlevel.h \
+ doc/{FAQ,README.DOTSCREEN,fdpat.ps,window_to_display.ps} \
+ || die "dodoc failed"
+
+ doman doc/screen.1 || die "doman failed"
+ doinfo doc/screen.info* || die "doinfo failed"
+}
+
+pkg_postinst() {
+ if use multiuser || use prefix
+ then
+ use prefix || chown root:0 "${EROOT}"/var/run/screen
+ if use prefix; then
+ chmod 0777 "${EROOT}"/var/run/screen
+ else
+ chmod 0755 "${EROOT}"/var/run/screen
+ fi
+ else
+ chown root:utmp "${EROOT}"/var/run/screen
+ chmod 0775 "${EROOT}"/var/run/screen
+ fi
+
+ 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."
+}