1/* 2 * Copyright (c) 2004-2006 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23/* $NetBSD: utmpx.h,v 1.11 2003/08/26 16:48:32 wiz Exp $ */ 24 25/*- 26 * Copyright (c) 2002 The NetBSD Foundation, Inc. 27 * All rights reserved. 28 * 29 * This code is derived from software contributed to The NetBSD Foundation 30 * by Christos Zoulas. 31 * 32 * Redistribution and use in source and binary forms, with or without 33 * modification, are permitted provided that the following conditions 34 * are met: 35 * 1. Redistributions of source code must retain the above copyright 36 * notice, this list of conditions and the following disclaimer. 37 * 2. Redistributions in binary form must reproduce the above copyright 38 * notice, this list of conditions and the following disclaimer in the 39 * documentation and/or other materials provided with the distribution. 40 * 3. All advertising materials mentioning features or use of this software 41 * must display the following acknowledgement: 42 * This product includes software developed by the NetBSD 43 * Foundation, Inc. and its contributors. 44 * 4. Neither the name of The NetBSD Foundation nor the names of its 45 * contributors may be used to endorse or promote products derived 46 * from this software without specific prior written permission. 47 * 48 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 49 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 50 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 51 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 52 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 53 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 54 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 55 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 56 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 57 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 58 * POSSIBILITY OF SUCH DAMAGE. 59 */ 60#ifndef _UTMPX_H_ 61#define _UTMPX_H_ 62 63#include <_types.h> 64#include <sys/time.h> 65#include <sys/cdefs.h> 66#include <Availability.h> 67#include <sys/_types/_pid_t.h> 68 69#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 70#include <sys/_types/_uid_t.h> 71#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 72 73#define _PATH_UTMPX "/var/run/utmpx" 74 75#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 76#define UTMPX_FILE _PATH_UTMPX 77#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 78 79#define _UTX_USERSIZE 256 /* matches MAXLOGNAME */ 80#define _UTX_LINESIZE 32 81#define _UTX_IDSIZE 4 82#define _UTX_HOSTSIZE 256 83 84#define EMPTY 0 85#define RUN_LVL 1 86#define BOOT_TIME 2 87#define OLD_TIME 3 88#define NEW_TIME 4 89#define INIT_PROCESS 5 90#define LOGIN_PROCESS 6 91#define USER_PROCESS 7 92#define DEAD_PROCESS 8 93 94#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 95#define ACCOUNTING 9 96#define SIGNATURE 10 97#define SHUTDOWN_TIME 11 98 99#define UTMPX_AUTOFILL_MASK 0x8000 100#define UTMPX_DEAD_IF_CORRESPONDING_MASK 0x4000 101 102/* notify(3) change notification name */ 103#define UTMPX_CHANGE_NOTIFICATION "com.apple.system.utmpx" 104#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 105 106/* 107 * The following structure describes the fields of the utmpx entries 108 * stored in _PATH_UTMPX. This is not the format the 109 * entries are stored in the files, and application should only access 110 * entries using routines described in getutxent(3). 111 */ 112 113#ifdef _UTMPX_COMPAT 114#define ut_user ut_name 115#define ut_xtime ut_tv.tv_sec 116#endif /* _UTMPX_COMPAT */ 117 118struct utmpx { 119 char ut_user[_UTX_USERSIZE]; /* login name */ 120 char ut_id[_UTX_IDSIZE]; /* id */ 121 char ut_line[_UTX_LINESIZE]; /* tty name */ 122 pid_t ut_pid; /* process id creating the entry */ 123 short ut_type; /* type of this entry */ 124 struct timeval ut_tv; /* time entry was created */ 125 char ut_host[_UTX_HOSTSIZE]; /* host name */ 126 __uint32_t ut_pad[16]; /* reserved for future use */ 127}; 128 129#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 130struct lastlogx { 131 struct timeval ll_tv; /* time entry was created */ 132 char ll_line[_UTX_LINESIZE]; /* tty name */ 133 char ll_host[_UTX_HOSTSIZE]; /* host name */ 134}; 135#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 136 137__BEGIN_DECLS 138 139void endutxent(void); 140 141#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 142void endutxent_wtmp(void) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 143struct lastlogx * 144 getlastlogx(uid_t, struct lastlogx *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 145struct lastlogx * 146 getlastlogxbyname(const char*, struct lastlogx *)__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 147#ifdef UNIFDEF_LEGACY_UTMP_APIS 148struct utmp; /* forward reference */ 149void getutmp(const struct utmpx *, struct utmp *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_9, __IPHONE_2_0, __IPHONE_7_0); 150void getutmpx(const struct utmp *, struct utmpx *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_9, __IPHONE_2_0, __IPHONE_7_0); 151#endif /* UNIFDEF_LEGACY_UTMP_APIS */ 152#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 153 154struct utmpx * 155 getutxent(void); 156 157#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 158struct utmpx * 159 getutxent_wtmp(void) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 160#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 161 162struct utmpx * 163 getutxid(const struct utmpx *); 164struct utmpx * 165 getutxline(const struct utmpx *); 166struct utmpx * 167 pututxline(const struct utmpx *); 168void setutxent(void); 169 170#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 171void setutxent_wtmp(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 172int utmpxname(const char *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 173int wtmpxname(const char *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 174#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */ 175 176__END_DECLS 177 178#endif /* !_UTMPX_H_ */ 179