---- endutxent.3.orig 2004-07-13 09:02:01.000000000 -0700
-+++ endutxent.3 2004-08-05 15:41:50.000000000 -0700
+--- endutxent.3.orig 2007-04-08 18:49:40.000000000 -0700
++++ endutxent.3 2007-04-08 19:03:43.000000000 -0700
@@ -34,7 +34,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd September 26, 2002
-+.Dd July 13, 2004
++.Dd June 29, 2006
.Dt ENDUTXENT 3
.Os
.Sh NAME
-@@ -105,20 +105,14 @@
+@@ -54,11 +54,11 @@
+ .Ft struct utmpx *
+ .Fn getutxent void
+ .Ft struct utmpx *
+-.Fn getutxid "const struct utmpx *"
++.Fn getutxid "const struct utmpx *id"
+ .Ft struct utmpx *
+-.Fn getutxline "const struct utmpx *"
++.Fn getutxline "const struct utmpx *line"
+ .Ft struct utmpx *
+-.Fn pututxline "const struct utmpx *"
++.Fn pututxline "const struct utmpx *utx"
+ .Ft void
+ .Fn setutxent void
+ .Sh DESCRIPTION
+@@ -98,6 +98,7 @@
+ .Xr utmpx 5
+ entry line to the accounting database, replacing a previous entry for
+ the same user if it exists.
++Only the superuser may write to the accounting database.
+ .Ss The utmpx structure
+ The
+ .Nm utmpx
+@@ -105,27 +106,21 @@
.Pp
.Bd -literal
struct utmpx {
};
.Ed
.Pp
-@@ -143,8 +137,7 @@
+ Valid entries for
+ .Fa ut_type
+ are:
+-.Bl -tag -width LOGIN_PROCESSXX -compact -offset indent
++.Bl -tag -width ".Dv LOGIN_PROCESSXX" -compact -offset indent
+ .It Dv BOOT_TIME
+ Time of a system boot.
+ .It Dv DEAD_PROCESS
+@@ -143,11 +138,115 @@
Time before system clock change.
.It Dv RUN_LVL
Run level.
+Provided for compatibility, not used.
.It Dv USER_PROCESS
A user process.
++.It Dv SHUTDOWN_TIME
++Time of system shutdown (extension to the standards).
.El
-@@ -163,7 +156,6 @@
++.Pp
++For each value of
++.Fa ut_type ,
++the other fields with meaningful values are as follows:
++.Bl -tag -width ".Dv LOGIN_PROCESSXX" -compact -offset indent
++.It Dv BOOT_TIME
++.Fa ut_tv
++.It Dv DEAD_PROCESS
++.Fa ut_id ,
++.Fa ut_pid ,
++.Fa ut_tv
++.It Dv EMPTY
++(no others)
++.It Dv INIT_PROCESS
++.Fa ut_id ,
++.Fa ut_pid ,
++.Fa ut_tv
++.It Dv LOGIN_PROCESS
++.Fa ut_id ,
++.Fa ut_user
++(implementation-defined name of the login process),
++.Fa ut_pid ,
++.Fa ut_tv
++.It Dv NEW_TIME
++.Fa ut_tv
++.It Dv OLD_TIME
++.Fa ut_tv
++.It Dv RUN_LVL
++(no used)
++.It Dv USER_PROCESS
++.Fa ut_id ,
++.Fa ut_user
++(login name of the user),
++.Fa ut_line ,
++.Fa ut_pid ,
++.Fa ut_host
++(hostname of remote user)
++.Fa ut_tv
++.It Dv SHUTDOWN_TIME
++.Fa ut_tv
++.El
++.Ss Other extensions to the standards
++The
++.Fa ut_tv
++value may also be OR-ed with the following masks:
++.Bl -tag -width XXXX -compact -offset indent
++.It Dv UTMPX_AUTOFILL_MASK
++Depending on the
++.Fa ut_type
++value, other fields are automatically filled in (as specified in the
++meaningful fields table above).
++In particular, the
++.Fa ut_id
++field will be set using the convention of the last four characters of the
++.Fa ut_line
++field (itself filled in automatically from the tty name of the device connected
++to the standard input, output or error, whichever is available).
++Note that it is more efficient to fill in as many values as are already
++available beforehand, rather than have then automatically filled in.
++.It Dv UTMPX_DEAD_IF_CORRESPONDING_MASK
++When
++.Fa ut_type
++value is
++.Dv DEAD_PROCESS, a call to
++.Fn pututxline
++will succeed only if a corresponding entry already exists with a
++.Fa ut_type
++value of
++.Dv USER_PROCESS .
++.El
++.Pp
++Note that the above mask values do not show up in any file format, or in
++any subsequent reads of the data.
++.Pp
++To support
++.Pa wtmpx
++and
++.Pa lastlogx
++equivalent capability,
++.Fn pututxline
++automatically writes to the appropriate files.
++Additional APIs to read these files is available in
++.Xr endutxent_wtmp 3
++and
++.Xr getlastlogx 3 .
++.Ss Backward compatibility
++Successful calls to
++.Fn pututxline
++will automatically write equivalent entries into the
++.Pa utmp ,
++.Pa wtmp
++and
++.Pa lastlog
++files.
++Programs that read these old files should work as expected.
++However, directly writing to these files does not make corresponding
++entries in
++.Pa utmpx
++and the
++.Pa wtmpx
++and
++.Pa lastlogx
++equivalent files, so such write-access is deprecated.
+ .Sh RETURN VALUES
+ .Fn getutxent
+ returns the next entry, or
+@@ -159,11 +258,45 @@
+ return the matching structure on success, or
+ .Dv NULL
+ if no match was found.
++.Pp
+ .Fn pututxline
returns the structure that was successfully written, or
- .Dv NULL .
+-.Dv NULL .
++.Dv NULL
++is returned and the global variable
++.Va errno
++is set to indicate the error.
++.Sh ERRORS
++No errors are defined for the
++.Fn endutxent ,
++.Fn getutxent ,
++.Fn getutxid ,
++.Fn getutxline ,
++and
++.Fn setutxent
++functions.
++.Pp
++The
++.Fn pututxline
++function may fail if:
++.Bl -tag -width Er
++.It Bq Er EPERM
++The process does not have appropriate privileges.
++.It Bq Er EINVAL
++The
++.Dv UTMPX_DEAD_IF_CORRESPONDING_MASK
++flags was specified along with
++.Dv DEAD_PROCESS ,
++but no corresponding entry with
++.Dv USER_PROCESS
++was found.
++.El
++.Pp
++Other errors may be returned if
++.Dv UTMPX_AUTOFILL_MASK
++was specified, and a field could not be auto-filled.
.Sh SEE ALSO
-.Xr logwtmpx 3 ,
++.Xr endutxent_wtmp 3 ,
++.Xr getlastlogx 3 ,
.Xr utmpx 5
.Sh STANDARDS
The