summaryrefslogtreecommitdiff
path: root/x11/eterm/patches/patch-ah
blob: b641de71287afb774a12de200a20fd996fdfa749 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
$NetBSD: patch-ah,v 1.7 2008/05/09 18:43:07 agc Exp $

--- src/utmp.c.orig	2006-05-11 04:33:40.000000000 +0100
+++ src/utmp.c	2006-11-25 13:01:25.000000000 +0000
@@ -44,11 +44,20 @@
 static int utmp_pos;            /* BSD position of utmp-stamp */
 #  endif
 
+
 # ifdef USE_SYSV_UTMP
 
 #  ifdef HAVE_UTMPX_H
+#   include <utmp.h>
 #   undef WTMP_FILENAME
-#   define WTMP_FILENAME WTMPX_FILE
+#   ifndef _PATH_WTMPX
+#     define _PATH_WTMPX	"/var/log/wtmp"
+#   endif
+#   if defined(WTMPX_FILE)
+#     define WTMP_FILENAME WTMPX_FILE
+#   else
+#     define WTMP_FILENAME _PATH_WTMPX
+#   endif
 #   define update_wtmp updwtmpx
 #  else /* HAVE_UTMPX_H */
 
@@ -128,22 +137,26 @@
     privileges(INVOKE);
 #   ifdef HAVE_UTMPX_H
     getutmp(&utmp, &utmp2);
-    getutid(&utmp2);            /* position to entry in utmp file */
+    getutxid(&utmp);            /* position to entry in utmp file */
 #   else
-    getutid(&utmp);             /* position to entry in utmp file */
+    getutxid(&utmp);             /* position to entry in utmp file */
 #   endif
 
     /* set up the new entry */
     strncpy(utmp.ut_id, ut_id, sizeof(utmp.ut_id));
     strncpy(utmp.ut_line, pty, sizeof(utmp.ut_line));
+#   ifndef __APPLE__
     strncpy(utmp.ut_name, pwent->pw_name, sizeof(utmp.ut_name));
+#   endif
     strncpy(utmp.ut_user, pwent->pw_name, sizeof(utmp.ut_user));
     strncpy(utmp.ut_host, hostname, sizeof(utmp.ut_host));
     utmp.ut_type = USER_PROCESS;
     utmp.ut_pid = getpid();
 #   ifdef HAVE_UTMPX_H
+#     ifndef __APPLE__
     utmp.ut_session = getsid(0);
     utmp.ut_xtime = time(NULL);
+#     endif /* __APPLE__ */
     utmp.ut_tv.tv_usec = 0;
 #   else
     utmp.ut_time = time(NULL);
@@ -152,16 +165,15 @@
     /*
      * write a utmp entry to the utmp file
      */
-    utmpname(UTMP_FILENAME);
+    utmpxname(UTMP_FILENAME);
 #   ifdef HAVE_UTMPX_H
     getutmp(&utmp, &utmp2);
-    pututline(&utmp2);
     pututxline(&utmp);
 #   else
     pututline(&utmp);
 #   endif
     update_wtmp(WTMP_FILENAME, &utmp);
-    endutent();                 /* close the file */
+    endutxent();                 /* close the file */
     privileges(REVERT);
     return;
     fd = 0;
@@ -177,19 +189,19 @@
     if (!ut_id[0])
         return;                 /* entry not made */
 
-    utmpname(UTMP_FILENAME);
-    setutent();
-    strncpy(utmp.ut_id, ut_id, sizeof(utmp.ut_id));
-    utmp.ut_type = USER_PROCESS;
-    if (getutid(&utmp) == NULL) {
+    utmpxname(UTMP_FILENAME);
+    setutxent();
+    strncpy(utmpx.ut_id, ut_id, sizeof(utmpx.ut_id));
+    utmpx.ut_type = USER_PROCESS;
+    if (getutxid(&utmp) == NULL) {
         return;
     }
-    utmp.ut_type = DEAD_PROCESS;
+    utmpx.ut_type = DEAD_PROCESS;
     utmp.ut_time = time(NULL);
-    pututline(&utmp);
+    pututxline(&utmpx);
     getutmpx(&utmp, &utmpx);
     update_wtmp(WTMP_FILENAME, &utmpx);
-    endutent();
+    endutxent();
 
 #   else /* HAVE_UTMPX_H */
     struct utmp *putmp;