telnet(1): add quiet mode ("telnet -Q")

Reviewed By:	imp, phk
Sponsored by:	NetApp, Inc.
Sponsored by:	Klara, Inc.
X-NetApp-PR:	#54
Differential Revision:	https://reviews.freebsd.org/D30819
This commit is contained in:
Edward Tomasz Napierala 2021-06-21 17:07:39 +01:00
parent 06250515cf
commit 224c772ca5
3 changed files with 25 additions and 8 deletions

View file

@ -122,6 +122,7 @@ static char line[256];
static char saveline[256];
static int margc;
static char *margv[20];
int quiet_mode;
#ifdef OPIE
#include <sys/wait.h>
@ -2042,7 +2043,8 @@ static int
status(int argc, char *argv[])
{
if (connected) {
printf("Connected to %s.\n", hostname);
if (!quiet_mode)
printf("Connected to %s.\n", hostname);
if ((argc < 2) || strcmp(argv[1], "notmuch")) {
int mode = getconnmode();
@ -2071,7 +2073,8 @@ status(int argc, char *argv[])
} else {
printf("No connection.\n");
}
printf("Escape character is '%s'.\n", control(escape));
if (!quiet_mode)
printf("Escape character is '%s'.\n", control(escape));
(void) fflush(stdout);
return 1;
}
@ -2264,7 +2267,8 @@ tn(int argc, char *argv[])
memset(&su, 0, sizeof su);
su.sun_family = AF_UNIX;
strncpy(su.sun_path, hostp, sizeof su.sun_path);
printf("Trying %s...\n", hostp);
if (!quiet_mode)
printf("Trying %s...\n", hostp);
net = socket(PF_UNIX, SOCK_STREAM, 0);
if ( net < 0) {
perror("socket");
@ -2373,7 +2377,8 @@ tn(int argc, char *argv[])
}
}
do {
printf("Trying %s...\n", sockaddr_ntop(res->ai_addr));
if (!quiet_mode)
printf("Trying %s...\n", sockaddr_ntop(res->ai_addr));
net = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
setuid(getuid());
if (net < 0) {
@ -2491,7 +2496,10 @@ tn(int argc, char *argv[])
(void) call(status, "status", "notmuch", 0);
telnet(user);
(void) NetClose(net);
ExitString("Connection closed by foreign host.\n",1);
if (quiet_mode)
ExitString("",1);
else
ExitString("Connection closed by foreign host.\n",1);
/*NOTREACHED*/
fail:
if (res0 != NULL)

View file

@ -63,6 +63,7 @@ char *ipsec_policy_out = NULL;
#endif
extern int tos;
extern int quiet_mode;
int family = AF_UNSPEC;
@ -152,7 +153,7 @@ main(int argc, char *argv[])
#define IPSECOPT
#endif
while ((ch = getopt(argc, argv,
"468B:EKLNS:X:acde:fFk:l:n:rs:uxy" IPSECOPT)) != -1)
"468B:EKLNQS:X:acde:fFk:l:n:rs:uxy" IPSECOPT)) != -1)
#undef IPSECOPT
{
switch(ch) {
@ -184,6 +185,9 @@ main(int argc, char *argv[])
case 'N':
doaddrlookup = 0;
break;
case 'Q':
quiet_mode = 1;
break;
case 'S':
#ifdef HAS_GETTOS

View file

@ -28,7 +28,7 @@
.\" @(#)telnet.1 8.6 (Berkeley) 6/1/94
.\" $FreeBSD$
.\"
.Dd August 7, 2020
.Dd June 21, 2021
.Dt TELNET 1
.Os
.Sh NAME
@ -38,7 +38,7 @@
protocol
.Sh SYNOPSIS
.Nm
.Op Fl 468EFKLNacdfruxy
.Op Fl 468EFKLNQacdfruxy
.Op Fl B Ar baudrate
.Op Fl S Ar tos
.Op Fl X Ar authtype
@ -108,6 +108,11 @@ option to be negotiated on output.
.It Fl N
Prevents IP address to name lookup when destination host is given
as an IP address.
.It Fl Q
Quiet mode.
This suppresses the messages
.Nm
would normally output upon connecting or disconnecting.
.It Fl S Ar tos
Sets the IP type-of-service (TOS) option for the telnet
connection to the value