summaryrefslogtreecommitdiffstats
path: root/usr.bin/rlogin
diff options
context:
space:
mode:
authorcharnier <charnier@FreeBSD.org>1997-08-05 06:46:46 +0000
committercharnier <charnier@FreeBSD.org>1997-08-05 06:46:46 +0000
commitb064615bee4a2c9979fdabea3dc3556879d0706f (patch)
tree2839a41d63d96f78308d763200305892f65771f0 /usr.bin/rlogin
parent828df579fbfc9c6db14f3ed7eae079e9dfb771e7 (diff)
downloadFreeBSD-src-b064615bee4a2c9979fdabea3dc3556879d0706f.zip
FreeBSD-src-b064615bee4a2c9979fdabea3dc3556879d0706f.tar.gz
Use err(3). Document -l flag.
Obtained from: OpenBSD
Diffstat (limited to 'usr.bin/rlogin')
-rw-r--r--usr.bin/rlogin/rlogin.117
-rw-r--r--usr.bin/rlogin/rlogin.c55
2 files changed, 34 insertions, 38 deletions
diff --git a/usr.bin/rlogin/rlogin.1 b/usr.bin/rlogin/rlogin.1
index eea0c59..9ba0387 100644
--- a/usr.bin/rlogin/rlogin.1
+++ b/usr.bin/rlogin/rlogin.1
@@ -100,12 +100,19 @@ This specification may be as a literal character, or as an octal
value in the form \ennn.
.It Fl k
The
-.FL k
+.Fl k
option requests rlogin to obtain tickets for the remote host
in realm
.Ar realm
instead of the remote host's realm as determined by
.Xr krb_realmofhost 3 .
+.It Fl l
+The
+.Fl l
+option specifies a different
+.Ar username
+for the remote login.
+If this option is not specified, your local username will be used.
.It Fl x
The
.Fl x
@@ -121,7 +128,7 @@ increased security.
.Pp
A line of the form ``<escape char>.'' disconnects from the remote host.
Similarly, the line ``<escape char>^Z'' will suspend the
-.Nm rlogin
+.Nm
session, and ``<escape char><delayed-suspend char>'' suspends the
send portion of the rlogin, but allows output from the remote system.
By default, the tilde (``~'') character is the escape character, and
@@ -129,7 +136,7 @@ normally control-Y (``^Y'') is the delayed-suspend character.
.Pp
All echoing takes place at the remote site, so that (except for delays)
the
-.Nm rlogin
+.Nm
is transparent.
Flow control via ^S/^Q and flushing of input and output on interrupts
are handled properly.
@@ -160,7 +167,7 @@ the remote user.
.Pp
If Kerberos authentication fails, a warning message is printed and the
standard Berkeley
-.Nm rlogin
+.Nm
is used instead.
.Sh ENVIRONMENT
The following environment variable is utilized by
@@ -193,7 +200,7 @@ Determines the user's terminal type.
.Sh HISTORY
The
-.Nm rlogin
+.Nm
command appeared in
.Bx 4.2 .
.Sh BUGS
diff --git a/usr.bin/rlogin/rlogin.c b/usr.bin/rlogin/rlogin.c
index 2ddc2b8..63cf55f 100644
--- a/usr.bin/rlogin/rlogin.c
+++ b/usr.bin/rlogin/rlogin.c
@@ -32,13 +32,17 @@
*/
#ifndef lint
-static char copyright[] =
+static const char copyright[] =
"@(#) Copyright (c) 1983, 1990, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
+#if 0
static char sccsid[] = "@(#)rlogin.c 8.1 (Berkeley) 6/6/93";
+#endif
+static const char rcsid[] =
+ "$Id$";
#endif /* not lint */
/*
@@ -55,6 +59,7 @@ static char sccsid[] = "@(#)rlogin.c 8.1 (Berkeley) 6/6/93";
#include <netinet/ip.h>
#include <netinet/tcp.h>
+#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
@@ -235,10 +240,8 @@ main(argc, argv)
if (*argv)
usage();
- if (!(pw = getpwuid(uid = getuid()))) {
- (void)fprintf(stderr, "rlogin: unknown user id.\n");
- exit(1);
- }
+ if (!(pw = getpwuid(uid = getuid())))
+ errx(1, "unknown user id");
if (!user)
user = pw->pw_name;
@@ -255,10 +258,8 @@ main(argc, argv)
#endif
if (sp == NULL)
sp = getservbyname("login", "tcp");
- if (sp == NULL) {
- (void)fprintf(stderr, "rlogin: login/tcp: unknown service.\n");
- exit(1);
- }
+ if (sp == NULL)
+ errx(1, "login/tcp: unknown service");
#define MAX_TERM_LENGTH (sizeof(term) - 1 - MAX_SPEED_LENGTH - 1)
@@ -291,11 +292,8 @@ try_connect:
/* Fully qualify hostname (needed for krb_realmofhost). */
hp = gethostbyname(host);
- if (hp != NULL && !(host = strdup(hp->h_name))) {
- (void)fprintf(stderr, "rlogin: %s\n",
- strerror(ENOMEM));
- exit(1);
- }
+ if (hp != NULL && !(host = strdup(hp->h_name)))
+ errx(1, "%s", strerror(ENOMEM));
rem = KSUCCESS;
errno = 0;
@@ -314,11 +312,8 @@ try_connect:
if (rem < 0) {
use_kerberos = 0;
sp = getservbyname("login", "tcp");
- if (sp == NULL) {
- (void)fprintf(stderr,
- "rlogin: unknown service login/tcp.\n");
- exit(1);
- }
+ if (sp == NULL)
+ errx(1, "unknown service login/tcp");
if (errno == ECONNREFUSED)
warning("remote host doesn't support Kerberos");
if (errno == ENOENT)
@@ -327,11 +322,8 @@ try_connect:
}
} else {
#ifdef CRYPT
- if (doencrypt) {
- (void)fprintf(stderr,
- "rlogin: the -x flag requires Kerberos authentication.\n");
- exit(1);
- }
+ if (doencrypt)
+ errx(1, "the -x flag requires Kerberos authentication");
#endif /* CRYPT */
rem = rcmd(&host, sp->s_port, pw->pw_name, user, term, 0);
}
@@ -344,15 +336,14 @@ try_connect:
if (dflag &&
setsockopt(rem, SOL_SOCKET, SO_DEBUG, &one, sizeof(one)) < 0)
- (void)fprintf(stderr, "rlogin: setsockopt: %s.\n",
- strerror(errno));
+ warn("setsockopt");
if (Dflag &&
setsockopt(rem, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)) < 0)
- perror("rlogin: setsockopt NODELAY (ignored)");
+ warn("setsockopt NODELAY (ignored)");
one = IPTOS_LOWDELAY;
if (setsockopt(rem, IPPROTO_IP, IP_TOS, (char *)&one, sizeof(int)) < 0)
- perror("rlogin: setsockopt TOS (ignored)");
+ warn("setsockopt TOS (ignored)");
(void)setuid(uid);
doit(omask);
@@ -388,7 +379,7 @@ doit(omask)
setsignal(SIGQUIT);
child = fork();
if (child == -1) {
- (void)fprintf(stderr, "rlogin: fork: %s.\n", strerror(errno));
+ warn("fork");
done(1);
}
if (child == 0) {
@@ -712,8 +703,7 @@ oob(signo)
(void)ioctl(1, TIOCFLUSH, (char *)&out);
for (;;) {
if (ioctl(rem, SIOCATMARK, &atmark) < 0) {
- (void)fprintf(stderr, "rlogin: ioctl: %s.\n",
- strerror(errno));
+ warn("ioctl");
break;
}
if (atmark)
@@ -791,8 +781,7 @@ reader(omask)
if (rcvcnt < 0) {
if (errno == EINTR)
continue;
- (void)fprintf(stderr, "rlogin: read: %s.\n",
- strerror(errno));
+ warn("read");
return (-1);
}
}
OpenPOWER on IntegriCloud