OSDN Git Service

ac1d175d83fed4ab11af5f7429837b5726f39671
[linuxjm/LDP_man-pages.git] / po4a / utmp / po / utmp.pot
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 #, fuzzy
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2014-06-03 01:29+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #. type: TH
20 #: build/C/man3/getutent.3:31
21 #, no-wrap
22 msgid "GETUTENT"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/getutent.3:31
27 #, no-wrap
28 msgid "2013-04-19"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/getutent.3:31 build/C/man3/getutmp.3:26 build/C/man3/login.3:25 build/C/man3/updwtmp.3:29 build/C/man5/utmp.5:30
33 #, no-wrap
34 msgid "Linux Programmer's Manual"
35 msgstr ""
36
37 #. type: SH
38 #: build/C/man3/getutent.3:32 build/C/man3/getutmp.3:27 build/C/man3/login.3:26 build/C/man3/updwtmp.3:30 build/C/man5/utmp.5:31
39 #, no-wrap
40 msgid "NAME"
41 msgstr ""
42
43 #. type: Plain text
44 #: build/C/man3/getutent.3:35
45 msgid ""
46 "getutent, getutid, getutline, pututline, setutent, endutent, utmpname - "
47 "access utmp file entries"
48 msgstr ""
49
50 #. type: SH
51 #: build/C/man3/getutent.3:35 build/C/man3/getutmp.3:29 build/C/man3/login.3:28 build/C/man3/updwtmp.3:32 build/C/man5/utmp.5:33
52 #, no-wrap
53 msgid "SYNOPSIS"
54 msgstr ""
55
56 #. type: Plain text
57 #: build/C/man3/getutent.3:37 build/C/man3/login.3:30 build/C/man5/utmp.5:35
58 msgid "B<#include E<lt>utmp.hE<gt>>"
59 msgstr ""
60
61 #. type: Plain text
62 #: build/C/man3/getutent.3:39
63 msgid "B<struct utmp *getutent(void);>"
64 msgstr ""
65
66 #. type: Plain text
67 #: build/C/man3/getutent.3:41
68 msgid "B<struct utmp *getutid(struct utmp *>I<ut>B<);>"
69 msgstr ""
70
71 #. type: Plain text
72 #: build/C/man3/getutent.3:43
73 msgid "B<struct utmp *getutline(struct utmp *>I<ut>B<);>"
74 msgstr ""
75
76 #. type: Plain text
77 #: build/C/man3/getutent.3:45
78 msgid "B<struct utmp *pututline(struct utmp *>I<ut>B<);>"
79 msgstr ""
80
81 #. type: Plain text
82 #: build/C/man3/getutent.3:47
83 msgid "B<void setutent(void);>"
84 msgstr ""
85
86 #. type: Plain text
87 #: build/C/man3/getutent.3:49
88 msgid "B<void endutent(void);>"
89 msgstr ""
90
91 #. type: Plain text
92 #: build/C/man3/getutent.3:51
93 msgid "B<int utmpname(const char *>I<file>B<);>"
94 msgstr ""
95
96 #. type: SH
97 #: build/C/man3/getutent.3:51 build/C/man3/getutmp.3:37 build/C/man3/login.3:36 build/C/man3/updwtmp.3:41 build/C/man5/utmp.5:35
98 #, no-wrap
99 msgid "DESCRIPTION"
100 msgstr ""
101
102 #. type: Plain text
103 #: build/C/man3/getutent.3:54
104 msgid ""
105 "New applications should use the POSIX.1-specified \"utmpx\" versions of "
106 "these functions; see CONFORMING TO."
107 msgstr ""
108
109 #. type: Plain text
110 #: build/C/man3/getutent.3:63
111 msgid ""
112 "B<utmpname>()  sets the name of the utmp-format file for the other utmp "
113 "functions to access.  If B<utmpname>()  is not used to set the filename "
114 "before the other functions are used, they assume B<_PATH_UTMP>, as defined "
115 "in I<E<lt>paths.hE<gt>>."
116 msgstr ""
117
118 #. type: Plain text
119 #: build/C/man3/getutent.3:68
120 msgid ""
121 "B<setutent>()  rewinds the file pointer to the beginning of the utmp file.  "
122 "It is generally a good idea to call it before any of the other functions."
123 msgstr ""
124
125 #. type: Plain text
126 #: build/C/man3/getutent.3:73
127 msgid ""
128 "B<endutent>()  closes the utmp file.  It should be called when the user code "
129 "is done accessing the file with the other functions."
130 msgstr ""
131
132 #. type: Plain text
133 #: build/C/man3/getutent.3:80
134 msgid ""
135 "B<getutent>()  reads a line from the current file position in the utmp "
136 "file.  It returns a pointer to a structure containing the fields of the "
137 "line.  The definition of this structure is shown in B<utmp>(5)."
138 msgstr ""
139
140 #. type: Plain text
141 #: build/C/man3/getutent.3:96
142 msgid ""
143 "B<getutid>()  searches forward from the current file position in the utmp "
144 "file based upon I<ut>.  If I<ut-E<gt>ut_type> is one of B<RUN_LVL>, "
145 "B<BOOT_TIME>, B<NEW_TIME>, or B<OLD_TIME>, B<getutid>()  will find the first "
146 "entry whose I<ut_type> field matches I<ut-E<gt>ut_type>.  If "
147 "I<ut-E<gt>ut_type> is one of B<INIT_PROCESS>, B<LOGIN_PROCESS>, "
148 "B<USER_PROCESS>, or B<DEAD_PROCESS>, B<getutid>()  will find the first entry "
149 "whose I<ut_id> field matches I<ut-E<gt>ut_id>."
150 msgstr ""
151
152 #. type: Plain text
153 #: build/C/man3/getutent.3:106
154 msgid ""
155 "B<getutline>()  searches forward from the current file position in the utmp "
156 "file.  It scans entries whose I<ut_type> is B<USER_PROCESS> or "
157 "B<LOGIN_PROCESS> and returns the first one whose I<ut_line> field matches "
158 "I<ut-E<gt>ut_line>."
159 msgstr ""
160
161 #. type: Plain text
162 #: build/C/man3/getutent.3:118
163 msgid ""
164 "B<pututline>()  writes the I<utmp> structure I<ut> into the utmp file.  It "
165 "uses B<getutid>()  to search for the proper place in the file to insert the "
166 "new entry.  If it cannot find an appropriate slot for I<ut>, B<pututline>()  "
167 "will append the new entry to the end of the file."
168 msgstr ""
169
170 #. type: SH
171 #: build/C/man3/getutent.3:118 build/C/man3/getutmp.3:51 build/C/man3/login.3:94
172 #, no-wrap
173 msgid "RETURN VALUE"
174 msgstr ""
175
176 #. type: Plain text
177 #: build/C/man3/getutent.3:127
178 msgid ""
179 "B<getutent>(), B<getutid>(), and B<getutline>()  return a pointer to a "
180 "I<struct utmp> on success, and NULL on failure (which includes the \"record "
181 "not found\" case).  This I<struct utmp> is allocated in static storage, and "
182 "may be overwritten by subsequent calls."
183 msgstr ""
184
185 #. type: Plain text
186 #: build/C/man3/getutent.3:133
187 msgid "On success B<pututline>()  returns I<ut>; on failure, it returns NULL."
188 msgstr ""
189
190 #. type: Plain text
191 #: build/C/man3/getutent.3:136
192 msgid ""
193 "B<utmpname>()  returns 0 if the new name was successfully stored, or -1 on "
194 "failure."
195 msgstr ""
196
197 #. type: Plain text
198 #: build/C/man3/getutent.3:140
199 msgid ""
200 "In the event of an error, these functions I<errno> set to indicate the "
201 "cause."
202 msgstr ""
203
204 #. type: SH
205 #: build/C/man3/getutent.3:140
206 #, no-wrap
207 msgid "ERRORS"
208 msgstr ""
209
210 #. type: TP
211 #: build/C/man3/getutent.3:141
212 #, no-wrap
213 msgid "B<ENOMEM>"
214 msgstr ""
215
216 #. type: Plain text
217 #: build/C/man3/getutent.3:144
218 msgid "Out of memory."
219 msgstr ""
220
221 #. type: TP
222 #: build/C/man3/getutent.3:144
223 #, no-wrap
224 msgid "B<ESRCH>"
225 msgstr ""
226
227 #. type: Plain text
228 #: build/C/man3/getutent.3:147
229 msgid "Record not found."
230 msgstr ""
231
232 #. type: Plain text
233 #: build/C/man3/getutent.3:154
234 msgid ""
235 "B<setutent>(), B<pututline>(), and the B<getut*>()  functions can also fail "
236 "for the reasons described in B<open>(2)."
237 msgstr ""
238
239 #. type: SH
240 #: build/C/man3/getutent.3:154 build/C/man3/login.3:99 build/C/man3/updwtmp.3:54 build/C/man5/utmp.5:224
241 #, no-wrap
242 msgid "FILES"
243 msgstr ""
244
245 #. type: Plain text
246 #: build/C/man3/getutent.3:156
247 msgid "/var/run/utmp\tdatabase of currently logged-in users"
248 msgstr ""
249
250 #. type: Plain text
251 #: build/C/man3/getutent.3:158
252 msgid "/var/log/wtmp\tdatabase of past user logins"
253 msgstr ""
254
255 #. type: SH
256 #: build/C/man3/getutent.3:158 build/C/man3/getutmp.3:62 build/C/man3/login.3:112 build/C/man3/updwtmp.3:58 build/C/man5/utmp.5:228
257 #, no-wrap
258 msgid "CONFORMING TO"
259 msgstr ""
260
261 #. type: Plain text
262 #: build/C/man3/getutent.3:160
263 msgid "XPG2, SVr4."
264 msgstr ""
265
266 #. type: Plain text
267 #: build/C/man3/getutent.3:170
268 msgid ""
269 "In XPG2 and SVID 2 the function B<pututline>()  is documented to return "
270 "void, and that is what it does on many systems (AIX, HP-UX, Linux libc5).  "
271 "HP-UX introduces a new function B<_pututline>()  with the prototype given "
272 "above for B<pututline>()  (also found in Linux libc5)."
273 msgstr ""
274
275 #. type: Plain text
276 #: build/C/man3/getutent.3:174
277 msgid ""
278 "All these functions are obsolete now on non-Linux systems.  POSIX.1-2001, "
279 "following SUSv1, does not have any of these functions, but instead uses"
280 msgstr ""
281
282 #. type: Plain text
283 #: build/C/man3/getutent.3:176
284 msgid "B<#include E<lt>utmpx.hE<gt>>"
285 msgstr ""
286
287 #. type: Plain text
288 #: build/C/man3/getutent.3:178
289 msgid "B<struct utmpx *getutxent(void);>"
290 msgstr ""
291
292 #. type: Plain text
293 #: build/C/man3/getutent.3:180
294 msgid "B<struct utmpx *getutxid(const struct utmpx *);>"
295 msgstr ""
296
297 #. type: Plain text
298 #: build/C/man3/getutent.3:182
299 msgid "B<struct utmpx *getutxline(const struct utmpx *);>"
300 msgstr ""
301
302 #. type: Plain text
303 #: build/C/man3/getutent.3:184
304 msgid "B<struct utmpx *pututxline(const struct utmpx *);>"
305 msgstr ""
306
307 #. type: Plain text
308 #: build/C/man3/getutent.3:186
309 msgid "B<void setutxent(void);>"
310 msgstr ""
311
312 #. type: Plain text
313 #: build/C/man3/getutent.3:188
314 msgid "B<void endutxent(void);>"
315 msgstr ""
316
317 #. type: Plain text
318 #: build/C/man3/getutent.3:197
319 msgid ""
320 "These functions are provided by glibc, and perform the same task as their "
321 "equivalents without the \"x\", but use I<struct utmpx>, defined on Linux to "
322 "be the same as I<struct utmp>.  For completeness, glibc also provides "
323 "B<utmpxname>(), although this function is not specified by POSIX.1."
324 msgstr ""
325
326 #. type: Plain text
327 #: build/C/man3/getutent.3:205
328 msgid ""
329 "On some other systems, the I<utmpx> structure is a superset of the I<utmp> "
330 "structure, with additional fields, and larger versions of the existing "
331 "fields, and parallel files are maintained, often I</var/*/utmpx> and "
332 "I</var/*/wtmpx>."
333 msgstr ""
334
335 #. type: Plain text
336 #: build/C/man3/getutent.3:213
337 msgid ""
338 "Linux glibc on the other hand does not use a parallel I<utmpx> file since "
339 "its I<utmp> structure is already large enough.  The \"x\" functions listed "
340 "above are just aliases for their counterparts without the \"x\" (e.g., "
341 "B<getutxent>()  is an alias for B<getutent>())."
342 msgstr ""
343
344 #. type: SH
345 #: build/C/man3/getutent.3:213 build/C/man3/getutmp.3:65 build/C/man3/login.3:115 build/C/man3/updwtmp.3:71 build/C/man5/utmp.5:280
346 #, no-wrap
347 msgid "NOTES"
348 msgstr ""
349
350 #. type: SS
351 #: build/C/man3/getutent.3:214
352 #, no-wrap
353 msgid "Glibc notes"
354 msgstr ""
355
356 #. type: Plain text
357 #: build/C/man3/getutent.3:217
358 msgid "The above functions are not thread-safe.  Glibc adds reentrant versions"
359 msgstr ""
360
361 #. type: Plain text
362 #: build/C/man3/getutent.3:222
363 #, no-wrap
364 msgid ""
365 "B<#define _GNU_SOURCE>    /* or _SVID_SOURCE or _BSD_SOURCE;\n"
366 "\\&                          see B<feature_test_macros>(7) */\n"
367 "B<#include E<lt>utmp.hE<gt>>\n"
368 msgstr ""
369
370 #. type: Plain text
371 #: build/C/man3/getutent.3:224
372 #, no-wrap
373 msgid "B<int getutent_r(struct utmp *>I<ubuf>B<, struct utmp **>I<ubufp>B<);>\n"
374 msgstr ""
375
376 #. type: Plain text
377 #: build/C/man3/getutent.3:227
378 #, no-wrap
379 msgid ""
380 "B<int getutid_r(struct utmp *>I<ut>B<,>\n"
381 "B<              struct utmp *>I<ubuf>B<, struct utmp **>I<ubufp>B<);>\n"
382 msgstr ""
383
384 #. type: Plain text
385 #: build/C/man3/getutent.3:230
386 #, no-wrap
387 msgid ""
388 "B<int getutline_r(struct utmp *>I<ut>B<,>\n"
389 "B<                struct utmp *>I<ubuf>B<, struct utmp **>I<ubufp>B<);>\n"
390 msgstr ""
391
392 #. type: Plain text
393 #: build/C/man3/getutent.3:242
394 msgid ""
395 "These functions are GNU extensions, analogs of the functions of the same "
396 "name without the _r suffix.  The I<ubuf> argument gives these functions a "
397 "place to store their result.  On success they return 0, and a pointer to the "
398 "result is written in I<*ubufp>.  On error, these functions return -1.  There "
399 "are no utmpx equivalents of the above functions.  (POSIX.1 does not specify "
400 "such functions.)"
401 msgstr ""
402
403 #. type: SH
404 #: build/C/man3/getutent.3:242
405 #, no-wrap
406 msgid "EXAMPLE"
407 msgstr ""
408
409 #. type: Plain text
410 #: build/C/man3/getutent.3:250
411 msgid ""
412 "The following example adds and removes a utmp record, assuming it is run "
413 "from within a pseudo terminal.  For usage in a real application, you should "
414 "check the return values of B<getpwuid>(3)  and B<ttyname>(3)."
415 msgstr ""
416
417 #. type: Plain text
418 #: build/C/man3/getutent.3:257
419 #, no-wrap
420 msgid ""
421 "#include E<lt>string.hE<gt>\n"
422 "#include E<lt>stdlib.hE<gt>\n"
423 "#include E<lt>pwd.hE<gt>\n"
424 "#include E<lt>unistd.hE<gt>\n"
425 "#include E<lt>utmp.hE<gt>\n"
426 msgstr ""
427
428 #. type: Plain text
429 #: build/C/man3/getutent.3:262
430 #, no-wrap
431 msgid ""
432 "int\n"
433 "main(int argc, char *argv[])\n"
434 "{\n"
435 "    struct utmp entry;\n"
436 msgstr ""
437
438 #. type: Plain text
439 #: build/C/man3/getutent.3:264
440 #, no-wrap
441 msgid "    system(\"echo before adding entry:;who\");\n"
442 msgstr ""
443
444 #. type: Plain text
445 #: build/C/man3/getutent.3:276
446 #, no-wrap
447 msgid ""
448 "    entry.ut_type = USER_PROCESS;\n"
449 "    entry.ut_pid = getpid();\n"
450 "    strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen(\"/dev/\"));\n"
451 "    /* only correct for ptys named /dev/tty[pqr][0-9a-z] */\n"
452 "    strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen(\"/dev/tty\"));\n"
453 "    time(&entry.ut_time);\n"
454 "    strcpy(entry.ut_user, getpwuid(getuid())-E<gt>pw_name);\n"
455 "    memset(entry.ut_host, 0, UT_HOSTSIZE);\n"
456 "    entry.ut_addr = 0;\n"
457 "    setutent();\n"
458 "    pututline(&entry);\n"
459 msgstr ""
460
461 #. type: Plain text
462 #: build/C/man3/getutent.3:278
463 #, no-wrap
464 msgid "    system(\"echo after adding entry:;who\");\n"
465 msgstr ""
466
467 #. type: Plain text
468 #: build/C/man3/getutent.3:285
469 #, no-wrap
470 msgid ""
471 "    entry.ut_type = DEAD_PROCESS;\n"
472 "    memset(entry.ut_line, 0, UT_LINESIZE);\n"
473 "    entry.ut_time = 0;\n"
474 "    memset(entry.ut_user, 0, UT_NAMESIZE);\n"
475 "    setutent();\n"
476 "    pututline(&entry);\n"
477 msgstr ""
478
479 #. type: Plain text
480 #: build/C/man3/getutent.3:287
481 #, no-wrap
482 msgid "    system(\"echo after removing entry:;who\");\n"
483 msgstr ""
484
485 #. type: Plain text
486 #: build/C/man3/getutent.3:291
487 #, no-wrap
488 msgid ""
489 "    endutent();\n"
490 "    exit(EXIT_SUCCESS);\n"
491 "}\n"
492 msgstr ""
493
494 #. type: SH
495 #: build/C/man3/getutent.3:292 build/C/man3/getutmp.3:76 build/C/man3/login.3:130 build/C/man3/updwtmp.3:87 build/C/man5/utmp.5:338
496 #, no-wrap
497 msgid "SEE ALSO"
498 msgstr ""
499
500 #. type: Plain text
501 #: build/C/man3/getutent.3:295
502 msgid "B<getutmp>(3), B<utmp>(5)"
503 msgstr ""
504
505 #. type: SH
506 #: build/C/man3/getutent.3:295 build/C/man3/getutmp.3:80 build/C/man3/login.3:133 build/C/man3/updwtmp.3:90 build/C/man5/utmp.5:352
507 #, no-wrap
508 msgid "COLOPHON"
509 msgstr ""
510
511 #. type: Plain text
512 #: build/C/man3/getutent.3:303 build/C/man3/getutmp.3:88 build/C/man3/login.3:141 build/C/man3/updwtmp.3:98 build/C/man5/utmp.5:360
513 msgid ""
514 "This page is part of release 3.67 of the Linux I<man-pages> project.  A "
515 "description of the project, information about reporting bugs, and the latest "
516 "version of this page, can be found at "
517 "\\%http://www.kernel.org/doc/man-pages/."
518 msgstr ""
519
520 #. type: TH
521 #: build/C/man3/getutmp.3:26
522 #, no-wrap
523 msgid "GETUTMP"
524 msgstr ""
525
526 #. type: TH
527 #: build/C/man3/getutmp.3:26
528 #, no-wrap
529 msgid "2014-04-08"
530 msgstr ""
531
532 #. type: TH
533 #: build/C/man3/getutmp.3:26 build/C/man5/utmp.5:30
534 #, no-wrap
535 msgid "Linux"
536 msgstr ""
537
538 #. type: Plain text
539 #: build/C/man3/getutmp.3:29
540 msgid "getutmp, getutmpx - copy utmp structure to utmpx, and vice versa"
541 msgstr ""
542
543 #. type: Plain text
544 #: build/C/man3/getutmp.3:33
545 #, no-wrap
546 msgid ""
547 "B<#define _GNU_SOURCE>             /* See feature_test_macros(7) */\n"
548 "B<#include E<lt>utmpx.hE<gt>>\n"
549 msgstr ""
550
551 #. type: Plain text
552 #: build/C/man3/getutmp.3:36
553 #, no-wrap
554 msgid ""
555 "B< void getutmp(const struct utmpx *>I<ux>B<, struct utmp *>I<u>B<);>\n"
556 "B< void getutmpx(const struct utmp *>I<u>B<, struct utmpx *>I<ux>B<);>\n"
557 msgstr ""
558
559 #. type: Plain text
560 #: build/C/man3/getutmp.3:51
561 msgid ""
562 "The B<getutmp>()  function copies the fields of the I<utmpx> structure "
563 "pointed to by I<ux> to the corresponding fields of the I<utmp> structure "
564 "pointed to by I<u>.  The B<getutmpx>()  function performs the converse "
565 "operation."
566 msgstr ""
567
568 #. type: Plain text
569 #: build/C/man3/getutmp.3:53
570 msgid "These functions do not return a value."
571 msgstr ""
572
573 #. type: SH
574 #: build/C/man3/getutmp.3:53
575 #, no-wrap
576 msgid "VERSIONS"
577 msgstr ""
578
579 #. type: Plain text
580 #: build/C/man3/getutmp.3:55
581 msgid "These functions first appeared in glibc in version 2.1.1."
582 msgstr ""
583
584 #. type: SH
585 #: build/C/man3/getutmp.3:55
586 #, no-wrap
587 msgid "ATTRIBUTES"
588 msgstr ""
589
590 #. type: SS
591 #: build/C/man3/getutmp.3:56
592 #, no-wrap
593 msgid "Multithreading (see pthreads(7))"
594 msgstr ""
595
596 #. type: Plain text
597 #: build/C/man3/getutmp.3:62
598 msgid "The B<getutmp>()  and B<getutmpx>()  functions are thread-safe."
599 msgstr ""
600
601 #. type: Plain text
602 #: build/C/man3/getutmp.3:65
603 msgid ""
604 "These functions are nonstandard, but appear on a few other systems, such as "
605 "Solaris and NetBSD."
606 msgstr ""
607
608 #.  e.g., on Solaris, the utmpx structure is rather larger than utmp.
609 #. type: Plain text
610 #: build/C/man3/getutmp.3:76
611 msgid ""
612 "These functions exist primarily for compatibility with other systems where "
613 "the I<utmp> and I<utmpx> structures contain different fields, or the size of "
614 "corresponding fields differs.  On Linux, the two structures contain the same "
615 "fields, and the fields have the same sizes."
616 msgstr ""
617
618 #. type: Plain text
619 #: build/C/man3/getutmp.3:80
620 msgid "B<utmpdump>(1), B<getutent>(3), B<utmp>(5)"
621 msgstr ""
622
623 #. type: TH
624 #: build/C/man3/login.3:25
625 #, no-wrap
626 msgid "LOGIN"
627 msgstr ""
628
629 #. type: TH
630 #: build/C/man3/login.3:25
631 #, no-wrap
632 msgid "2004-05-06"
633 msgstr ""
634
635 #. type: TH
636 #: build/C/man3/login.3:25 build/C/man3/updwtmp.3:29
637 #, no-wrap
638 msgid "GNU"
639 msgstr ""
640
641 #. type: Plain text
642 #: build/C/man3/login.3:28
643 msgid "login, logout - write utmp and wtmp entries"
644 msgstr ""
645
646 #. type: Plain text
647 #: build/C/man3/login.3:32
648 msgid "B<void login(const struct utmp *>I<ut>B<);>"
649 msgstr ""
650
651 #. type: Plain text
652 #: build/C/man3/login.3:34
653 msgid "B<int logout(const char *>I<ut_line>B<);>"
654 msgstr ""
655
656 #. type: Plain text
657 #: build/C/man3/login.3:36
658 msgid "Link with I<-lutil>."
659 msgstr ""
660
661 #. type: Plain text
662 #: build/C/man3/login.3:41
663 msgid ""
664 "The utmp file records who is currently using the system.  The wtmp file "
665 "records all logins and logouts.  See B<utmp>(5)."
666 msgstr ""
667
668 #. type: Plain text
669 #: build/C/man3/login.3:48
670 msgid ""
671 "The function B<login>()  takes the supplied I<struct utmp>, I<ut>, and "
672 "writes it to both the utmp and the wtmp file."
673 msgstr ""
674
675 #. type: Plain text
676 #: build/C/man3/login.3:52
677 msgid "The function B<logout>()  clears the entry in the utmp file again."
678 msgstr ""
679
680 #. type: SS
681 #: build/C/man3/login.3:52
682 #, no-wrap
683 msgid "GNU details"
684 msgstr ""
685
686 #. type: Plain text
687 #: build/C/man3/login.3:78
688 msgid ""
689 "More precisely, B<login>()  takes the argument I<ut> struct, fills the field "
690 "I<ut-E<gt>ut_type> (if there is such a field) with the value "
691 "B<USER_PROCESS>, and fills the field I<ut-E<gt>ut_pid> (if there is such a "
692 "field) with the process ID of the calling process.  Then it tries to fill "
693 "the field I<ut-E<gt>ut_line>.  It takes the first of I<stdin>, I<stdout>, "
694 "I<stderr> that is a terminal, and stores the corresponding pathname minus a "
695 "possible leading I</dev/> into this field, and then writes the struct to the "
696 "utmp file.  On the other hand, if no terminal name was found, this field is "
697 "filled with \"???\" and the struct is not written to the utmp file.  After "
698 "this, the struct is written to the wtmp file."
699 msgstr ""
700
701 #. type: Plain text
702 #: build/C/man3/login.3:94
703 msgid ""
704 "The B<logout>()  function searches the utmp file for an entry matching the "
705 "I<ut_line> argument.  If a record is found, it is updated by zeroing out the "
706 "I<ut_name> and I<ut_host> fields, updating the I<ut_tv> timestamp field and "
707 "setting I<ut_type> (if there is such a field) to B<DEAD_PROCESS>."
708 msgstr ""
709
710 #. type: Plain text
711 #: build/C/man3/login.3:99
712 msgid ""
713 "The B<logout>()  function returns 1 if the entry was successfully written to "
714 "the database, or 0 if an error occurred."
715 msgstr ""
716
717 #. type: TP
718 #: build/C/man3/login.3:100
719 #, no-wrap
720 msgid "I</var/run/utmp>"
721 msgstr ""
722
723 #. type: Plain text
724 #: build/C/man3/login.3:106
725 msgid ""
726 "user accounting database, configured through B<_PATH_UTMP> in "
727 "I<E<lt>paths.hE<gt>>"
728 msgstr ""
729
730 #. type: TP
731 #: build/C/man3/login.3:106 build/C/man3/updwtmp.3:55
732 #, no-wrap
733 msgid "I</var/log/wtmp>"
734 msgstr ""
735
736 #. type: Plain text
737 #: build/C/man3/login.3:112
738 msgid ""
739 "user accounting log file, configured through B<_PATH_WTMP> in "
740 "I<E<lt>paths.hE<gt>>"
741 msgstr ""
742
743 #. type: Plain text
744 #: build/C/man3/login.3:115
745 msgid "Not in POSIX.1-2001.  Present on the BSDs."
746 msgstr ""
747
748 #. type: Plain text
749 #: build/C/man3/login.3:130
750 msgid ""
751 "Note that the member I<ut_user> of I<struct utmp> is called I<ut_name> in "
752 "BSD.  Therefore, I<ut_name> is defined as an alias for I<ut_user> in "
753 "I<E<lt>utmp.hE<gt>>."
754 msgstr ""
755
756 #. type: Plain text
757 #: build/C/man3/login.3:133
758 msgid "B<getutent>(3), B<utmp>(5)"
759 msgstr ""
760
761 #. type: TH
762 #: build/C/man3/updwtmp.3:29
763 #, no-wrap
764 msgid "UPDWTMP"
765 msgstr ""
766
767 #. type: TH
768 #: build/C/man3/updwtmp.3:29
769 #, no-wrap
770 msgid "2008-07-02"
771 msgstr ""
772
773 #. type: Plain text
774 #: build/C/man3/updwtmp.3:32
775 msgid "updwtmp, logwtmp - append an entry to the wtmp file"
776 msgstr ""
777
778 #. type: Plain text
779 #: build/C/man3/updwtmp.3:35
780 #, no-wrap
781 msgid "B<#include E<lt>utmp.hE<gt>>\n"
782 msgstr ""
783
784 #. type: Plain text
785 #: build/C/man3/updwtmp.3:37
786 #, no-wrap
787 msgid "B<void updwtmp(const char *>I<wtmp_file>B<, const struct utmp *>I<ut>B<);>\n"
788 msgstr ""
789
790 #. type: Plain text
791 #: build/C/man3/updwtmp.3:40
792 #, no-wrap
793 msgid ""
794 "B<void logwtmp(const char *>I<line>B<, const char *>I<name>B<, const char "
795 "*>I<host>B<);>\n"
796 msgstr ""
797
798 #. type: Plain text
799 #: build/C/man3/updwtmp.3:46
800 msgid "B<updwtmp>()  appends the utmp structure I<ut> to the wtmp file."
801 msgstr ""
802
803 #. type: Plain text
804 #: build/C/man3/updwtmp.3:54
805 msgid ""
806 "B<logwtmp>()  constructs a utmp structure using I<line>, I<name>, I<host>, "
807 "current time and current process ID.  Then it calls B<updwtmp>()  to append "
808 "the structure to the wtmp file."
809 msgstr ""
810
811 #. type: Plain text
812 #: build/C/man3/updwtmp.3:58
813 msgid "database of past user logins"
814 msgstr ""
815
816 #. type: Plain text
817 #: build/C/man3/updwtmp.3:61
818 msgid "Not in POSIX.1-2001.  Present on Solaris, NetBSD, and perhaps other systems."
819 msgstr ""
820
821 #. type: SH
822 #: build/C/man3/updwtmp.3:61
823 #, no-wrap
824 msgid "AVAILABILITY"
825 msgstr ""
826
827 #. type: Plain text
828 #: build/C/man3/updwtmp.3:71
829 msgid ""
830 "Both functions are available under glibc2, but not under libc5.  However, "
831 "B<logwtmp>()  used to occur in the old libbsd.  These days, the B<logwtmp>()  "
832 "function is included in libutil.  (Hence you'll need to add I<-lutil> to "
833 "your compiler command line to get it.)"
834 msgstr ""
835
836 #. type: Plain text
837 #: build/C/man3/updwtmp.3:75
838 msgid ""
839 "For consistency with the other \"utmpx\" functions (see B<getutxent>(3)), "
840 "glibc provides (since version 2.1):"
841 msgstr ""
842
843 #. type: Plain text
844 #: build/C/man3/updwtmp.3:78
845 #, no-wrap
846 msgid "B<#include E<lt>utmpx.hE<gt>>\n"
847 msgstr ""
848
849 #. type: Plain text
850 #: build/C/man3/updwtmp.3:80
851 #, no-wrap
852 msgid ""
853 "B<void updwtmpx (const char *>I<wtmpx_file>B<, const struct utmpx "
854 "*>I<utx>B<);>\n"
855 msgstr ""
856
857 #. type: Plain text
858 #: build/C/man3/updwtmp.3:87
859 msgid ""
860 "This function performs the same task as B<updwtmp>(), but differs in that it "
861 "takes a I<utmpx> structure as its last argument."
862 msgstr ""
863
864 #. type: Plain text
865 #: build/C/man3/updwtmp.3:90
866 msgid "B<getutxent>(3), B<wtmp>(5)"
867 msgstr ""
868
869 #. type: TH
870 #: build/C/man5/utmp.5:30
871 #, no-wrap
872 msgid "UTMP"
873 msgstr ""
874
875 #. type: TH
876 #: build/C/man5/utmp.5:30
877 #, no-wrap
878 msgid "2013-02-11"
879 msgstr ""
880
881 #. type: Plain text
882 #: build/C/man5/utmp.5:33
883 msgid "utmp, wtmp - login records"
884 msgstr ""
885
886 #. type: Plain text
887 #: build/C/man5/utmp.5:42
888 msgid ""
889 "The I<utmp> file allows one to discover information about who is currently "
890 "using the system.  There may be more users currently using the system, "
891 "because not all programs use utmp logging."
892 msgstr ""
893
894 #. type: Plain text
895 #: build/C/man5/utmp.5:52
896 msgid ""
897 "B<Warning:> I<utmp> must not be writable by the user class \"other\", "
898 "because many system programs (foolishly)  depend on its integrity.  You risk "
899 "faked system logfiles and modifications of system files if you leave I<utmp> "
900 "writable to any user other than the owner and group owner of the file."
901 msgstr ""
902
903 #. type: Plain text
904 #: build/C/man5/utmp.5:60
905 msgid ""
906 "The file is a sequence of I<utmp> structures, declared as follows in "
907 "I<E<lt>utmp.hE<gt>> (note that this is only one of several definitions "
908 "around; details depend on the version of libc):"
909 msgstr ""
910
911 #. type: Plain text
912 #: build/C/man5/utmp.5:64
913 #, no-wrap
914 msgid "/* Values for ut_type field, below */\n"
915 msgstr ""
916
917 #. type: Plain text
918 #: build/C/man5/utmp.5:79
919 #, no-wrap
920 msgid ""
921 "#define EMPTY         0 /* Record does not contain valid info\n"
922 "                           (formerly known as UT_UNKNOWN on Linux) */\n"
923 "#define RUN_LVL       1 /* Change in system run-level (see\n"
924 "                           B<init>(8)) */\n"
925 "#define BOOT_TIME     2 /* Time of system boot (in I<ut_tv>) */\n"
926 "#define NEW_TIME      3 /* Time after system clock change\n"
927 "                           (in I<ut_tv>) */\n"
928 "#define OLD_TIME      4 /* Time before system clock change\n"
929 "                           (in I<ut_tv>) */\n"
930 "#define INIT_PROCESS  5 /* Process spawned by B<init>(8) */\n"
931 "#define LOGIN_PROCESS 6 /* Session leader process for user login */\n"
932 "#define USER_PROCESS  7 /* Normal process */\n"
933 "#define DEAD_PROCESS  8 /* Terminated process */\n"
934 "#define ACCOUNTING    9 /* Not implemented */\n"
935 msgstr ""
936
937 #. type: Plain text
938 #: build/C/man5/utmp.5:83
939 #, no-wrap
940 msgid ""
941 "#define UT_LINESIZE      32\n"
942 "#define UT_NAMESIZE      32\n"
943 "#define UT_HOSTSIZE     256\n"
944 msgstr ""
945
946 #. type: Plain text
947 #: build/C/man5/utmp.5:88
948 #, no-wrap
949 msgid ""
950 "struct exit_status {              /* Type for ut_exit, below */\n"
951 "    short int e_termination;      /* Process termination status */\n"
952 "    short int e_exit;             /* Process exit status */\n"
953 "};\n"
954 msgstr ""
955
956 #. type: Plain text
957 #: build/C/man5/utmp.5:116
958 #, no-wrap
959 msgid ""
960 "struct utmp {\n"
961 "    short   ut_type;              /* Type of record */\n"
962 "    pid_t   ut_pid;               /* PID of login process */\n"
963 "    char    ut_line[UT_LINESIZE]; /* Device name of tty - \"/dev/\" */\n"
964 "    char    ut_id[4];             /* Terminal name suffix,\n"
965 "                                     or inittab(5) ID */\n"
966 "    char    ut_user[UT_NAMESIZE]; /* Username */\n"
967 "    char    ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or\n"
968 "                                     kernel version for run-level\n"
969 "                                     messages */\n"
970 "    struct  exit_status ut_exit;  /* Exit status of a process\n"
971 "                                     marked as DEAD_PROCESS; not\n"
972 "                                     used by Linux init(8) */\n"
973 "    /* The ut_session and ut_tv fields must be the same size when\n"
974 "       compiled 32- and 64-bit.  This allows data files and shared\n"
975 "       memory to be shared between 32- and 64-bit applications. */\n"
976 "#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32\n"
977 "    int32_t ut_session;           /* Session ID (B<getsid>(2)),\n"
978 "                                     used for windowing */\n"
979 "    struct {\n"
980 "        int32_t tv_sec;           /* Seconds */\n"
981 "        int32_t tv_usec;          /* Microseconds */\n"
982 "    } ut_tv;                      /* Time entry was made */\n"
983 "#else\n"
984 "     long   ut_session;           /* Session ID */\n"
985 "     struct timeval ut_tv;        /* Time entry was made */\n"
986 "#endif\n"
987 msgstr ""
988
989 #. type: Plain text
990 #: build/C/man5/utmp.5:122
991 #, no-wrap
992 msgid ""
993 "    int32_t ut_addr_v6[4];        /* Internet address of remote\n"
994 "                                     host; IPv4 address uses\n"
995 "                                     just ut_addr_v6[0] */\n"
996 "    char __unused[20];            /* Reserved for future use */\n"
997 "};\n"
998 msgstr ""
999
1000 #. type: Plain text
1001 #: build/C/man5/utmp.5:130
1002 #, no-wrap
1003 msgid ""
1004 "/* Backward compatibility hacks */\n"
1005 "#define ut_name ut_user\n"
1006 "#ifndef _NO_UT_TIME\n"
1007 "#define ut_time ut_tv.tv_sec\n"
1008 "#endif\n"
1009 "#define ut_xtime ut_tv.tv_sec\n"
1010 "#define ut_addr ut_addr_v6[0]\n"
1011 msgstr ""
1012
1013 #. type: Plain text
1014 #: build/C/man5/utmp.5:140
1015 msgid ""
1016 "This structure gives the name of the special file associated with the user's "
1017 "terminal, the user's login name, and the time of login in the form of "
1018 "B<time>(2).  String fields are terminated by a null byte (\\(aq\\e0\\(aq)  "
1019 "if they are shorter than the size of the field."
1020 msgstr ""
1021
1022 #. type: Plain text
1023 #: build/C/man5/utmp.5:157
1024 msgid ""
1025 "The first entries ever created result from B<init>(8)  processing "
1026 "B<inittab>(5).  Before an entry is processed, though, B<init>(8)  cleans up "
1027 "utmp by setting I<ut_type> to B<DEAD_PROCESS>, clearing I<ut_user>, "
1028 "I<ut_host>, and I<ut_time> with null bytes for each record which I<ut_type> "
1029 "is not B<DEAD_PROCESS> or B<RUN_LVL> and where no process with PID I<ut_pid> "
1030 "exists.  If no empty record with the needed I<ut_id> can be found, "
1031 "B<init>(8)  creates a new one.  It sets I<ut_id> from the inittab, I<ut_pid> "
1032 "and I<ut_time> to the current values, and I<ut_type> to B<INIT_PROCESS>."
1033 msgstr ""
1034
1035 #. type: Plain text
1036 #: build/C/man5/utmp.5:176
1037 msgid ""
1038 "B<mingetty>(8)  (or B<agetty>(8))  locates the entry by the PID, changes "
1039 "I<ut_type> to B<LOGIN_PROCESS>, changes I<ut_time>, sets I<ut_line>, and "
1040 "waits for connection to be established.  B<login>(1), after a user has been "
1041 "authenticated, changes I<ut_type> to B<USER_PROCESS>, changes I<ut_time>, "
1042 "and sets I<ut_host> and I<ut_addr>.  Depending on B<mingetty>(8)  (or "
1043 "B<agetty>(8))  and B<login>(1), records may be located by I<ut_line> instead "
1044 "of the preferable I<ut_pid>."
1045 msgstr ""
1046
1047 #. type: Plain text
1048 #: build/C/man5/utmp.5:182
1049 msgid ""
1050 "When B<init>(8)  finds that a process has exited, it locates its utmp entry "
1051 "by I<ut_pid>, sets I<ut_type> to B<DEAD_PROCESS>, and clears I<ut_user>, "
1052 "I<ut_host> and I<ut_time> with null bytes."
1053 msgstr ""
1054
1055 #. type: Plain text
1056 #: build/C/man5/utmp.5:194
1057 msgid ""
1058 "B<xterm>(1)  and other terminal emulators directly create a B<USER_PROCESS> "
1059 "record and generate the I<ut_id> by using the string that suffix part of the "
1060 "terminal name (the characters following I</dev/[pt]ty>).  If they find a "
1061 "B<DEAD_PROCESS> for this ID, they recycle it, otherwise they create a new "
1062 "entry.  If they can, they will mark it as B<DEAD_PROCESS> on exiting and it "
1063 "is advised that they null I<ut_line>, I<ut_time>, I<ut_user>, and I<ut_host> "
1064 "as well."
1065 msgstr ""
1066
1067 #. type: Plain text
1068 #: build/C/man5/utmp.5:202
1069 msgid ""
1070 "B<telnetd>(8)  sets up a B<LOGIN_PROCESS> entry and leaves the rest to "
1071 "B<login>(1)  as usual.  After the telnet session ends, B<telnetd>(8)  cleans "
1072 "up utmp in the described way."
1073 msgstr ""
1074
1075 #. type: Plain text
1076 #: build/C/man5/utmp.5:224
1077 msgid ""
1078 "The I<wtmp> file records all logins and logouts.  Its format is exactly like "
1079 "I<utmp> except that a null username indicates a logout on the associated "
1080 "terminal.  Furthermore, the terminal name B<~> with username B<shutdown> or "
1081 "B<reboot> indicates a system shutdown or reboot and the pair of terminal "
1082 "names B<|>/B<}> logs the old/new system time when B<date>(1)  changes it.  "
1083 "I<wtmp> is maintained by B<login>(1), B<init>(8), and some versions of "
1084 "B<getty>(8)  (e.g., B<mingetty>(8)  or B<agetty>(8)).  None of these "
1085 "programs creates the file, so if it is removed, record-keeping is turned "
1086 "off."
1087 msgstr ""
1088
1089 #. type: Plain text
1090 #: build/C/man5/utmp.5:226
1091 msgid "/var/run/utmp"
1092 msgstr ""
1093
1094 #. type: Plain text
1095 #: build/C/man5/utmp.5:228
1096 msgid "/var/log/wtmp"
1097 msgstr ""
1098
1099 #. type: Plain text
1100 #: build/C/man5/utmp.5:247
1101 msgid ""
1102 "POSIX.1 does not specify a I<utmp> structure, but rather one named I<utmpx>, "
1103 "with specifications for the fields I<ut_type>, I<ut_pid>, I<ut_line>, "
1104 "I<ut_id>, I<ut_user>, and I<ut_tv>.  POSIX.1 does not specify the lengths of "
1105 "the I<ut_line> and I<ut_user> fields."
1106 msgstr ""
1107
1108 #. type: Plain text
1109 #: build/C/man5/utmp.5:253
1110 msgid ""
1111 "Linux defines the I<utmpx> structure to be the same as the I<utmp> "
1112 "structure."
1113 msgstr ""
1114
1115 #. type: SS
1116 #: build/C/man5/utmp.5:253
1117 #, no-wrap
1118 msgid "Comparison with historical systems"
1119 msgstr ""
1120
1121 #. type: Plain text
1122 #: build/C/man5/utmp.5:256
1123 msgid ""
1124 "Linux utmp entries conform neither to v7/BSD nor to System V; they are a mix "
1125 "of the two."
1126 msgstr ""
1127
1128 #. type: Plain text
1129 #: build/C/man5/utmp.5:263
1130 msgid ""
1131 "v7/BSD has fewer fields; most importantly it lacks I<ut_type>, which causes "
1132 "native v7/BSD-like programs to display (for example) dead or login entries.  "
1133 "Further, there is no configuration file which allocates slots to sessions.  "
1134 "BSD does so because it lacks I<ut_id> fields."
1135 msgstr ""
1136
1137 #. type: Plain text
1138 #: build/C/man5/utmp.5:275
1139 msgid ""
1140 "In Linux (as in System V), the I<ut_id> field of a record will never change "
1141 "once it has been set, which reserves that slot without needing a "
1142 "configuration file.  Clearing I<ut_id> may result in race conditions leading "
1143 "to corrupted utmp entries and potential security holes.  Clearing the "
1144 "abovementioned fields by filling them with null bytes is not required by "
1145 "System V semantics, but makes it possible to run many programs which assume "
1146 "BSD semantics and which do not modify utmp.  Linux uses the BSD conventions "
1147 "for line contents, as documented above."
1148 msgstr ""
1149
1150 #.  mtk: What is the referrent of "them" in the following sentence?
1151 #.  System V only uses the type field to mark them and logs
1152 #.  informative messages such as \fB"new time"\fP in the line field.
1153 #. type: Plain text
1154 #: build/C/man5/utmp.5:280
1155 msgid "System V has no I<ut_host> or I<ut_addr_v6> fields."
1156 msgstr ""
1157
1158 #. type: Plain text
1159 #: build/C/man5/utmp.5:288
1160 msgid ""
1161 "Unlike various other systems, where utmp logging can be disabled by removing "
1162 "the file, utmp must always exist on Linux.  If you want to disable "
1163 "B<who>(1), then do not make utmp world readable."
1164 msgstr ""
1165
1166 #. type: Plain text
1167 #: build/C/man5/utmp.5:291
1168 msgid ""
1169 "The file format is machine-dependent, so it is recommended that it be "
1170 "processed only on the machine architecture where it was created."
1171 msgstr ""
1172
1173 #. type: Plain text
1174 #: build/C/man5/utmp.5:312
1175 msgid ""
1176 "Note that on I<biarch> platforms, that is, systems which can run both 32-bit "
1177 "and 64-bit applications (x86-64, ppc64, s390x, etc.), I<ut_tv> is the same "
1178 "size in 32-bit mode as in 64-bit mode.  The same goes for I<ut_session> and "
1179 "I<ut_time> if they are present.  This allows data files and shared memory to "
1180 "be shared between 32-bit and 64-bit applications.  This is achieved by "
1181 "changing the type of I<ut_session> to I<int32_t>, and that of I<ut_tv> to a "
1182 "struct with two I<int32_t> fields I<tv_sec> and I<tv_usec>.  Since I<ut_tv> "
1183 "may not be the same as I<struct timeval>, then instead of the call:"
1184 msgstr ""
1185
1186 #. type: Plain text
1187 #: build/C/man5/utmp.5:316
1188 #, no-wrap
1189 msgid "gettimeofday((struct timeval *) &ut.ut_tv, NULL);\n"
1190 msgstr ""
1191
1192 #. type: Plain text
1193 #: build/C/man5/utmp.5:320
1194 msgid "the following method of setting this field is recommended:"
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man5/utmp.5:325
1199 #, no-wrap
1200 msgid ""
1201 "struct utmp ut;\n"
1202 "struct timeval tv;\n"
1203 msgstr ""
1204
1205 #. type: Plain text
1206 #: build/C/man5/utmp.5:329
1207 #, no-wrap
1208 msgid ""
1209 "gettimeofday(&tv, NULL);\n"
1210 "ut.ut_tv.tv_sec = tv.tv_sec;\n"
1211 "ut.ut_tv.tv_usec = tv.tv_usec;\n"
1212 msgstr ""
1213
1214 #. type: Plain text
1215 #: build/C/man5/utmp.5:336
1216 msgid ""
1217 "Note that the I<utmp> struct from libc5 has changed in libc6.  Because of "
1218 "this, binaries using the old libc5 struct will corrupt I</var/run/utmp> "
1219 "and/or I</var/log/wtmp>."
1220 msgstr ""
1221
1222 #. type: SH
1223 #: build/C/man5/utmp.5:336
1224 #, no-wrap
1225 msgid "BUGS"
1226 msgstr ""
1227
1228 #. type: Plain text
1229 #: build/C/man5/utmp.5:338
1230 msgid "This man page is based on the libc5 one, things may work differently now."
1231 msgstr ""
1232
1233 #. type: Plain text
1234 #: build/C/man5/utmp.5:352
1235 msgid ""
1236 "B<ac>(1), B<date>(1), B<last>(1), B<login>(1), B<utmpdump>(1), B<who>(1), "
1237 "B<getutent>(3), B<getutmp>(3), B<login>(3), B<logout>(3), B<logwtmp>(3), "
1238 "B<updwtmp>(3), B<init>(8)"
1239 msgstr ""