X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fsys-str.c;fp=pppd%2Fsys-str.c;h=b7c2c5ad36791100dbc82e59a107066373b31e0e;hp=774c86a4f49b4dcfee4b3dac2e6bed426c339d16;hb=a199a8fc6621d7e1ca23fdc65091cc605c5feb28;hpb=a3ddcae0e38109f6e1bf9b9583f9730bbb06f540 diff --git a/pppd/sys-str.c b/pppd/sys-str.c index 774c86a..b7c2c5a 100644 --- a/pppd/sys-str.c +++ b/pppd/sys-str.c @@ -26,6 +26,10 @@ #include #include #include +#include +#include +#include +#include #include #include #include @@ -551,7 +555,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. @@ -693,3 +697,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); +}