summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e23c083)
SCCS-vsn: libexec/telnetd/telnetd.c 4.11
-static char sccsid[] = "@(#)telnetd.c 4.10 82/11/14";
+static char sccsid[] = "@(#)telnetd.c 4.11 82/11/15";
- s2 = accept(s, (caddr_t)0, 0);
+ s2 = accept(s, (caddr_t)0, 0, 0);
+ perror("telnetd: accept");
if (p > 0)
goto gotpty;
}
if (p > 0)
goto gotpty;
}
- dup2(f, 1);
- printf("All network ports in use.\n");
- exit(1);
+ fatal(f, "All network ports in use");
+ /*NOTREACHED*/
gotpty:
dup2(f, 0);
cp[strlen("/dev/")] = 't';
gotpty:
dup2(f, 0);
cp[strlen("/dev/")] = 't';
close(t);
}
t = open(cp, 2);
close(t);
}
t = open(cp, 2);
- if (t < 0) {
- dup2(f, 2);
- perror(cp);
- exit(1);
- }
+ if (t < 0)
+ fatalperror(f, cp, errno);
ioctl(t, TIOCGETP, &b);
b.sg_flags = CRMOD|XTABS|ANYP;
ioctl(t, TIOCSETP, &b);
ioctl(p, TIOCGETP, &b);
b.sg_flags &= ~ECHO;
ioctl(p, TIOCSETP, &b);
ioctl(t, TIOCGETP, &b);
b.sg_flags = CRMOD|XTABS|ANYP;
ioctl(t, TIOCSETP, &b);
ioctl(p, TIOCGETP, &b);
b.sg_flags &= ~ECHO;
ioctl(p, TIOCSETP, &b);
- if ((i = fork()) < 0) {
- dup2(f, 2);
- perror("fork");
- exit(1);
- }
+ if ((i = fork()) < 0)
+ fatalperror(f, "fork", errno);
if (i)
telnet(f, p);
close(f);
if (i)
telnet(f, p);
close(f);
dup2(t, 2);
close(t);
execl("/bin/login", "telnet-login", 0);
dup2(t, 2);
close(t);
execl("/bin/login", "telnet-login", 0);
+ fatalperror(f, "/bin/login", errno);
+ /*NOTREACHED*/
+}
+
+fatal(f, msg)
+ int f;
+ char *msg;
+{
+ char buf[BUFSIZ];
+
+ (void) sprintf(buf, "telnetd: %s.\n", msg);
+ (void) write(f, buf, strlen(buf));
+fatalperror(f, msg, errno)
+ int f;
+ char *msg;
+ int errno;
+{
+ char buf[BUFSIZ];
+ extern char *sys_errlist[];
+
+ (void) sprintf(buf, "%s: %s", msg, sys_errlist[errno]);
+ fatal(f, buf);
+}
+
/*
* Main loop. Select from pty and network, and
* hand data to telnet receiver finite state machine.
/*
* Main loop. Select from pty and network, and
* hand data to telnet receiver finite state machine.
-#ifndef notdef
- ioctl(net, SIOCDONE, &how);
+ ioctl(net, SIOCDONE, &how);
kill(0, SIGKILL);
exit(1);
}
kill(0, SIGKILL);
exit(1);
}