version 1.1, 1995/10/18 08:46:03 |
version 1.2, 1995/12/16 22:20:36 |
|
|
} |
} |
|
|
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
#define OPTIONS "8KLdek:l:nwx" |
#define OPTIONS "8KLdek:l:nwx" |
#else |
#else |
#define OPTIONS "8KLdek:l:nw" |
|
#endif |
|
#else |
|
#define OPTIONS "8KLdel:nw" |
#define OPTIONS "8KLdel:nw" |
#endif |
#endif |
while ((ch = getopt(argc - argoff, argv + argoff, OPTIONS)) != EOF) |
while ((ch = getopt(argc - argoff, argv + argoff, OPTIONS)) != EOF) |
|
|
nflag = 1; |
nflag = 1; |
break; |
break; |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
case 'x': |
case 'x': |
doencrypt = 1; |
doencrypt = 1; |
des_set_key(cred.session, schedule); |
des_set_key(&cred.session, schedule); |
break; |
break; |
#endif |
#endif |
#endif |
|
case '?': |
case '?': |
default: |
default: |
usage(); |
usage(); |
|
|
user = pw->pw_name; |
user = pw->pw_name; |
|
|
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
/* -x turns off -n */ |
/* -x turns off -n */ |
if (doencrypt) |
if (doencrypt) |
nflag = 0; |
nflag = 0; |
#endif |
#endif |
#endif |
|
|
|
args = copyargs(argv); |
args = copyargs(argv); |
|
|
|
|
if (dest_realm == NULL) |
if (dest_realm == NULL) |
dest_realm = krb_realmofhost(host); |
dest_realm = krb_realmofhost(host); |
|
|
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
rem = krcmd_mutual(&host, sp->s_port, user, args, |
rem = krcmd_mutual(&host, sp->s_port, user, args, |
&rfd2, dest_realm, &cred, schedule); |
&rfd2, dest_realm, &cred, schedule); |
else |
else |
#endif |
|
rem = krcmd(&host, sp->s_port, user, args, &rfd2, |
rem = krcmd(&host, sp->s_port, user, args, &rfd2, |
dest_realm); |
dest_realm); |
if (rem < 0) { |
if (rem < 0) { |
|
|
} |
} |
|
|
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
if (!doencrypt) |
if (!doencrypt) |
#endif |
#endif |
#endif |
|
{ |
{ |
(void)ioctl(rfd2, FIONBIO, &one); |
(void)ioctl(rfd2, FIONBIO, &one); |
(void)ioctl(rem, FIONBIO, &one); |
(void)ioctl(rem, FIONBIO, &one); |
|
|
if ((rembits & (1 << rem)) == 0) |
if ((rembits & (1 << rem)) == 0) |
goto rewrite; |
goto rewrite; |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
wc = des_write(rem, bp, cc); |
wc = des_write(rem, bp, cc); |
else |
else |
#endif |
#endif |
#endif |
|
wc = write(rem, bp, cc); |
wc = write(rem, bp, cc); |
if (wc < 0) { |
if (wc < 0) { |
if (errno == EWOULDBLOCK) |
if (errno == EWOULDBLOCK) |
|
|
if (ready & (1 << rfd2)) { |
if (ready & (1 << rfd2)) { |
errno = 0; |
errno = 0; |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
cc = des_read(rfd2, buf, sizeof buf); |
cc = des_read(rfd2, buf, sizeof buf); |
else |
else |
#endif |
#endif |
#endif |
|
cc = read(rfd2, buf, sizeof buf); |
cc = read(rfd2, buf, sizeof buf); |
if (cc <= 0) { |
if (cc <= 0) { |
if (errno != EWOULDBLOCK) |
if (errno != EWOULDBLOCK) |
|
|
if (ready & (1 << rem)) { |
if (ready & (1 << rem)) { |
errno = 0; |
errno = 0; |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
cc = des_read(rem, buf, sizeof buf); |
cc = des_read(rem, buf, sizeof buf); |
else |
else |
#endif |
#endif |
#endif |
|
cc = read(rem, buf, sizeof buf); |
cc = read(rem, buf, sizeof buf); |
if (cc <= 0) { |
if (cc <= 0) { |
if (errno != EWOULDBLOCK) |
if (errno != EWOULDBLOCK) |
|
|
char signo; |
char signo; |
{ |
{ |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
if (doencrypt) |
if (doencrypt) |
(void)des_write(rfd2, &signo, 1); |
(void)des_write(rfd2, &signo, 1); |
else |
else |
#endif |
#endif |
#endif |
|
(void)write(rfd2, &signo, 1); |
(void)write(rfd2, &signo, 1); |
} |
} |
|
|
|
|
(void)fprintf(stderr, |
(void)fprintf(stderr, |
"usage: rsh [-nd%s]%s[-l login] host [command]\n", |
"usage: rsh [-nd%s]%s[-l login] host [command]\n", |
#ifdef KERBEROS |
#ifdef KERBEROS |
#ifdef CRYPT |
|
"x", " [-k realm] "); |
"x", " [-k realm] "); |
#else |
|
"", " [-k realm] "); |
|
#endif |
|
#else |
#else |
"", " "); |
"", " "); |
#endif |
#endif |