New upstream version 4.3.1 (#1237109)
Signed-off-by: Petr Hracek <phracek@redhat.com>
This commit is contained in:
parent
e75fe4120e
commit
5918730cc7
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ screen-4.0.3.tar.gz
|
||||
/screen-20110819git450e8f.tar.bz2
|
||||
/screen-20120314git3c2946.tar.bz2
|
||||
/screen-4.2.1.tar.gz
|
||||
/screen-4.3.1.tar.gz
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
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,
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ffe2e37..768f762 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -203,7 +203,8 @@ 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"
|
||||
+# Humm we don't actually need to link against libelf for Linux
|
||||
+LIBS="$LIBS"
|
||||
AC_CHECKING(SVR4)
|
||||
AC_TRY_LINK([#include <utmpx.h>
|
||||
],,
|
||||
@@ -643,14 +645,10 @@ dnl
|
||||
@@ -657,14 +658,10 @@ dnl
|
||||
AC_CHECKING(for tgetent)
|
||||
AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
|
||||
olibs="$LIBS"
|
||||
@ -29,16 +29,16 @@ diff -up screen-4.0.3/configure.in.libs screen-4.0.3/configure.in
|
||||
],,
|
||||
LIBS="-ltermcap $olibs"
|
||||
AC_CHECKING(libtermcap)
|
||||
@@ -666,7 +664,7 @@ AC_MSG_ERROR(!!! no tgetent - no screen)
|
||||
@@ -689,7 +686,7 @@ AC_MSG_ERROR(!!! no tgetent - no screen)))))))))
|
||||
AC_TRY_RUN([
|
||||
main()
|
||||
{
|
||||
- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
|
||||
+ return 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
|
||||
@@ -887,9 +884,6 @@ fi
|
||||
dnl
|
||||
dnl **** loadav ****
|
||||
dnl
|
||||
@ -1,348 +0,0 @@
|
||||
diff --git a/doc/screen.1 b/doc/screen.1
|
||||
index fd5c06e..3703596 100644
|
||||
--- a/doc/screen.1
|
||||
+++ b/doc/screen.1
|
||||
@@ -403,6 +403,13 @@ several screen sessions running. You can use the \fB-d\fP or
|
||||
\fB-r\fP option to tell screen to look only for attached or
|
||||
detached screen sessions. Note that this command doesn't work if
|
||||
the session is password protected.
|
||||
+.TP 5
|
||||
+.B \-4
|
||||
+Resolve hostnames only to IPv4 addresses.
|
||||
+.TP 5
|
||||
+.B \-6
|
||||
+Resolve hostnames only to IPv6 addresses.
|
||||
+
|
||||
|
||||
.SH "DEFAULT KEY BINDINGS"
|
||||
.ta 12n 26n
|
||||
diff --git a/extern.h b/extern.h
|
||||
index a3e3ca2..9b564e6 100644
|
||||
--- a/extern.h
|
||||
+++ b/extern.h
|
||||
@@ -459,8 +459,7 @@ extern void LayProcessMouseSwitch __P((struct layer *, int));
|
||||
|
||||
/* 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/help.c b/help.c
|
||||
index 8446f34..a2b8614 100644
|
||||
--- a/help.c
|
||||
+++ b/help.c
|
||||
@@ -66,6 +66,10 @@ char *myname, *message, *arg;
|
||||
{
|
||||
printf("Use: %s [-opts] [cmd [args]]\n", myname);
|
||||
printf(" or: %s -r [host.tty]\n\nOptions:\n", myname);
|
||||
+#ifdef BUILTIN_TELNET
|
||||
+ printf("-4 Resolve hostnames only to IPv4 addresses.\n");
|
||||
+ printf("-6 Resolve hostnames only to IPv6 addresses.\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");
|
||||
diff --git a/screen.c b/screen.c
|
||||
index 473e4fa..c193f46 100644
|
||||
--- a/screen.c
|
||||
+++ b/screen.c
|
||||
@@ -250,6 +250,10 @@ struct win *windows;
|
||||
struct win *console_window;
|
||||
|
||||
|
||||
+#ifdef BUILTIN_TELNET
|
||||
+int af;
|
||||
+#endif
|
||||
+
|
||||
|
||||
/*
|
||||
* Do this last
|
||||
@@ -507,6 +511,9 @@ char **av;
|
||||
nwin = nwin_undef;
|
||||
nwin_options = nwin_undef;
|
||||
strcpy(screenterm, "screen");
|
||||
+#ifdef BUILTIN_TELNET
|
||||
+ af = AF_UNSPEC;
|
||||
+#endif
|
||||
|
||||
logreopen_register(lf_secreopen);
|
||||
|
||||
@@ -541,6 +548,14 @@ char **av;
|
||||
{
|
||||
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;
|
||||
diff --git a/teln.c b/teln.c
|
||||
index 1764dbc..5f0cb0b 100644
|
||||
--- a/teln.c
|
||||
+++ b/teln.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <netdb.h>
|
||||
+#include <stdio.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
@@ -42,12 +43,14 @@ extern struct win *fore;
|
||||
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
|
||||
@@ -105,86 +108,76 @@ char *data;
|
||||
}
|
||||
|
||||
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;
|
||||
+ struct addrinfo hints, *res0, *res;
|
||||
char buf[256];
|
||||
|
||||
- args = p->w_cmdargs + 1;
|
||||
-
|
||||
- if (!*args)
|
||||
- {
|
||||
- Msg(0, "Usage: screen //telnet host [port]");
|
||||
- return -1;
|
||||
+ 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 (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;
|
||||
- }
|
||||
+ 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 (port == TEL_DEFPORT)
|
||||
- TelReply(p, (char *)tn_init, sizeof(tn_init));
|
||||
- return 0;
|
||||
+ 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
|
||||
diff --git a/window.c b/window.c
|
||||
index c9d6817..2ad6041 100644
|
||||
--- a/window.c
|
||||
+++ b/window.c
|
||||
@@ -610,6 +610,13 @@ struct NewWindow *newwin;
|
||||
#endif
|
||||
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;
|
||||
@@ -772,7 +779,7 @@ struct NewWindow *newwin;
|
||||
#ifdef BUILTIN_TELNET
|
||||
if (type == W_TYPE_TELNET)
|
||||
{
|
||||
- if (TelConnect(p))
|
||||
+ if (TelOpenAndConnect(p))
|
||||
{
|
||||
FreeWindow(p);
|
||||
return -1;
|
||||
@@ -884,6 +891,13 @@ struct win *p;
|
||||
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;
|
||||
|
||||
@@ -917,7 +931,7 @@ struct win *p;
|
||||
#ifdef BUILTIN_TELNET
|
||||
if (p->w_type == W_TYPE_TELNET)
|
||||
{
|
||||
- if (TelConnect(p))
|
||||
+ if (TelOpenAndConnect(p))
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -1076,16 +1090,6 @@ char **namep;
|
||||
*namep = "telnet";
|
||||
return 0;
|
||||
}
|
||||
-#ifdef BUILTIN_TELNET
|
||||
- if (strcmp(arg, "//telnet") == 0)
|
||||
- {
|
||||
- f = TelOpen(args + 1);
|
||||
- lflag = 0;
|
||||
- *typep = W_TYPE_TELNET;
|
||||
- *namep = "telnet";
|
||||
- }
|
||||
- else
|
||||
-#endif
|
||||
if (strncmp(arg, "//", 2) == 0)
|
||||
{
|
||||
Msg(0, "Invalid argument '%s'", arg);
|
||||
diff --git a/window.h b/window.h
|
||||
index 7311ecb..7fc7c72 100644
|
||||
--- a/window.h
|
||||
+++ b/window.h
|
||||
@@ -268,7 +268,7 @@ struct win
|
||||
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];
|
||||
53
screen.spec
53
screen.spec
@ -1,34 +1,30 @@
|
||||
%bcond_with multiuser
|
||||
%global _hardened_build 1
|
||||
|
||||
Summary: A screen manager that supports multiple logins on one terminal
|
||||
Name: screen
|
||||
Version: 4.2.1
|
||||
Release: 6%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: http://www.gnu.org/software/screen
|
||||
Requires(pre): /usr/sbin/groupadd
|
||||
Summary: A screen manager that supports multiple logins on one terminal
|
||||
Name: screen
|
||||
Version: 4.3.1
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: http://www.gnu.org/software/screen
|
||||
Requires(pre): /usr/sbin/groupadd
|
||||
Requires(preun): /sbin/install-info
|
||||
Requires(post): /sbin/install-info
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: ncurses-devel pam-devel libutempter-devel autoconf texinfo
|
||||
BuildRequires: automake
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: ncurses-devel pam-devel libutempter-devel autoconf texinfo
|
||||
BuildRequires: automake
|
||||
# for %%_tmpfilesdir macro
|
||||
BuildRequires: systemd
|
||||
BuildRequires: systemd
|
||||
|
||||
#Source0: ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-%{version}.tar.gz
|
||||
# snapshot from git://git.savannah.gnu.org/screen.git
|
||||
Source0: screen-4.2.1.tar.gz
|
||||
Source1: screen.pam
|
||||
Source0: ftp://ftp.gnu.org/gnu/screen/screen-%{version}.tar.gz
|
||||
Source1: screen.pam
|
||||
|
||||
Patch1: screen-4.0.3-libs.patch
|
||||
Patch2: screen-4.0.3-screenrc.patch
|
||||
Patch3: screen-ipv6.patch
|
||||
Patch4: screen-E3.patch
|
||||
Patch5: screen-4.1.0-suppress_remap.patch
|
||||
Patch6: screen-4.2.1-crypt.patch
|
||||
Patch7: screen-altscreen.patch
|
||||
Patch1: screen-4.3.1-libs.patch
|
||||
Patch2: screen-4.3.1-screenrc.patch
|
||||
Patch3: screen-E3.patch
|
||||
Patch4: screen-4.3.1-suppress_remap.patch
|
||||
Patch5: screen-4.3.1-crypt.patch
|
||||
|
||||
%description
|
||||
The screen utility allows you to have multiple logins on just one
|
||||
@ -44,11 +40,9 @@ support multiple logins on one terminal.
|
||||
%setup -q -n %{name}-%{version}
|
||||
%patch1 -p1 -b .libs
|
||||
%patch2 -p1 -b .screenrc
|
||||
%patch3 -p1 -b .ipv6
|
||||
%patch4 -p1 -b .E3
|
||||
%patch5 -p1 -b .suppress_remap
|
||||
%patch6 -p1 -b .crypto
|
||||
%patch7 -p1 -b .altscreen.patch
|
||||
%patch3 -p1 -b .E3
|
||||
%patch4 -p1 -b .suppress_remap
|
||||
%patch5 -p1 -b .crypto
|
||||
|
||||
|
||||
%build
|
||||
@ -145,6 +139,9 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Jun 30 2015 Petr Hracek <phracek@redhat.com> - 4.3.1-1
|
||||
- New upstream version 4.3.1 (#1237109)
|
||||
|
||||
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user