X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fmain.c;h=0722e9104076417b68500f16058a98f31f1e8f2d;hp=ad7c90d0910bd0b5831c01cf0ae87fa64106c3c0;hb=9b7089a0401b5d0973cace08f1f632d526a06377;hpb=5b7a245572fb88a6c0aa2e753c74040105571ceb diff --git a/pppd/main.c b/pppd/main.c index ad7c90d..0722e91 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -17,7 +17,7 @@ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#define RCSID "$Id: main.c,v 1.94 2000/04/15 01:27:13 masputra Exp $" +#define RCSID "$Id: main.c,v 1.98 2000/04/29 12:32:59 paulus Exp $" #include #include @@ -226,6 +226,14 @@ struct protent *protocols[] = { 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; @@ -1014,11 +1022,13 @@ void 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(); + } } /* @@ -2407,12 +2417,13 @@ charshunt(ifd, ofd, record_file) 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; @@ -2425,12 +2436,13 @@ charshunt(ifd, ofd, record_file) 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;