utmpx - Bring in utmpx,wtmpx and lastlogx support
[dragonfly.git] / usr.bin / who / utmpentry.h
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);