]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/sys-str.c
fixed compilation errors and warnings
[ppp.git] / pppd / sys-str.c
index 774c86a4f49b4dcfee4b3dac2e6bed426c339d16..0f9a78cd2fa33bf2495116994bb63705f355fb61 100644 (file)
@@ -26,6 +26,9 @@
 #include <errno.h>
 #include <syslog.h>
 #include <fcntl.h>
+#include <string.h>
+#include <time.h>
+#include <utmp.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -360,6 +363,7 @@ sifvjcomp(u, vjcomp, cidcomp, maxcid)
  */
 int
 sifup(u)
+    int u;
 {
     struct ifreq ifr;
 
@@ -381,6 +385,7 @@ sifup(u)
  */
 int
 sifdown(u)
+    int u;
 {
     struct ifreq ifr;
     strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
@@ -408,6 +413,8 @@ sifdown(u)
  */
 int
 sifaddr(u, o, h, m)
+    int u;
+    u_long o, h, m;
 {
     int ret;
     struct ifreq ifr;
@@ -442,6 +449,8 @@ sifaddr(u, o, h, m)
  */
 int
 cifaddr(u, o, h)
+    int u;
+    u_long o, h;
 {
     struct rtentry rt;
 
@@ -462,6 +471,8 @@ cifaddr(u, o, h)
  */
 int
 sifdefaultroute(u, g)
+    int u;
+    u_long g;
 {
     struct rtentry rt;
 
@@ -481,6 +492,8 @@ sifdefaultroute(u, g)
  */
 int
 cifdefaultroute(u, g)
+    int u;
+    u_long g;
 {
     struct rtentry rt;
 
@@ -551,7 +564,7 @@ cifproxyarp(unit, hisaddr)
  * get_ether_addr - get the hardware address of an interface on the
  * the same subnet as ipaddr.  Code borrowed from myetheraddr.c
  * in the cslip-2.6 distribution, which is subject to the following
- * copyright notice:
+ * copyright notice (which also applies to logwtmp below):
  *
  * Copyright (c) 1990, 1992 The Regents of the University of California.
  * All rights reserved.
@@ -597,7 +610,7 @@ cifproxyarp(unit, hisaddr)
 static struct nlist nl[] = {
 #define N_IFNET 0
        { "_ifnet" },
-       0
+       { 0 }
 };
 
 static void kread();
@@ -693,3 +706,26 @@ get_ether_addr(ipaddr, hwaddr)
     /* couldn't find one */
     return 0;
 }
+
+#define        WTMPFILE        "/usr/adm/wtmp"
+
+int
+logwtmp(line, name, host)
+    char *line, *name, *host;
+{
+    int fd;
+    struct stat buf;
+    struct utmp ut;
+
+    if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
+       return;
+    if (!fstat(fd, &buf)) {
+       (void)strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+       (void)strncpy(ut.ut_name, name, sizeof(ut.ut_name));
+       (void)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);
+    }
+    close(fd);
+}