- sp = getservbyname("shell", "tcp");
- if (sp == 0) {
- fprintf(stderr, "rshd: tcp/shell: unknown service\n");
- exit(1);
- }
-#ifndef DEBUG
- if (fork())
- exit(0);
- for (f = 0; f < 10; f++)
- (void) close(f);
- (void) open("/", 0);
- (void) dup2(0, 1);
- (void) dup2(0, 2);
- { int t = open("/dev/tty", 2);
- if (t >= 0) {
- ioctl(t, TIOCNOTTY, (char *)0);
- (void) close(t);
- }
- }
-#endif
- sin.sin_port = sp->s_port;
- argc--, argv++;
- if (argc > 0 && !strcmp(argv[0], "-d")) {
- options |= SO_DEBUG;
- argc--, argv++;
- }
- if (argc > 0) {
- int port = atoi(argv[0]);
-
- if (port < 0) {
- fprintf(stderr, "%s: bad port #\n", argv[0]);
- exit(1);
- }
- sin.sin_port = htons((u_short)port);
- argc--, argv++;
- }
- f = socket(AF_INET, SOCK_STREAM, 0, 0);
- if (f < 0) {
- perror("rshd: socket");
- exit(1);
+ fromlen = sizeof (from);
+ if (getpeername(0, &from, &fromlen) < 0) {
+ fprintf(stderr, "%s: ", argv[0]);
+ perror("getpeername");
+ _exit(1);