Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-lcc!ames!oliveb!sun!gorodish!guy
From: guy%gorodish@Sun.COM (Guy Harris)
Newsgroups: comp.bugs.4bsd
Subject: "rlogin" doesn't accept the normal UNIX command syntax
Message-ID: <11388@sun.uucp>
Date: Wed, 14-Jan-87 00:54:09 EST
Article-I.D.: sun.11388
Posted: Wed Jan 14 00:54:09 1987
Date-Received: Wed, 14-Jan-87 19:49:31 EST
Sender: news@sun.uucp
Lines: 80
Index: ucb/rlogin.c 4.3BSD
Description:
"rlogin" does NOT permit you to say "rlogin -l ";
it REQUIRES you to put the immediately after the command.
name. This is presumably a consequence of the code that causes
"rlogin" to act as "rlogin host" when invoked as "host"; this
is not, however, an excuse for this kind of behavior on its part.
Repeat-By:
Try assuming that "rlogin" is a normal UNIX command with the normal
UNIX command syntax, and get unpleasantly surprised.
Fix:
Here's some changes to make it accept the
"rlogin -l " syntax as well as the
"rlogin -l " and the " -l " syntax:
*** /arch/4.3/usr/src/ucb/rlogin.c Sun Mar 30 16:39:06 1986
--- rlogin.c Tue Jan 13 21:47:28 1987
***************
*** 82,89 ****
else
host = argv[0];
argv++, --argc;
! if (!strcmp(host, "rlogin"))
! host = *argv++, --argc;
another:
if (argc > 0 && !strcmp(*argv, "-d")) {
argv++, argc--;
--- 82,93 ----
else
host = argv[0];
argv++, --argc;
! if (strcmp(host, "rlogin") == 0) {
! if (*argv[0] != '-')
! host = *argv++, --argc;
! else
! host = 0;
! }
another:
if (argc > 0 && !strcmp(*argv, "-d")) {
argv++, argc--;
***************
*** 112,119 ****
argv++, argc--;
goto another;
}
! if (host == 0)
! goto usage;
if (argc > 0)
goto usage;
pwd = getpwuid(getuid());
--- 116,126 ----
argv++, argc--;
goto another;
}
! if (host == 0) {
! if (argc == 0)
! goto usage;
! host = *argv++, --argc;
! }
if (argc > 0)
goto usage;
pwd = getpwuid(getuid());
***************
*** 157,163 ****
/*NOTREACHED*/
usage:
fprintf(stderr,
! "usage: rlogin host [ -ex ] [ -l username ] [ -8 ] [ -L ]\n");
exit(1);
}
--- 164,170 ----
/*NOTREACHED*/
usage:
fprintf(stderr,
! "usage: rlogin [ -ex ] [ -l username ] [ -8 ] [ -L ] host\n");
exit(1);
}