.\" Copyright (c) 2009 Ed Schouten .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" .Dd May 5, 2020 .Dt UTEMPTER_ADD_RECORD 3UTEMPTER .Os .Sh NAME .Nm utempter_add_record , .Nm utempter_remove_added_record , .Nm utempter_remove_record , .Nm addToUtmp , .Nm removeFromUtmp , .Nm removeLineFromUtmp .Nd utempter compatibility interface .Sh LIBRARY .Lb libutempter .Sh SYNOPSIS .In utempter.h .Ft int .Fn utempter_add_record "int fd" "const char *host" .Ft int .Fn utempter_remove_added_record "void" .Ft int .Fn utempter_remove_record "int fd" .Ft void .Fn addToUtmp "const char *pty" "const char *host" "int fd" .Ft void .Fn removeFromUtmp "void" .Ft void .Fn removeLineFromUtmp "const char *pty" "int fd" .Sh DESCRIPTION These functions provide an interface for terminal emulators such as tmux, screen, and xterm to record user sessions to .Xr utmpx 4 database. Note that they are best effort and may not succeed. If consumers need to know for certain that they have successfully updated the .Xr utmpx 4 database, these functions should not be used because they cannot communicate that for compatibility reasons. .Pp The .Fn utempter_add_record and .Fn addToUtmp functions add a login record to the .Xr utmpx 4 database for the TTY belonging to the pseudo-terminal master file descriptor .Fa fd , using the username corresponding with the real user ID of the calling process and the optional hostname .Fa host , limited to 256 characters, that is the size of .Va ut_host member of .Vt struct utmpx minus terminating NUL character. .Pp The .Fn utempter_remove_record and .Fn removeLineFromUtmp functions mark the login session as being closed for the TTY belonging to the pseudo-terminal master file descriptor .Fa fd . .Pp The .Fn utempter_remove_added_record and .Fn removeFromUtmp functions have the same properties as the previously mentioned functions, except that they use an internally cached value of the file descriptor passed to .Fn utempter_add_record and .Fn addToUtmp . .Pp In this implementation, the .Fa pty arguments of .Fn addToUtmp and .Fn removeLineFromUtmp are ignored, and database entries are driven entirely by the .Fa fd argument. .Sh RETURN VALUES The .Fn utempter_add_record , .Fn utempter_remove_added_record and .Fn utempter_remove_record functions always return a value of 0. .Sh INTERFACE STABILITY .Fn utempter_add_record , .Fn utempter_remove_added_record , and .Fn utempter_remove_record are .Sy Committed . .Fn addToUtmp , .Fn removeFromUtmp , and .Fn removeLineFromUtmp are .Sy Obsolete Committed . .Sh MT-LEVEL .Sy Unsafe .Sh SEE ALSO .Xr pututxline 3c , .Xr utmpx 3head , .Xr utmpx 4