1.\" $NetBSD: getlastlogx.3,v 1.1 2003/08/26 17:37:51 wiz Exp $ 2.\" 3.\" Copyright (c) 2003 The NetBSD Foundation, Inc. 4.\" All rights reserved. 5.\" 6.\" This code is derived from software contributed to The NetBSD Foundation 7.\" by Thomas Klausner. 8.\" 9.\" Redistribution and use in source and binary forms, with or without 10.\" modification, are permitted provided that the following conditions 11.\" are met: 12.\" 1. Redistributions of source code must retain the above copyright 13.\" notice, this list of conditions and the following disclaimer. 14.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" notice, this list of conditions and the following disclaimer in the 16.\" documentation and/or other materials provided with the distribution. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28.\" POSSIBILITY OF SUCH DAMAGE. 29.\" 30.Dd August 26, 2003 31.Dt GETLASTLOGX 3 32.Os 33.Sh NAME 34.Nm getlastlogx , 35.Nm getutmp , 36.Nm getutmpx , 37.Nm updlastlogx , 38.Nm updwtmpx , 39.Nm utmpxname 40.Nd user accounting database functions 41.Sh LIBRARY 42.Lb libc 43.Sh SYNOPSIS 44.In utmpx.h 45.Ft struct lastlogx * 46.Fn getlastlogx "const char *fname" "uid_t uid" "struct lastlogx *ll" 47.Ft void 48.Fn getutmp "const struct utmpx *ux" "struct utmp *u" 49.Ft void 50.Fn getutmpx "const struct utmp *u" "struct utmpx *ux" 51.Ft int 52.Fn updlastlogx "const char *fname" "uid_t uid" "struct lastlogx *ll" 53.Ft int 54.Fn updwtmpx "const char *file" "const struct utmpx *utx" 55.Ft int 56.Fn utmpxname "const char *fname" 57.Sh DESCRIPTION 58The 59.Fn getlastlogx 60function looks up the entry for the user with user id 61.Fa uid 62in the 63.Xr lastlogx 5 64file given by 65.Fa fname 66and returns it in 67.Fa \&ll . 68If the provided 69.Fa \&ll 70is 71.Dv NULL , 72the necessary space will be allocated by 73.Fn getlastlogx 74and should be 75.Fn free Ns d 76by the caller. 77.Pp 78The 79.Fn getutmp 80function fills out the entries in the struct utmp 81.Fa u 82with the data provided in the struct utmpx 83.Fa ux . 84.Fn getutmpx 85does the opposite, filling out the entries in the struct utmpx 86.Fa ux 87with the data provided in the struct utmp 88.Fa u , 89and initializing all the unknown fields to 0. 90The sole exception is the 91.Fa ut_type 92field, which will be initialized to 93.Dv USER_PROCESS . 94.Pp 95The 96.Fn updlastlogx 97function tries to update the information for the user with the user id 98.Fa uid 99in the 100.Xr lastlogx 5 101file given by 102.Fa fname 103with the data supplied in 104.Fa \&ll . 105A 106.Ft struct lastlogx 107is defined like this: 108.Bd -literal 109struct lastlogx { 110 struct timeval ll_tv; /* time entry was created */ 111 char ll_line[_UTX_LINESIZE]; /* tty name */ 112 char ll_host[_UTX_HOSTSIZE]; /* host name */ 113 struct sockaddr_storage ll_ss; /* address where entry was made from */ 114}; 115.Ed 116All the fields should be filled out by the caller. 117.Pp 118The 119.Fn updwtmpx 120function updates the 121.Xr wtmpx 5 122file 123.Fa file 124with the 125.Xr utmpx 5 126entry 127.Fa utx . 128.Pp 129The 130.Fn utmpxname 131function sets the default 132.Xr utmpx 5 133database file name to 134.Fa fname . 135.Sh RETURN VALUES 136.Fn getlastlogx 137returns the found entry on success, or 138.Dv NULL 139if it could not open the database, could not find an entry matching 140.Fa uid 141in there, or could not allocate the necessary space (in case 142.Fa \&ll 143was 144.Dv NULL ) . 145.Pp 146.Fn utmpxname 147returns 1 on success, or 0 if the supplied file name was too long or 148did not end with 149.Sq x . 150.Pp 151.Fn updlastlogx 152and 153.Fn updwtmpx 154return 0 on success, or \-1 in case the database or file respectively 155could not be opened or the data not written into it. 156.Sh SEE ALSO 157.Xr endutxent 3 , 158.Xr loginx 3 , 159.Xr utmpx 5 160.Sh HISTORY 161The functions 162.Fn getutmp , 163.Fn getutmpx , 164.Fn updwtmpx , 165and 166.Fn utmpxname 167first appeared in 168.Tn Solaris . 169.Nm getlastlogx 170and 171.Nm updlastlogx 172first appeared in 173.Nx 2.0 . 174