xref: /dragonfly/usr.bin/who/utmpentry.h (revision 25a2db75)
1 /*	$NetBSD: utmpentry.h,v 1.6 2008/04/28 20:24:15 martin Exp $	*/
2 
3 /*-
4  * Copyright (c) 2002 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Christos Zoulas.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #if defined(SUPPORT_UTMPX)
33 # include <utmpx.h>
34 # define WHO_NAME_LEN		_UTX_USERSIZE
35 # define WHO_LINE_LEN		_UTX_LINESIZE
36 # define WHO_HOST_LEN		_UTX_HOSTSIZE
37 #elif defined(SUPPORT_UTMP)
38 # include <utmp.h>
39 # define WHO_NAME_LEN		UT_NAMESIZE
40 # define WHO_LINE_LEN		UT_LINESIZE
41 # define WHO_HOST_LEN		UT_HOSTSIZE
42 #else
43 # error Either SUPPORT_UTMPX or SUPPORT_UTMP must be defined!
44 #endif
45 
46 
47 struct utmpentry {
48 	char name[WHO_NAME_LEN + 1];
49 	char line[WHO_LINE_LEN + 1];
50 	char host[WHO_HOST_LEN + 1];
51 	struct timeval tv;
52 	pid_t pid;
53 	uint16_t term;
54 	uint16_t exit;
55 	uint16_t sess;
56 	uint16_t type;
57 	struct utmpentry *next;
58 };
59 
60 extern int maxname, maxline, maxhost;
61 extern int etype;
62 
63 /*
64  * getutentries provides a linked list of struct utmpentry and returns
65  * the number of entries. The first argument, if not null, names an
66  * alternate utmp(x) file to look in.
67  *
68  * The memory returned by getutentries belongs to getutentries. The
69  * list returned (or elements of it) may be returned again later if
70  * utmp hasn't changed in the meantime.
71  *
72  * endutentries clears and frees the cached data.
73  */
74 
75 int getutentries(const char *, struct utmpentry **);
76 void endutentries(void);
77