* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-#define RCSID "$Id: main.c,v 1.93 2000/04/13 12:05:59 paulus Exp $"
+#define RCSID "$Id: main.c,v 1.98 2000/04/29 12:32:59 paulus Exp $"
#include <stdio.h>
#include <ctype.h>
static int conn_running; /* we have a [dis]connector running */
int ttyfd; /* Serial port file descriptor */
-mode_t tty_mode = -1; /* Original access permissions to tty */
+mode_t tty_mode = (mode_t)-1; /* Original access permissions to tty */
int baud_rate; /* Actual bits/second for serial device */
int hungup; /* terminal has been hung up */
int privileged; /* we're running as real uid root */
NULL
};
+/*
+ * If PPP_DRV_NAME is not defined, use the legacy "ppp" as the
+ * device name.
+ */
+#if !defined(PPP_DRV_NAME)
+#define PPP_DRV_NAME "ppp"
+#endif /* !defined(PPP_DRV_NAME) */
+
int
main(argc, argv)
int argc;
set_ifunit(iskey)
int iskey;
{
- info("Using interface ppp%d", ifunit);
- slprintf(ifname, sizeof(ifname), "ppp%d", ifunit);
+ info("Using interface %s%d", PPP_DRV_NAME, ifunit);
+ slprintf(ifname, sizeof(ifname), PPP_DRV_NAME "%d", ifunit);
script_setenv("IFNAME", ifname, iskey);
- create_pidfile(); /* write pid to file */
- create_linkpidfile();
+ if (iskey) {
+ create_pidfile(); /* write pid to file */
+ create_linkpidfile();
+ }
}
/*
sad.sin_family = AF_INET;
sad.sin_port = htons(port);
sad.sin_addr.s_addr = host;
- if (connect(sock, &sad, sizeof(sad)) < 0) {
+ if (connect(sock, (struct sockaddr *)&sad, sizeof(sad)) < 0) {
error("Can't connect to %s: %m", dest);
close(sock);
return -1;
n = max_level - olevel;
n = write(ofd, obufp, n);
if (n < 0) {
- if (errno != EIO) {
+ if (errno == EIO) {
+ pty_readable = 0;
+ nobuf = 0;
+ } else if (errno != EAGAIN && errno != EINTR) {
error("Error writing standard output: %m");
break;
}
- pty_readable = 0;
- nobuf = 0;
} else {
obufp += n;
nobuf -= n;
n = max_level - ilevel;
n = write(pty_master, ibufp, n);
if (n < 0) {
- if (errno != EIO) {
+ if (errno == EIO) {
+ stdin_readable = 0;
+ nibuf = 0;
+ } else if (errno != EAGAIN && errno != EINTR) {
error("Error writing pseudo-tty master: %m");
break;
}
- stdin_readable = 0;
- nibuf = 0;
} else {
ibufp += n;
nibuf -= n;