summaryrefslogtreecommitdiff
path: root/misc/screen/patches/patch-al
blob: 4b4e0cc736ce468f80f622494c8044ec6454d1b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$NetBSD: patch-al,v 1.2 2003/12/01 15:18:27 ben Exp $

Make extra calls to remove utmp entries when utmpx is used.
For non-login entries we only update utmpx, as it stores
more information, and utilities are reading both.

--- utmp.c.orig	Tue Jan  8 10:44:37 2002
+++ utmp.c	Sun Sep 15 02:36:15 2002
@@ -47,6 +47,12 @@
 extern int real_uid, eff_uid;
 
 
+#ifdef NetBSD_UTMP
+extern void utmp_login __P((char *));
+extern void utmp_logout __P((char *));
+#endif
+
+
 /*
  *  UTNOKEEP: A (ugly) hack for apollo that does two things:
  *    1) Always close and reopen the utmp file descriptor. (I don't know
@@ -314,6 +320,9 @@
 
   ASSERT(display);
   debug("RemoveLoginSlot: removing your logintty\n");
+#ifdef NetBSD_UTMP
+  utmp_logout(stripdev(D_usertty));
+#endif
   D_loginslot = TtyNameSlot(D_usertty);
   if (D_loginslot == (slot_t)0 || D_loginslot == (slot_t)-1)
     return;
@@ -378,6 +387,9 @@
 
   debug("RestoreLoginSlot()\n");
   ASSERT(display);
+#ifdef NetBSD_UTMP
+  utmp_login(stripdev(D_usertty));
+#endif
   if (utmpok && D_loginslot != (slot_t)0 && D_loginslot != (slot_t)-1)
     {
       debug1(" logging you in again (slot %#x)\n", (int)D_loginslot);
@@ -604,6 +616,7 @@
 char *line, *user;
 int pid;
 {
+  time_t temp;
   u->ut_type = USER_PROCESS;
   strncpy(u->ut_user, user, sizeof(u->ut_user));
   /* Now the tricky part... guess ut_id */
@@ -618,7 +631,8 @@
 #endif /* sgi */
   strncpy(u->ut_line, line, sizeof(u->ut_line));
   u->ut_pid = pid;
-  (void)time((time_t *)&u->ut_time);
+  (void)time(&temp);
+  u->ut_time = temp;
 }
 
 static slot_t