]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/sys-sunos4.c
make establish/disestablish_ppp members of the channel struct,
[ppp.git] / pppd / sys-sunos4.c
index ea3deeb36ae5ddeaaa99afb5e986f48292f463c3..00f2ec521f5001006c091d7fa96970e84f361b07 100644 (file)
@@ -25,9 +25,7 @@
  * OR MODIFICATIONS.
  */
 
-#ifndef lint
-static char rcsid[] = "$Id: sys-sunos4.c,v 1.19 1999/04/01 07:20:11 paulus Exp $";
-#endif
+#define RCSID  "$Id: sys-sunos4.c,v 1.26 2001/03/12 22:59:00 paulus Exp $"
 
 #include <stdio.h>
 #include <stddef.h>
@@ -67,6 +65,8 @@ extern void *alloca();
 #endif
 #endif /*sparc*/
 
+static const char rcsid[] = RCSID;
+
 static int     pppfd;
 static int     fdmuxid = -1;
 static int     iffd;
@@ -201,7 +201,7 @@ sys_check_options()
     return 1;
 }
 
-
+#if 0
 /*
  * daemon - Detach us from controlling terminal session.
  */
@@ -225,6 +225,7 @@ daemon(nochdir, noclose)
     }
     return 0;
 }
+#endif
 
 /*
  * ppp_available - check whether the system has any ppp interfaces
@@ -238,10 +239,10 @@ ppp_available()
 }
 
 /*
- * establish_ppp - Turn the serial port into a ppp interface.
+ * tty_establish_ppp - Turn the serial port into a ppp interface.
  */
 int
-establish_ppp(fd)
+tty_establish_ppp(fd)
     int fd;
 {
     int i;
@@ -266,22 +267,13 @@ establish_ppp(fd)
     return pppfd;
 }
 
-/*
- * restore_loop - reattach the ppp unit to the loopback.
- * This doesn't need to do anything because disestablish_ppp does it.
- */
-void
-restore_loop()
-{
-}
-
 /*
  * disestablish_ppp - Restore the serial port to normal operation.
  * It attempts to reconstruct the stream with the previously popped
  * modules.  This shouldn't call die() because it's called from die().
  */
 void
-disestablish_ppp(fd)
+tty_disestablish_ppp(fd)
     int fd;
 {
     int i;
@@ -613,8 +605,13 @@ wait_input(timo)
     int t;
 
     t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000;
-    if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR)
-       fatal("poll: %m");
+    if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR) {
+       if (errno != EAGAIN)
+           fatal("poll: %m");
+       /* we can get EAGAIN on a heavily loaded system,
+        * just wait a short time and try again. */
+       usleep(50000);
+    }
 }
 
 /*
@@ -702,7 +699,7 @@ read_packet(buf)
        flags = 0;
        len = getmsg(pppfd, &ctrl, &data, &flags);
        if (len < 0) {
-           if (errno = EAGAIN || errno == EINTR)
+           if (errno == EAGAIN || errno == EINTR)
                return -1;
            fatal("Error reading packet: %m");
        }
@@ -1271,9 +1268,9 @@ logwtmp(line, name, host)
     if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
        return;
     if (!fstat(fd, &buf)) {
-       strlcpy(ut.ut_line, line, sizeof(ut.ut_line));
-       strlcpy(ut.ut_name, name, sizeof(ut.ut_name));
-       strlcpy(ut.ut_host, host, sizeof(ut.ut_host));
+       strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+       strncpy(ut.ut_name, name, sizeof(ut.ut_name));
+       strncpy(ut.ut_host, host, sizeof(ut.ut_host));
        (void)time(&ut.ut_time);
        if (write(fd, (char *)&ut, sizeof(struct utmp)) != sizeof(struct utmp))
            (void)ftruncate(fd, buf.st_size);
@@ -1376,6 +1373,7 @@ get_host_seed()
     return gethostid();
 }
 
+#if 0
 /*
  * Code for locking/unlocking the serial device.
  * This code is derived from chat.c.
@@ -1479,6 +1477,7 @@ unlock()
        lock_file = NULL;
     }
 }
+#endif /* lock stuff removed */
 
 /*
  * get_pty - get a pty master/slave pair and chown the slave side