]>
Commit | Line | Data |
---|---|---|
3c2098cc | 1 | --- rxvt-2.7.10/autoconf/Make.common.in.orig Fri Mar 28 06:34:40 2003 |
2 | +++ rxvt-2.7.10/autoconf/Make.common.in Fri Mar 28 06:35:12 2003 | |
3 | @@ -68,7 +68,7 @@ | |
4 | ||
5 | LIBTOOL = @LIBTOOL@ | |
6 | COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEBUG) $(DINCLUDE) $(XINC) -I$(basedir) -I$(srcdir) -I. | |
7 | -LINK = $(CC) $(CFLAGS) $(LDFLAGS) | |
8 | +LINK = $(CC) $(CFLAGS) $(LDFLAGS) -lutempter -lutil | |
9 | ||
10 | # End of common section of the Makefile | |
11 | #------------------------------------------------------------------------- | |
12 | --- rxvt-2.7.10/src/logging.c.orig Fri Mar 28 06:31:43 2003 | |
13 | +++ rxvt-2.7.10/src/logging.c Fri Mar 28 06:33:37 2003 | |
14 | @@ -60,157 +60,7 @@ | |
8f71c2d2 | 15 | void |
16 | rxvt_makeutent(rxvt_t *r, const char *pty, const char *hostname) | |
8f71c2d2 | 17 | { |
3c2098cc | 18 | -#ifdef HAVE_STRUCT_UTMP |
19 | - struct utmp *ut = &(r->h->ut); | |
8f71c2d2 | 20 | -#endif |
3c2098cc | 21 | -#ifdef HAVE_STRUCT_UTMPX |
22 | - struct utmpx *utx = &(r->h->utx); | |
8f71c2d2 | 23 | -#endif |
3c2098cc | 24 | -#ifdef HAVE_UTMP_PID |
8f71c2d2 | 25 | - int i; |
3c2098cc | 26 | -#endif |
27 | - char ut_id[5]; | |
8f71c2d2 | 28 | - struct passwd *pwent = getpwuid(getuid()); |
29 | - | |
8f71c2d2 | 30 | - if (!STRNCMP(pty, "/dev/", 5)) |
31 | - pty += 5; /* skip /dev/ prefix */ | |
3c2098cc | 32 | - |
33 | - if (!STRNCMP(pty, "pty", 3) || !STRNCMP(pty, "tty", 3)) { | |
34 | - STRNCPY(ut_id, (pty + 3), sizeof(ut_id)); | |
35 | - } | |
36 | -#ifdef HAVE_UTMP_PID | |
8f71c2d2 | 37 | - else if (sscanf(pty, "pts/%d", &i) == 1) |
3c2098cc | 38 | - sprintf(ut_id, "vt%02x", (i & 0xff)); /* sysv naming */ |
39 | -#endif | |
40 | - else if (STRNCMP(pty, "pty", 3) && STRNCMP(pty, "tty", 3)) { | |
8f71c2d2 | 41 | - rxvt_print_error("can't parse tty name \"%s\"", pty); |
42 | - return; | |
43 | - } | |
44 | - | |
3c2098cc | 45 | -#ifdef HAVE_STRUCT_UTMP |
46 | - MEMSET(ut, 0, sizeof(struct utmp)); | |
47 | -# ifdef HAVE_UTMP_PID | |
48 | - setutent(); | |
49 | - STRNCPY(ut->ut_id, ut_id, sizeof(ut->ut_id)); | |
8f71c2d2 | 50 | - ut->ut_type = DEAD_PROCESS; |
51 | - getutid(ut); /* position to entry in utmp file */ | |
3c2098cc | 52 | - STRNCPY(r->h->ut_id, ut_id, sizeof(r->h->ut_id)); |
53 | -# endif | |
54 | -#endif | |
8f71c2d2 | 55 | - |
3c2098cc | 56 | -#ifdef HAVE_STRUCT_UTMPX |
57 | - MEMSET(utx, 0, sizeof(struct utmpx)); | |
58 | - setutxent(); | |
59 | - STRNCPY(utx->ut_id, ut_id, sizeof(utx->ut_id)); | |
60 | - utx->ut_type = DEAD_PROCESS; | |
61 | - getutxid(utx); /* position to entry in utmp file */ | |
62 | - STRNCPY(r->h->ut_id, ut_id, sizeof(r->h->ut_id)); | |
8f71c2d2 | 63 | -#endif |
3c2098cc | 64 | - |
65 | -#ifdef HAVE_STRUCT_UTMP | |
66 | - STRNCPY(ut->ut_line, pty, sizeof(ut->ut_line)); | |
67 | - ut->ut_time = time(NULL); | |
68 | -# ifdef HAVE_UTMP_PID | |
8f71c2d2 | 69 | - STRNCPY(ut->ut_user, (pwent && pwent->pw_name) ? pwent->pw_name : "?", |
70 | - sizeof(ut->ut_user)); | |
3c2098cc | 71 | - STRNCPY(ut->ut_id, ut_id, sizeof(ut->ut_id)); |
72 | - ut->ut_time = time(NULL); | |
73 | - ut->ut_pid = r->h->cmd_pid; | |
74 | -# ifdef HAVE_UTMP_HOST | |
75 | - STRNCPY(ut->ut_host, hostname, sizeof(ut->ut_host)); | |
76 | -# endif | |
77 | - ut->ut_type = USER_PROCESS; | |
78 | - pututline(ut); | |
79 | - endutent(); /* close the file */ | |
80 | - r->h->utmp_pos = -1; | |
81 | -# else | |
82 | - STRNCPY(ut->ut_name, (pwent && pwent->pw_name) ? pwent->pw_name : "?", | |
83 | - sizeof(ut->ut_name)); | |
84 | -# ifdef HAVE_UTMP_HOST | |
8f71c2d2 | 85 | - STRNCPY(ut->ut_host, hostname, sizeof(ut->ut_host)); |
3c2098cc | 86 | -# endif |
8f71c2d2 | 87 | -# endif |
88 | -#endif | |
89 | - | |
3c2098cc | 90 | -#ifdef HAVE_STRUCT_UTMPX |
91 | - STRNCPY(utx->ut_line, pty, sizeof(utx->ut_line)); | |
92 | - STRNCPY(utx->ut_user, (pwent && pwent->pw_name) ? pwent->pw_name : "?", | |
93 | - sizeof(utx->ut_user)); | |
94 | - STRNCPY(utx->ut_id, ut_id, sizeof(utx->ut_id)); | |
95 | - utx->ut_session = getsid(0); | |
96 | - utx->ut_tv.tv_sec = time(NULL); | |
97 | - utx->ut_tv.tv_usec = 0; | |
98 | - utx->ut_pid = r->h->cmd_pid; | |
99 | -# ifdef HAVE_UTMPX_HOST | |
100 | - STRNCPY(utx->ut_host, hostname, sizeof(utx->ut_host)); | |
101 | -# if 0 | |
102 | - { | |
103 | - char *colon; | |
8f71c2d2 | 104 | - |
3c2098cc | 105 | - if ((colon = STRRCHR(ut->ut_host, ':')) != NULL) |
106 | - *colon = '\0'; | |
107 | - } | |
108 | -# endif | |
109 | -# endif | |
110 | - utx->ut_type = USER_PROCESS; | |
111 | - pututxline(utx); | |
112 | - endutxent(); /* close the file */ | |
113 | - r->h->utmp_pos = -1; | |
114 | -#endif | |
115 | - | |
116 | -#if defined(HAVE_STRUCT_UTMP) && !defined(HAVE_UTMP_PID) | |
117 | - { | |
118 | - int i; | |
119 | -# ifdef HAVE_TTYSLOT | |
120 | - i = ttyslot(); | |
121 | - if (rxvt_write_bsd_utmp(i, ut)) | |
122 | - r->h->utmp_pos = i; | |
123 | -# else | |
124 | - FILE *fd0; | |
125 | - | |
126 | - if ((fd0 = fopen(TTYTAB_FILENAME, "r")) != NULL) { | |
127 | - char buf[256], name[256]; | |
128 | - | |
129 | - buf[sizeof(buf) - 1] = '\0'; | |
130 | - for (i = 1; (fgets(buf, sizeof(buf) - 1, fd0) != NULL);) { | |
131 | - if (*buf == '#' || sscanf(buf, "%s", name) != 1) | |
132 | - continue; | |
133 | - if (!STRCMP(ut->ut_line, name)) { | |
134 | - if (!rxvt_write_bsd_utmp(i, ut)) | |
135 | - i = 0; | |
136 | - r->h->utmp_pos = i; | |
137 | - fclose(fd0); | |
138 | - break; | |
139 | - } | |
140 | - i++; | |
141 | - } | |
142 | - fclose(fd0); | |
143 | - } | |
144 | -# endif | |
145 | - } | |
146 | -#endif | |
8f71c2d2 | 147 | - |
148 | -#ifdef WTMP_SUPPORT | |
149 | -# ifdef WTMP_ONLY_ON_LOGIN | |
150 | - if (r->Options & Opt_loginShell) | |
151 | -# endif | |
3c2098cc | 152 | - { |
153 | -# ifdef HAVE_STRUCT_UTMP | |
154 | -# ifdef HAVE_UPDWTMP | |
155 | - updwtmp(RXVT_WTMP_FILE, ut); | |
156 | -# else | |
157 | - rxvt_update_wtmp(RXVT_WTMP_FILE, ut); | |
158 | -# endif | |
159 | -# endif | |
160 | -# ifdef HAVE_STRUCT_UTMPX | |
161 | - updwtmpx(RXVT_WTMPX_FILE, utx); | |
162 | -# endif | |
163 | - } | |
8f71c2d2 | 164 | -#endif |
165 | -#if defined(LASTLOG_SUPPORT) && defined(RXVT_LASTLOG_FILE) | |
166 | - if (r->Options & Opt_loginShell) | |
167 | - rxvt_update_lastlog(RXVT_LASTLOG_FILE, pty, hostname); | |
168 | -#endif | |
3c2098cc | 169 | + addToUtmp(pty, NULL, r->cmd_fd); |
170 | } | |
8f71c2d2 | 171 | |
172 | /* ------------------------------------------------------------------------- */ | |
3c2098cc | 173 | @@ -221,85 +71,7 @@ |
8f71c2d2 | 174 | void |
175 | rxvt_cleanutent(rxvt_t *r) | |
8f71c2d2 | 176 | { |
3c2098cc | 177 | -#ifdef HAVE_STRUCT_UTMP |
178 | - struct utmp *tmput, *ut = &(r->h->ut); | |
8f71c2d2 | 179 | -#endif |
3c2098cc | 180 | -#ifdef HAVE_STRUCT_UTMPX |
181 | - struct utmpx *tmputx, *utx = &(r->h->utx); | |
8f71c2d2 | 182 | -#endif |
8f71c2d2 | 183 | - |
3c2098cc | 184 | -#ifdef HAVE_STRUCT_UTMP |
185 | -# ifdef HAVE_UTMP_PID | |
186 | - MEMSET(ut, 0, sizeof(struct utmp)); | |
187 | - setutent(); | |
8f71c2d2 | 188 | - STRNCPY(ut->ut_id, r->h->ut_id, sizeof(ut->ut_id)); |
189 | - ut->ut_type = USER_PROCESS; | |
3c2098cc | 190 | - if ((tmput = getutid(ut))) /* position to entry in utmp file */ |
191 | - ut = tmput; | |
192 | - ut->ut_type = DEAD_PROCESS; | |
193 | -# else | |
194 | - MEMSET(ut->ut_name, 0, sizeof(ut->ut_name)); | |
195 | -# ifdef HAVE_UTMP_HOST | |
196 | - MEMSET(ut->ut_host, 0, sizeof(ut->ut_host)); | |
197 | -# endif | |
198 | -# endif | |
199 | - ut->ut_time = time(NULL); | |
200 | -#endif | |
8f71c2d2 | 201 | - |
3c2098cc | 202 | -#ifdef HAVE_STRUCT_UTMPX |
203 | - MEMSET(utx, 0, sizeof(struct utmpx)); | |
204 | - setutxent(); | |
205 | - STRNCPY(utx->ut_id, r->h->ut_id, sizeof(utx->ut_id)); | |
206 | - utx->ut_type = USER_PROCESS; | |
207 | - if ((tmputx = getutxid(utx))) /* position to entry in utmp file */ | |
208 | - utx = tmputx; | |
209 | - utx->ut_type = DEAD_PROCESS; | |
210 | - utx->ut_session = getsid(0); | |
211 | - utx->ut_tv.tv_sec = time(NULL); | |
212 | - utx->ut_tv.tv_usec = 0; | |
213 | -#endif | |
8f71c2d2 | 214 | - |
3c2098cc | 215 | - /* |
216 | - * Write ending wtmp entry | |
217 | - */ | |
8f71c2d2 | 218 | -#ifdef WTMP_SUPPORT |
219 | -# ifdef WTMP_ONLY_ON_LOGIN | |
220 | - if (r->Options & Opt_loginShell) | |
221 | -# endif | |
3c2098cc | 222 | - { |
223 | -# ifdef HAVE_STRUCT_UTMP | |
224 | -# ifdef HAVE_UPDWTMP | |
225 | - updwtmp(RXVT_WTMP_FILE, ut); | |
226 | -# else | |
227 | - rxvt_update_wtmp(RXVT_WTMP_FILE, ut); | |
228 | -# endif | |
229 | -# endif | |
230 | -# ifdef HAVE_STRUCT_UTMPX | |
231 | - updwtmpx(RXVT_WTMPX_FILE, utx); | |
232 | -# endif | |
233 | - } | |
8f71c2d2 | 234 | -#endif |
235 | - | |
3c2098cc | 236 | - /* |
237 | - * Write utmp entry | |
238 | - */ | |
239 | -#ifdef HAVE_STRUCT_UTMP | |
240 | -# ifdef HAVE_UTMP_PID | |
241 | - if (ut->ut_pid == r->h->cmd_pid) | |
242 | - pututline(ut); | |
8f71c2d2 | 243 | - endutent(); |
3c2098cc | 244 | -# else |
245 | - if (r->h->utmp_pos > 0) { | |
246 | - MEMSET(ut, 0, sizeof(struct utmp)); | |
247 | - rxvt_write_bsd_utmp(r->h->utmp_pos, ut); | |
248 | - } | |
249 | -# endif | |
250 | -#endif | |
251 | -#ifdef HAVE_STRUCT_UTMPX | |
252 | - if (utx->ut_pid == r->h->cmd_pid) | |
253 | - pututxline(utx); | |
254 | - endutxent(); | |
255 | -#endif | |
256 | + removeFromUtmp(); | |
257 | } | |
8f71c2d2 | 258 | |
3c2098cc | 259 | /* ------------------------------------------------------------------------- */ |