svn commit: r201857 - in user/ed/utmpx: include lib/libc/gen
Ed Schouten
ed at FreeBSD.org
Fri Jan 8 23:57:31 UTC 2010
Author: ed
Date: Fri Jan 8 23:57:30 2010
New Revision: 201857
URL: http://svn.freebsd.org/changeset/base/201857
Log:
Last-minute ABI change.
I was thinking: if we use the same layout for struct utmpx as we do for
the futx, it is a lot easier to retain ABI compatibility. ut_type is
just stored at the beginning of the structure, which means we can always
first read the value of ut_type and cast it to an entirely different
structure.
Modified:
user/ed/utmpx/include/utmpx.h
user/ed/utmpx/lib/libc/gen/getutxent.3
Modified: user/ed/utmpx/include/utmpx.h
==============================================================================
--- user/ed/utmpx/include/utmpx.h Fri Jan 8 23:50:39 2010 (r201856)
+++ user/ed/utmpx/include/utmpx.h Fri Jan 8 23:57:30 2010 (r201857)
@@ -39,17 +39,17 @@ typedef __pid_t pid_t;
#endif
struct utmpx {
+ short ut_type; /* Type of entry. */
+ struct timeval ut_tv; /* Time entry was made. */
+ char ut_id[8]; /* Record identifier. */
+ pid_t ut_pid; /* Process ID. */
char ut_user[32]; /* User login name. */
- char ut_id[8]; /* Process identifier. */
char ut_line[32]; /* Device name. */
#if __BSD_VISIBLE
char ut_host[128]; /* Remote hostname. */
#else
char __ut_host[128];
#endif
- pid_t ut_pid; /* Process ID. */
- short ut_type; /* Type of entry. */
- struct timeval ut_tv; /* Time entry was made. */
};
#define EMPTY 0 /* No valid user accounting information. */
Modified: user/ed/utmpx/lib/libc/gen/getutxent.3
==============================================================================
--- user/ed/utmpx/lib/libc/gen/getutxent.3 Fri Jan 8 23:50:39 2010 (r201856)
+++ user/ed/utmpx/lib/libc/gen/getutxent.3 Fri Jan 8 23:57:30 2010 (r201857)
@@ -93,13 +93,13 @@ found in the include file
.In utmpx.h :
.Bd -literal -offset indent
struct utmpx {
+ short ut_type; /* Type of entry. */
+ struct timeval ut_tv; /* Time entry was made. */
+ char ut_id[]; /* Record identifier. */
+ pid_t ut_pid; /* Process ID. */
char ut_user[]; /* User login name. */
- char ut_id[]; /* Process identifier. */
char ut_line[]; /* Device name. */
char ut_host[]; /* Remote hostname. */
- pid_t ut_pid; /* Process ID. */
- short ut_type; /* Type of entry. */
- struct timeval ut_tv; /* Time entry was made. */
};
.Ed
.Pp
@@ -136,15 +136,9 @@ are not processed by this implementation
.Pp
Other fields inside the structure are:
.Bl -tag -width ut_user
-.It Fa ut_user
-The user login name corresponding with the login session.
-This field is only applicable to entries of type
-.Dv USER_PROCESS
-and
-.Dv INIT_PROCESS .
-For
-.Dv INIT_PROCESS
-entries this entry typically contains the name of the login process.
+.It Fa ut_tv
+The time the event occured.
+This field is used for all types of entries.
.It Fa ut_id
An identifier that is used to refer to the entry.
This identifier can be used to remove or replace a login entry by
@@ -156,6 +150,23 @@ This field is only applicable to entries
.Dv LOGIN_PROCESS
and
.Dv DEAD_PROCESS .
+.It Fa ut_pid
+The process identifier of the session leader of the login session.
+This field is only applicable to entries of type
+.Dv USER_PROCESS ,
+.Dv INIT_PROCESS ,
+.Dv LOGIN_PROCESS
+and
+.Dv DEAD_PROCESS .
+.It Fa ut_user
+The user login name corresponding with the login session.
+This field is only applicable to entries of type
+.Dv USER_PROCESS
+and
+.Dv INIT_PROCESS .
+For
+.Dv INIT_PROCESS
+entries this entry typically contains the name of the login process.
.It Fa ut_line
The name of the TTY character device, without the leading
.Pa /dev/
@@ -171,17 +182,6 @@ If the user login session is not perform
is left blank.
This field is only applicable to entries of type
.Dv USER_PROCESS .
-.It Fa ut_pid
-The process identifier of the session leader of the login session.
-This field is only applicable to entries of type
-.Dv USER_PROCESS ,
-.Dv INIT_PROCESS ,
-.Dv LOGIN_PROCESS
-and
-.Dv DEAD_PROCESS .
-.It Fa ut_tv
-The time the event occured.
-This field is used for all types of entries.
.El
.Pp
This implementation guarantees all inapplicable fields to be discarded.
More information about the svn-src-user
mailing list