]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
screen: Add a bunch of patches from fedora.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 5 Sep 2010 13:40:49 +0000 (15:40 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 5 Sep 2010 13:40:49 +0000 (15:40 +0200)
pkgs/core/screen/patches/screen-4.0.1-args.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.2-maxstr.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.3-configh.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.3-ipv6.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.3-libs.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.3-screenrc.patch [new file with mode: 0644]
pkgs/core/screen/patches/screen-4.0.3-stropts.patch [new file with mode: 0644]

diff --git a/pkgs/core/screen/patches/screen-4.0.1-args.patch b/pkgs/core/screen/patches/screen-4.0.1-args.patch
new file mode 100644 (file)
index 0000000..0fefc55
--- /dev/null
@@ -0,0 +1,31 @@
+--- a/ansi.c.orig      2003-12-04 10:59:05.000000000 -0500
++++ b/ansi.c   2003-12-04 10:59:20.000000000 -0500
+@@ -559,7 +559,7 @@
+           {
+           case '0': case '1': case '2': case '3': case '4':
+           case '5': case '6': case '7': case '8': case '9':
+-            if (curr->w_NumArgs < MAXARGS)
++            if (curr->w_NumArgs >= 0 && curr->w_NumArgs < MAXARGS)
+               {
+                 if (curr->w_args[curr->w_NumArgs] < 100000000)
+                   curr->w_args[curr->w_NumArgs] =
+--- a/resize.c.old        2003-11-27 02:55:07.000000000 +0200
++++ b/resize.c    2003-11-27 02:58:33.000000000 +0200
+@@ -682,6 +682,17 @@
+   if (wi == 0)
+     he = hi = 0;
++  if (wi > 1000)
++    {
++      Msg(0, "Window width too large, truncated");
++      wi = 1000;
++    }
++  if (he > 1000)
++    {
++      Msg(0, "Window height too large, truncated");
++      he = 1000;
++    }
++
+   if (p->w_width == wi && p->w_height == he && p->w_histheight == hi)
+     {
+       debug("ChangeWindowSize: No change.\n");
diff --git a/pkgs/core/screen/patches/screen-4.0.2-maxstr.patch b/pkgs/core/screen/patches/screen-4.0.2-maxstr.patch
new file mode 100644 (file)
index 0000000..466e2f1
--- /dev/null
@@ -0,0 +1,11 @@
+--- screen-4.0.2/screen.h.maxstr       2006-07-10 13:37:11.000000000 +0200
++++ screen-4.0.2/screen.h      2006-07-10 13:36:36.000000000 +0200
+@@ -86,7 +86,7 @@
+ #define Ctrl(c) ((c)&037)
+-#define MAXSTR                256
++#define MAXSTR                4096
+ #define MAXARGS       64
+ #define MSGWAIT       5
+ #define MSGMINWAIT    1
diff --git a/pkgs/core/screen/patches/screen-4.0.3-configh.patch b/pkgs/core/screen/patches/screen-4.0.3-configh.patch
new file mode 100644 (file)
index 0000000..5f46385
--- /dev/null
@@ -0,0 +1,20 @@
+diff -up screen-4.0.3/config.h.in.configh screen-4.0.3/config.h.in
+--- screen-4.0.3/config.h.in.configh   2006-10-23 15:06:32.000000000 +0200
++++ screen-4.0.3/config.h.in   2008-05-19 15:47:19.000000000 +0200
+@@ -291,7 +291,7 @@
+  * Define USE_LOCALE if you want screen to use the locale names
+  * for the name of the month and day of the week.
+  */
+-#define USE_LOCALE
++#undef USE_LOCALE
+ /*
+  * Define USE_PAM if your system supports PAM (Pluggable Authentication
+@@ -563,7 +563,6 @@
+  * If you are on a SYS V machine that restricts filename length to 14 
+  * characters, you may need to enforce that by setting NAME_MAX to 14
+  */
+-#undef NAME_MAX               /* KEEP_UNDEF_HERE override system value */
+ #undef NAME_MAX
+ /*
diff --git a/pkgs/core/screen/patches/screen-4.0.3-ipv6.patch b/pkgs/core/screen/patches/screen-4.0.3-ipv6.patch
new file mode 100644 (file)
index 0000000..b7b6f75
--- /dev/null
@@ -0,0 +1,323 @@
+--- screen-4.0.3/window.h.ipv6 2003-08-21 16:57:30.000000000 +0200
++++ screen-4.0.3/window.h      2006-11-15 13:36:57.000000000 +0100
+@@ -254,7 +254,7 @@
+   struct display *w_zdisplay;
+ #endif
+ #ifdef BUILTIN_TELNET
+-  struct sockaddr_in w_telsa;
++  struct sockaddr_storage w_telsa;
+   char   w_telbuf[IOSIZE];
+   int    w_telbufl;
+   char   w_telmopts[256];
+--- screen-4.0.3/window.c.ipv6 2003-12-05 14:45:41.000000000 +0100
++++ screen-4.0.3/window.c      2006-11-15 13:39:27.000000000 +0100
+@@ -582,6 +582,13 @@
+   n = pp - wtab;
+   debug1("Makewin creating %d\n", n);
++#ifdef BUILTIN_TELNET                                                                                                        
++  if(!strcmp(nwin.args[0], "//telnet")) {                                                                                    
++         type = W_TYPE_TELNET;                                                                                               
++         TtyName = "telnet";                                                                                                 
++  }                                                                                                                          
++  else                                                                                                                       
++#endif 
+   if ((f = OpenDevice(nwin.args, nwin.lflag, &type, &TtyName)) < 0)
+     return -1;
+@@ -736,7 +743,7 @@
+ #ifdef BUILTIN_TELNET
+   if (type == W_TYPE_TELNET)
+     {
+-      if (TelConnect(p))
++      if (TelOpenAndConnect(p))
+       {
+         FreeWindow(p);
+         return -1;
+@@ -834,6 +841,13 @@
+   int lflag, f;
+   lflag = nwin_default.lflag;
++#ifdef BUILTIN_TELNET                                                                                                        
++  if(!strcmp(p->w_cmdargs[0], "//telnet")) {                                                                                 
++         p->w_type = W_TYPE_TELNET;                                                                                          
++         TtyName = "telnet";                                                                                                 
++  }                                                                                                                          
++  else                                                                                                                       
++#endif   
+   if ((f = OpenDevice(p->w_cmdargs, lflag, &p->w_type, &TtyName)) < 0)
+     return -1;
+@@ -864,7 +878,7 @@
+ #ifdef BUILTIN_TELNET
+   if (p->w_type == W_TYPE_TELNET)
+     {
+-      if (TelConnect(p))
++      if (TelOpenAndConnect(p))
+         return -1;
+     }
+   else
+@@ -1007,16 +1021,6 @@
+   if (!arg)
+     return -1;
+-#ifdef BUILTIN_TELNET
+-  if (strcmp(arg, "//telnet") == 0)
+-    {
+-      f = TelOpen(args + 1);
+-      lflag = 0;
+-      *typep = W_TYPE_TELNET;
+-      *namep = "telnet";
+-    }
+-  else
+-#endif
+   if ((stat(arg, &st)) == 0 && S_ISCHR(st.st_mode))
+     {
+       if (access(arg, R_OK | W_OK) == -1)
+--- screen-4.0.3/teln.c.ipv6   2003-09-08 16:26:56.000000000 +0200
++++ screen-4.0.3/teln.c        2006-11-15 13:36:57.000000000 +0100
+@@ -25,6 +25,7 @@
+ #include <sys/socket.h>
+ #include <fcntl.h>
+ #include <netdb.h>
++#include <stdio.h>
+ #include "config.h"
+@@ -37,12 +38,13 @@
+ extern struct layer *flayer;
+ extern int visual_bell;
+ extern char screenterm[];
++extern int af;
+ static void TelReply __P((struct win *, char *, int));
+ static void TelDocmd __P((struct win *, int, int));
+ static void TelDosub __P((struct win *));
+-
+-#define TEL_DEFPORT   23
++// why TEL_DEFPORT has "
++#define TEL_DEFPORT   "23"
+ #define TEL_CONNECTING        (-2)
+ #define TC_IAC          255
+@@ -99,86 +101,78 @@
+ }
+ int
+-TelOpen(args)
+-char **args;
+-{
+-  int fd;
+-  int on = 1;
+-
+-  if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
+-    {
+-      Msg(errno, "TelOpen: socket");
+-      return -1;
+-    }
+-  if (setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on)))
+-    Msg(errno, "TelOpen: setsockopt SO_OOBINLINE");
+-  return fd;
+-}
+-
+-int
+-TelConnect(p)
+-struct win *p;
+-{
+-  int port = TEL_DEFPORT;
+-  struct hostent *hp;
+-  char **args;
++TelOpenAndConnect(struct win *p) {                                                                                           
++  int fd, on = 1;
+   char buf[256];
+-  args = p->w_cmdargs + 1;
+-
+-  if (!*args)
+-    {
+-      Msg(0, "Usage: screen //telnet host [port]");
+-      return -1;
+-    }
+-  if (args[1])
+-    port = atoi(args[1]);
+-  p->w_telsa.sin_family = AF_INET;
+-  if((p->w_telsa.sin_addr.s_addr = inet_addr(*args)) == -1)
+-    {
+-      if ((hp = gethostbyname(*args)) == NULL)
+-        {
+-        Msg(0, "unknown host: %s", *args);
+-        return -1;
+-        }
+-      if (hp->h_length != sizeof(p->w_telsa.sin_addr.s_addr) || hp->h_addrtype != AF_INET)
+-      {
+-        Msg(0, "Bad address type for %s", hp->h_name);
+-        return -1;
+-      }
+-      bcopy((char *)hp->h_addr,(char *)&p->w_telsa.sin_addr.s_addr, hp->h_length);
+-      p->w_telsa.sin_family = hp->h_addrtype;
+-    }
+-  p->w_telsa.sin_port = htons(port);
+-  if (port != TEL_DEFPORT)
+-    sprintf(buf, "Trying %s %d...", inet_ntoa(p->w_telsa.sin_addr), port);
+-  else
+-    sprintf(buf, "Trying %s...", inet_ntoa(p->w_telsa.sin_addr));
+-  WriteString(p, buf, strlen(buf));
+-  if (connect(p->w_ptyfd, (struct sockaddr *)&p->w_telsa, sizeof(p->w_telsa)))
+-    {
+-      if (errno == EINPROGRESS)
+-        {
+-        p->w_telstate = TEL_CONNECTING;
+-        p->w_telconnev.fd = p->w_ptyfd;
+-        p->w_telconnev.handler = tel_connev_fn;
+-        p->w_telconnev.data = (char *)p;
+-        p->w_telconnev.type = EV_WRITE;
+-        p->w_telconnev.pri = 1;
+-        debug("telnet connect in progress...\n");
+-        evenq(&p->w_telconnev);
+-      }
+-      else
+-        {
+-        Msg(errno, "TelOpen: connect");
+-        return -1;
+-      }
+-    }
+-  else
+-    WriteString(p, "connected.\r\n", 12);
+-  if (port == TEL_DEFPORT)
+-    TelReply(p, (char *)tn_init, sizeof(tn_init));
+-  return 0;
++  struct addrinfo hints, *res0, *res;                                                                                        
++                                                                                                                             
++  if (!(p->w_cmdargs[1])) {                                                                                                  
++    Msg(0, "Usage: screen //telnet host [port]");                                                                            
++    return -1;                                                                                                               
++  }                                                                                                                          
++                                                                                                                             
++  memset(&hints, 0, sizeof(hints));                                                                                          
++  hints.ai_family = af;                                                                                                      
++  hints.ai_socktype = SOCK_STREAM;                                                                                           
++  hints.ai_protocol = IPPROTO_TCP;                                                                                           
++  if(getaddrinfo(p->w_cmdargs[1], p->w_cmdargs[2] ? p->w_cmdargs[2] : TEL_DEFPORT,                                           
++                 &hints, &res0)) {                                                                                           
++     Msg(0, "unknown host: %s", p->w_cmdargs[1]);
++     return -1;                                                                                                              
++  }                                                                                                                          
++                                                                                                                             
++  for(res = res0; res; res = res->ai_next) {                                                                                 
++    if((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) {                                            
++      if(res->ai_next)                                                                                                       
++        continue;                                                                                                            
++      else {                                                                                                                 
++        Msg(errno, "TelOpenAndConnect: socket");                                                                             
++        freeaddrinfo(res0);                                                                                                  
++        return -1;                                                                                                           
++      }                                                                                                                      
++    }                                                                                                                        
++                                                                                                                             
++    if (setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on)))                                                   
++      Msg(errno, "TelOpenAndConnect: setsockopt SO_OOBINLINE");                                                               
++                                                                                                                             
++    if (p->w_cmdargs[2] && strcmp(p->w_cmdargs[2], TEL_DEFPORT))                                                             
++      snprintf(buf, 256, "Trying %s %s...", p->w_cmdargs[1], p->w_cmdargs[2]);                                               
++    else                                                                                                                     
++      snprintf(buf, 256, "Trying %s...", p->w_cmdargs[1]);                                                                   
++    WriteString(p, buf, strlen(buf));
++    if (connect(fd, res->ai_addr, res->ai_addrlen)) {                                                                        
++      if (errno == EINPROGRESS) {                                                                                            
++       p->w_telstate = TEL_CONNECTING;                                                                                       
++       p->w_telconnev.fd = fd;                                                                                               
++       p->w_telconnev.handler = tel_connev_fn;                                                                               
++       p->w_telconnev.data = (char *)p;                                                                                      
++       p->w_telconnev.type = EV_WRITE;                                                                                       
++       p->w_telconnev.pri = 1;                                                                                               
++       debug("telnet connect in progress...\n");                                                                             
++       evenq(&p->w_telconnev);                                                                                               
++      }                                                                                                                      
++      else {                                                                                                                 
++        close(fd);                                                                                                           
++       if(res->ai_next)                                                                                                      
++         continue;                                                                                                           
++       else {                                                                                                                
++          Msg(errno, "TelOpenAndConnect: connect");                                                                          
++          freeaddrinfo(res0);                                                                                                
++          return -1;                                                                                                         
++       }                                                                                                                     
++      }
++    }                                                                                                                        
++    else                                                                                                                     
++      WriteString(p, "connected.\r\n", 12);                                                                                  
++    if (!(p->w_cmdargs[2] && strcmp(p->w_cmdargs[2], TEL_DEFPORT)))
++      TelReply(p, (char *)tn_init, sizeof(tn_init));                                                                         
++    p->w_ptyfd = fd;                                                                                                         
++    memcpy(&p->w_telsa, &res->ai_addr, sizeof(res->ai_addr));                                                                
++    freeaddrinfo(res0);                                                                                                      
++    return 0;                                                                                                                
++  }                  
++  return -1;
+ }
+ int
+--- screen-4.0.3/help.c.ipv6   2003-09-08 16:25:33.000000000 +0200
++++ screen-4.0.3/help.c        2006-11-15 13:36:57.000000000 +0100
+@@ -49,6 +49,10 @@
+ {
+   printf("Use: %s [-opts] [cmd [args]]\n", myname);
+   printf(" or: %s -r [host.tty]\n\nOptions:\n", myname);
++#ifdef BUILTIN_TELNET                                                                                                        
++  printf("-4            Use IPv4.\n");                                                                                       
++  printf("-6            Use IPv6.\n");                                                                                       
++#endif    
+   printf("-a            Force all capabilities into each window's termcap.\n");
+   printf("-A -[r|R]     Adapt all windows to the new display width & height.\n");
+   printf("-c file       Read configuration file instead of '.screenrc'.\n");
+--- screen-4.0.3/screen.c.ipv6 2003-09-08 16:26:41.000000000 +0200
++++ screen-4.0.3/screen.c      2006-11-15 13:36:57.000000000 +0100
+@@ -231,8 +231,9 @@
+ struct win *fore;
+ struct win *windows;
+ struct win *console_window;
+-
+-
++#ifdef BUILTIN_TELNET                                                                                                        
++int af;                                                                                                                      
++#endif 
+ /*
+  * Do this last
+@@ -471,6 +472,9 @@
+   nwin = nwin_undef;
+   nwin_options = nwin_undef;
+   strcpy(screenterm, "screen");
++#ifdef BUILTIN_TELNET                                                                                                        
++  af = AF_UNSPEC;                                                                                                            
++#endif
+   logreopen_register(lf_secreopen);
+@@ -505,6 +509,14 @@
+           {
+             switch (*ap)
+               {
++#ifdef BUILTIN_TELNET                                                                                                        
++               case '4':                                                                                                     
++                 af = AF_INET;                                                                                               
++                 break;                                                                                                      
++               case '6':                                                                                                     
++                 af = AF_INET6;                                                                                              
++                 break;                                                                                                      
++#endif         
+               case 'a':
+                 nwin_options.aflag = 1;
+                 break;
+--- screen-4.0.3/extern.h.ipv6 2003-08-22 14:27:57.000000000 +0200
++++ screen-4.0.3/extern.h      2006-11-15 13:36:57.000000000 +0100
+@@ -446,8 +446,7 @@
+ /* teln.c */
+ #ifdef BUILTIN_TELNET
+-extern int   TelOpen __P((char **));
+-extern int   TelConnect __P((struct win *));
++extern int   TelOpenAndConnect __P((struct win *));
+ extern int   TelIsline __P((struct win *p));
+ extern void  TelProcessLine __P((char **, int *));
+ extern int   DoTelnet __P((char *, int *, int));
diff --git a/pkgs/core/screen/patches/screen-4.0.3-libs.patch b/pkgs/core/screen/patches/screen-4.0.3-libs.patch
new file mode 100644 (file)
index 0000000..a548787
--- /dev/null
@@ -0,0 +1,50 @@
+diff -up screen-4.0.3/configure.in.libs screen-4.0.3/configure.in
+--- screen-4.0.3/configure.in.libs     2003-06-03 13:58:24.000000000 +0200
++++ screen-4.0.3/configure.in  2008-02-26 13:58:29.000000000 +0100
+@@ -196,7 +196,9 @@ AC_EGREP_CPP(yes,
+ ], LIBS="$LIBS -lsocket -linet";seqptx=1)
+ oldlibs="$LIBS"
+-LIBS="$LIBS -lelf"
++# Humm we don't actually need to link against libelf for linux
++#LIBS="$LIBS -lelf"
++LIBS="$LIBS"
+ AC_CHECKING(SVR4)
+ AC_TRY_LINK([#include <utmpx.h>
+ ],,
+@@ -643,14 +645,10 @@ dnl
+ AC_CHECKING(for tgetent)
+ AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+ olibs="$LIBS"
+-LIBS="-lcurses $olibs"
+-AC_CHECKING(libcurses)
++LIBS="-ltinfo $olibs"
++AC_CHECKING(libtinfo)
+ AC_TRY_LINK(,[
+-#ifdef __hpux
+-__sorry_hpux_libcurses_is_totally_broken_in_10_10();
+-#else
+ tgetent((char *)0, (char *)0);
+-#endif
+ ],,
+ LIBS="-ltermcap $olibs"
+ AC_CHECKING(libtermcap)
+@@ -666,7 +664,7 @@ AC_MSG_ERROR(!!! no tgetent - no screen)
+ AC_TRY_RUN([
+ main()
+ {
+- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
++      return 1;
+ }], AC_NOTE(- you use the termcap database),
+ AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
+ AC_CHECKING(ospeed)
+@@ -864,9 +862,6 @@ fi
+ dnl
+ dnl    ****  loadav  ****
+ dnl
+-AC_CHECKING(for libutil(s))
+-test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
+-test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
+ AC_CHECKING(getloadavg)
+ AC_TRY_LINK(,[getloadavg((double *)0, 0);],
diff --git a/pkgs/core/screen/patches/screen-4.0.3-screenrc.patch b/pkgs/core/screen/patches/screen-4.0.3-screenrc.patch
new file mode 100644 (file)
index 0000000..66b367d
--- /dev/null
@@ -0,0 +1,139 @@
+diff -up screen-4.0.3/etc/etcscreenrc.screenrc screen-4.0.3/etc/etcscreenrc
+--- screen-4.0.3/etc/etcscreenrc.screenrc      2003-12-05 14:46:13.000000000 +0100
++++ screen-4.0.3/etc/etcscreenrc       2009-09-25 14:20:31.000000000 +0200
+@@ -55,15 +55,15 @@ terminfo sun 'up=^K:AL=\E[%p1%dL:DL=\E[%
+ #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 (no,no, may (jw)) not work anymore.
+-termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
+-terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
++#termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
++#terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
+ # Long time I had this in my private screenrc file. But many people
+ # seem to want it (jw):
+ # we do not want the width to change to 80 characters on startup:
+ # on suns, /etc/termcap has :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:
+-termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
+-terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
++#termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
++#terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
+ #
+ # Do not use xterms alternate window buffer. 
+diff -up screen-4.0.3/etc/screenrc.screenrc screen-4.0.3/etc/screenrc
+--- screen-4.0.3/etc/screenrc.screenrc 2006-10-23 15:06:32.000000000 +0200
++++ screen-4.0.3/etc/screenrc  2009-09-25 14:31:30.000000000 +0200
+@@ -1,21 +1,11 @@
+-#
+-# Example of a user's .screenrc file
+-#
+-
+ # This is how one can set a reattach password:
+ # password ODSJQf.4IJN7E    # "1234"
+-# no annoying audible bell, please
+-vbell on
+-
+-# detach on hangup
+-autodetach on
+-
+ # don't display the copyright page
+ startup_message off
+ # emulate .logout message
+-pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
++pow_detach_msg "Screen session of $LOGNAME $:cr:$:nl:ended."
+ # advertise hardstatus support to $TERMCAP
+ # termcapinfo  * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
+@@ -40,18 +30,12 @@ defscrollback 1000
+ ################
+ #
+-# xterm tweaks
++# more 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
++#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
+@@ -60,14 +44,14 @@ 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~'
++#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'
++#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'
+@@ -103,32 +87,12 @@ termcapinfo linux C8
+ # old rxvt versions also need this
+ # termcapinfo rxvt C8
+-
+-################
+-#
+-# keybindings
+-#
+-
+-#remove some stupid / dangerous key bindings
+-bind k
+-bind ^k
+-bind .
+-bind ^\
+-bind \\
+-bind ^h
+-bind h
+-#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 [.]
++#register [ "\033:se noai\015a"
++#register ] "\033:se ai\015a"
++#bind ^] paste [.]
+ ################
+ #
+@@ -140,9 +104,14 @@ bind ^] paste [.]
+ # screen -t 40 2 rlogin server
+ # caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
++## alternative caption, gives window list, LOGNAME and current date:
++# caption always "%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=%{mk}@%H %{yk}%D %{ck}%M%{wk} %{ck}%d %{gk}%c"
+ # hardstatus alwaysignore
+ # hardstatus alwayslastline "%Lw"
++# Red Hat's normal status line
++hardstatus string "[screen %n%?: %t%?] %h"
++
+ # bind = resize =
+ # bind + resize +1
+ # bind - resize -1
diff --git a/pkgs/core/screen/patches/screen-4.0.3-stropts.patch b/pkgs/core/screen/patches/screen-4.0.3-stropts.patch
new file mode 100644 (file)
index 0000000..d6cbed7
--- /dev/null
@@ -0,0 +1,48 @@
+diff -up screen-4.0.3/tty.sh.stropts screen-4.0.3/tty.sh
+--- screen-4.0.3/tty.sh.stropts        2003-09-08 16:24:25.000000000 +0200
++++ screen-4.0.3/tty.sh        2008-04-07 11:28:34.000000000 +0200
+@@ -76,7 +76,7 @@ exit 0
+ #endif
+ #include "config.h"
+-#ifdef SVR4
++#if 0
+ #include <sys/stropts.h>      /* for I_POP */
+ #endif
+diff -up screen-4.0.3/screen.c.stropts screen-4.0.3/screen.c
+--- screen-4.0.3/screen.c.stropts      2008-04-07 11:25:21.000000000 +0200
++++ screen-4.0.3/screen.c      2008-04-07 11:29:14.000000000 +0200
+@@ -50,7 +50,7 @@
+ #include "config.h"
+-#ifdef SVR4
++#if 0
+ # include <sys/stropts.h>
+ #endif
+diff -up screen-4.0.3/process.c.stropts screen-4.0.3/process.c
+--- screen-4.0.3/process.c.stropts     2003-09-18 14:53:54.000000000 +0200
++++ screen-4.0.3/process.c     2008-04-07 11:29:47.000000000 +0200
+@@ -37,7 +37,7 @@
+ #include "config.h"
+ /* for solaris 2.1, Unixware (SVR4.2) and possibly others: */
+-#ifdef SVR4
++#if 0 
+ # include <sys/stropts.h>
+ #endif
+diff -up screen-4.0.3/pty.c.stropts screen-4.0.3/pty.c
+--- screen-4.0.3/pty.c.stropts 2003-09-08 16:26:18.000000000 +0200
++++ screen-4.0.3/pty.c 2008-04-07 11:30:07.000000000 +0200
+@@ -34,7 +34,7 @@
+ #endif
+ /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
+-#ifdef HAVE_SVR4_PTYS
++#if 0 
+ # include <sys/stropts.h>
+ #endif