}
#ifndef HAVE_PUTUTLINE
-#include <ttyent.h>
-
/****************************************************************************
Update utmp file directly. No subroutine interface: probably a BSD system.
****************************************************************************/
static void pututline_my(const char *uname, struct utmp *u, bool claim)
{
- int fd, topslot;
- struct utmp ubuf;
-
- if ((fd = open(uname, O_RDWR, 0)) < 0) {
- return;
- }
-
- if (!setttyent()) {
- return;
- }
-
- for (topslot = 0; getttyent() != (struct ttyent *)NULL; ) {
- topslot++;
- }
-
- if (!endttyent()) {
- return;
- }
-
- (void) lseek(fd, (off_t)(topslot * sizeof(struct utmp)), SEEK_SET);
-
- DEBUG(1,("pututline(%s, %s, %d); topslot=%d\n",
- u->ut_line, u->ut_name, claim, topslot));
-
- while (true) {
- if (read(fd, &ubuf, sizeof(ubuf)) == sizeof(ubuf)) {
- if ((claim && !ubuf.ut_name[0]) ||
- (!claim && ubuf.ut_name[0] &&
- !strncmp(ubuf.ut_line, u->ut_line, UT_LINESIZE)))
- {
- (void)lseek(fd, -(off_t)sizeof(struct utmp),
- SEEK_CUR);
- break;
- }
- topslot++;
- } else {
- (void)lseek(fd, (off_t)(topslot * sizeof(struct utmp)),
- SEEK_SET);
- break;
- }
- }
-
- if (!claim) {
- memset((char *)&u->ut_name, '\0', sizeof(u->ut_name));
- memset((char *)&u->ut_host, '\0', sizeof(u->ut_host));
- }
-
- (void)write(fd, u, sizeof(struct utmp));
-
- (void)close(fd);
+ DEBUG(1,("pututline_my: not yet implemented\n"));
+ /* BSD implementor: may want to consider (or not) adjusting "lastlog" */
}
#endif /* HAVE_PUTUTLINE */