static char sccsid
[] = "@(#)rsh.c 4.1 82/04/02";
char *index(), *rindex(), *malloc(), *getpass(), *sprintf(), *strcpy();
struct passwd
*getpwuid();
char *host
, *cp
, **ap
, buf
[BUFSIZ
], *args
, **argv
= argv0
, *user
= 0;
host
= rindex(argv
[0], '/');
if (!strcmp(host
, "rsh")) {
if (!strcmp(*argv
, "-l")) {
if (!strcmp(*argv
, "-n")) {
(void) open("/dev/null", 0);
if (!strcmp(*argv
, "-d")) {
execv("/usr/ucb/rlogin", argv0
);
perror("/usr/ucb/rlogin");
pwd
= getpwuid(getuid());
fprintf(stderr
, "who are you?\n");
for (ap
= argv
; *ap
; ap
++)
for (ap
= argv
; *ap
; ap
++) {
rem
= rcmd(&host
, IPPORT_CMDSERVER
, pwd
->pw_name
,
user
? user
: pwd
->pw_name
, args
, &rfd2
);
ioctl(rfd2
, FIONBIO
, &one
);
ioctl(rem
, FIONBIO
, &one
);
char *bp
; int rembits
, wc
;
cc
= read(0, buf
, sizeof buf
);
(void) select(20, 0, &rembits
, 100000);
if ((rembits
& (1<<rem
)) == 0)
if (errno
== EWOULDBLOCK
)
{ int flags
= 1; ioctl(rem
, SIOCDONE
, &flags
); }
readfrom
= (1<<rfd2
) | (1<<rem
);
(void) select(32, &ready
, 0, 10000000);
cc
= read(rfd2
, buf
, sizeof buf
);
if (errno
!= EWOULDBLOCK
)
(void) write(2, buf
, cc
);
cc
= read(rem
, buf
, sizeof buf
);
if (errno
!= EWOULDBLOCK
)
(void) write(1, buf
, cc
);
(void) kill(pid
, SIGKILL
);
"usage: rsh host [ -l login ] [ -p passwd ] command\n");
(void) write(rfd2
, (char *)&signo
, 1);