[comp.bugs.4bsd] "rlogin" doesn't accept the normal UNIX command syntax

guy%gorodish@Sun.COM (Guy Harris) (01/14/87)

Index:	ucb/rlogin.c 4.3BSD

Description:
	"rlogin" does NOT permit you to say "rlogin -l <user> <host>";
	it REQUIRES you to put the <host> 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 <user> <host>" syntax as well as the
	"rlogin <host> -l <user>" and the "<host> -l <user>" 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);
  }