From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_PASS, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 8F3BA1F4B4 for ; Thu, 22 Oct 2020 08:06:59 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CDA8D39730CA; Thu, 22 Oct 2020 08:06:58 +0000 (GMT) Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by sourceware.org (Postfix) with ESMTPS id 9F7BE38708B1 for ; Thu, 22 Oct 2020 08:06:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9F7BE38708B1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=lukma@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4CH0M12pjjz1qsZt; Thu, 22 Oct 2020 10:06:53 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4CH0M11pzVz1qv5f; Thu, 22 Oct 2020 10:06:53 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id yl6JiG7B5yVa; Thu, 22 Oct 2020 10:06:50 +0200 (CEST) X-Auth-Info: uaQ1LgQT0ljfQTNCljmFQw97es8s3BVnZdAyrXxdXCE= Received: from jawa (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Thu, 22 Oct 2020 10:06:50 +0200 (CEST) Date: Thu, 22 Oct 2020 10:06:01 +0200 From: Lukasz Majewski To: Adhemerval Zanella Subject: Re: [PATCH 1/5] login: Consolidate utmp and utmpx headers Message-ID: <20201022100601.081e092d@jawa> In-Reply-To: <20200729205117.2925113-1-adhemerval.zanella@linaro.org> References: <20200729205117.2925113-1-adhemerval.zanella@linaro.org> Organization: denx.de X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/4Ram3Nc1h9SU2ogvaUAnOud"; protocol="application/pgp-signature" X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alistair Francis , libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" --Sig_/4Ram3Nc1h9SU2ogvaUAnOud Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Adhemerval, > It moves the 'struct lastlog', 'struct utmp', and 'struct utmpx' to > specific files and consolidates the s390-32 utmp.h and utmpx.h > headers. >=20 > Checked on x86_64-linux-gnu and i686-linux-gnu. I also checked with > a build for s390-linux-gnu. > --- > bits/struct_lastlog.h | 34 +++++ > bits/struct_utmp.h | 55 ++++++++ > bits/utmp.h | 48 +------ > login/Makefile | 3 +- > sysdeps/gnu/bits/struct_utmpx.h | 55 ++++++++ > sysdeps/gnu/bits/utmpx.h | 34 +---- > .../sysv/linux/s390/bits/struct_lastlog.h | 35 +++++ > .../unix/sysv/linux/s390/bits/struct_utmp.h | 51 +++++++ > .../s390/bits/{utmpx.h =3D> struct_utmpx.h} | 57 +------- > sysdeps/unix/sysv/linux/s390/bits/utmp.h | 127 > ------------------ 10 files changed, 238 insertions(+), 261 > deletions(-) create mode 100644 bits/struct_lastlog.h > create mode 100644 bits/struct_utmp.h > create mode 100644 sysdeps/gnu/bits/struct_utmpx.h > create mode 100644 sysdeps/unix/sysv/linux/s390/bits/struct_lastlog.h > create mode 100644 sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h > rename sysdeps/unix/sysv/linux/s390/bits/{utmpx.h =3D> struct_utmpx.h} > (56%) delete mode 100644 sysdeps/unix/sysv/linux/s390/bits/utmp.h >=20 Thanks for refactoring and consolidating the code. Reviewed-by: Lukasz Majewski > diff --git a/bits/struct_lastlog.h b/bits/struct_lastlog.h > new file mode 100644 > index 0000000000..122a44abd0 > --- /dev/null > +++ b/bits/struct_lastlog.h > @@ -0,0 +1,34 @@ > +/* The 'struct lastlog' type. > + Copyright (C) 2020 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#ifndef _UTMP_H > +# error "Never include directly; use > instead." +#endif > + > +/* The structure describing an entry in the database of > + previous logins. */ > +struct lastlog > + { > +#if __WORDSIZE_TIME64_COMPAT32 > + int32_t ll_time; > +#else > + __time_t ll_time; > +#endif > + char ll_line[UT_LINESIZE]; > + char ll_host[UT_HOSTSIZE]; > + }; > diff --git a/bits/struct_utmp.h b/bits/struct_utmp.h > new file mode 100644 > index 0000000000..4b05c91515 > --- /dev/null > +++ b/bits/struct_utmp.h > @@ -0,0 +1,55 @@ > +/* The 'struct utmp' type, describing entries in the utmp file. > + Copyright (C) 2020 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#ifndef _UTMP_H > +# error "Never include directly; use > instead." +#endif > + > +/* The structure describing an entry in the user accounting > database. */ +struct utmp > +{ > + short int ut_type; /* Type of login. */ > + pid_t ut_pid; /* Process ID of login > process. */ > + char ut_line[UT_LINESIZE] > + __attribute_nonstring__; /* Devicename. */ > + char ut_id[4] > + __attribute_nonstring__; /* Inittab ID. */ > + char ut_user[UT_NAMESIZE] > + __attribute_nonstring__; /* Username. */ > + char ut_host[UT_HOSTSIZE] > + __attribute_nonstring__; /* Hostname for remote login. */ > + struct exit_status ut_exit; /* Exit status of a process > marked > + as DEAD_PROCESS. */ > +/* The ut_session and ut_tv fields must be the same size when > compiled > + 32- and 64-bit. This allows data files and shared memory to be > + shared between 32- and 64-bit applications. */ > +#if __WORDSIZE_TIME64_COMPAT32 > + int32_t ut_session; /* Session ID, used for > windowing. */ > + struct > + { > + int32_t tv_sec; /* Seconds. */ > + int32_t tv_usec; /* Microseconds. */ > + } ut_tv; /* Time entry was made. */ > +#else > + long int ut_session; /* Session ID, used for > windowing. */ > + struct timeval ut_tv; /* Time entry was made. */ > +#endif > + > + int32_t ut_addr_v6[4]; /* Internet address of remote host. > */ > + char __glibc_reserved[20]; /* Reserved for future > use. */ +}; > diff --git a/bits/utmp.h b/bits/utmp.h > index b82d14536f..1647d0c67b 100644 > --- a/bits/utmp.h > +++ b/bits/utmp.h > @@ -31,18 +31,7 @@ > #define UT_HOSTSIZE 256 > =20 > =20 > -/* The structure describing an entry in the database of > - previous logins. */ > -struct lastlog > - { > -#if __WORDSIZE_TIME64_COMPAT32 > - int32_t ll_time; > -#else > - __time_t ll_time; > -#endif > - char ll_line[UT_LINESIZE]; > - char ll_host[UT_HOSTSIZE]; > - }; > +#include > =20 > =20 > /* The structure describing the status of a terminated process. This > @@ -53,40 +42,7 @@ struct exit_status > short int e_exit; /* Process exit status. */ > }; > =20 > - > -/* The structure describing an entry in the user accounting > database. */ -struct utmp > -{ > - short int ut_type; /* Type of login. */ > - pid_t ut_pid; /* Process ID of login > process. */ > - char ut_line[UT_LINESIZE] > - __attribute_nonstring__; /* Devicename. */ > - char ut_id[4] > - __attribute_nonstring__; /* Inittab ID. */ > - char ut_user[UT_NAMESIZE] > - __attribute_nonstring__; /* Username. */ > - char ut_host[UT_HOSTSIZE] > - __attribute_nonstring__; /* Hostname for remote login. */ > - struct exit_status ut_exit; /* Exit status of a process > marked > - as DEAD_PROCESS. */ > -/* The ut_session and ut_tv fields must be the same size when > compiled > - 32- and 64-bit. This allows data files and shared memory to be > - shared between 32- and 64-bit applications. */ > -#if __WORDSIZE_TIME64_COMPAT32 > - int32_t ut_session; /* Session ID, used for > windowing. */ > - struct > - { > - int32_t tv_sec; /* Seconds. */ > - int32_t tv_usec; /* Microseconds. */ > - } ut_tv; /* Time entry was made. */ > -#else > - long int ut_session; /* Session ID, used for > windowing. */ > - struct timeval ut_tv; /* Time entry was made. */ > -#endif > - > - int32_t ut_addr_v6[4]; /* Internet address of remote host. > */ > - char __glibc_reserved[20]; /* Reserved for future > use. */ -}; > +#include > =20 > /* Backwards compatibility hacks. */ > #define ut_name ut_user > diff --git a/login/Makefile b/login/Makefile > index d897057bbd..58d5d4d64a 100644 > --- a/login/Makefile > +++ b/login/Makefile > @@ -23,7 +23,8 @@ subdir :=3D login > =20 > include ../Makeconfig > =20 > -headers :=3D utmp.h bits/utmp.h lastlog.h pty.h > +headers :=3D utmp.h bits/utmp.h lastlog.h pty.h > bits/struct_lastlog.h \ > + bits/struct_utmp.h bits/struct_utmpx.h > =20 > routines :=3D getlogin getlogin_r setlogin getlogin_r_chk \ > getutent getutent_r getutid getutline getutid_r > getutline_r \ diff --git a/sysdeps/gnu/bits/struct_utmpx.h > b/sysdeps/gnu/bits/struct_utmpx.h new file mode 100644 > index 0000000000..8bfc786cd8 > --- /dev/null > +++ b/sysdeps/gnu/bits/struct_utmpx.h > @@ -0,0 +1,55 @@ > +/* The 'struct utmpx' type. > + Copyright (C) 2020 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#ifndef _UTMPX_H > +# error "Never include directly; use > instead." +#endif > + > +/* The structure describing an entry in the user accounting > database. */ +struct utmpx > +{ > + short int ut_type; /* Type of login. */ > + __pid_t ut_pid; /* Process ID of login process. */ > + char ut_line[__UT_LINESIZE] > + __attribute_nonstring__; /* Devicename. */ > + char ut_id[4] > + __attribute_nonstring__; /* Inittab ID. */ > + char ut_user[__UT_NAMESIZE] > + __attribute_nonstring__; /* Username. */ > + char ut_host[__UT_HOSTSIZE] > + __attribute_nonstring__; /* Hostname for remote login. */ > + struct __exit_status ut_exit; /* Exit status of a process > marked > + as DEAD_PROCESS. */ > + > +/* The fields ut_session and ut_tv must be the same size when > compiled > + 32- and 64-bit. This allows files and shared memory to be shared > + between 32- and 64-bit applications. */ > +#if __WORDSIZE_TIME64_COMPAT32 > + __int32_t ut_session; /* Session ID, used for > windowing. */ > + struct > + { > + __int32_t tv_sec; /* Seconds. */ > + __int32_t tv_usec; /* Microseconds. */ > + } ut_tv; /* Time entry was made. */ > +#else > + long int ut_session; /* Session ID, used for > windowing. */ > + struct timeval ut_tv; /* Time entry was made. */ > +#endif > + __int32_t ut_addr_v6[4]; /* Internet address of remote > host. */ > + char __glibc_reserved[20]; /* Reserved for future > use. */ +}; > diff --git a/sysdeps/gnu/bits/utmpx.h b/sysdeps/gnu/bits/utmpx.h > index dfd55bfcc3..12ee26871e 100644 > --- a/sysdeps/gnu/bits/utmpx.h > +++ b/sysdeps/gnu/bits/utmpx.h > @@ -51,39 +51,7 @@ struct __exit_status > }; > =20 > =20 > -/* The structure describing an entry in the user accounting > database. */ -struct utmpx > -{ > - short int ut_type; /* Type of login. */ > - __pid_t ut_pid; /* Process ID of login process. */ > - char ut_line[__UT_LINESIZE] > - __attribute_nonstring__; /* Devicename. */ > - char ut_id[4] > - __attribute_nonstring__; /* Inittab ID. */ > - char ut_user[__UT_NAMESIZE] > - __attribute_nonstring__; /* Username. */ > - char ut_host[__UT_HOSTSIZE] > - __attribute_nonstring__; /* Hostname for remote login. */ > - struct __exit_status ut_exit; /* Exit status of a process > marked > - as DEAD_PROCESS. */ > - > -/* The fields ut_session and ut_tv must be the same size when > compiled > - 32- and 64-bit. This allows files and shared memory to be shared > - between 32- and 64-bit applications. */ > -#if __WORDSIZE_TIME64_COMPAT32 > - __int32_t ut_session; /* Session ID, used for > windowing. */ > - struct > - { > - __int32_t tv_sec; /* Seconds. */ > - __int32_t tv_usec; /* Microseconds. */ > - } ut_tv; /* Time entry was made. */ > -#else > - long int ut_session; /* Session ID, used for > windowing. */ > - struct timeval ut_tv; /* Time entry was made. */ > -#endif > - __int32_t ut_addr_v6[4]; /* Internet address of remote > host. */ > - char __glibc_reserved[20]; /* Reserved for future > use. */ -}; > +#include > =20 > =20 > /* Values for the `ut_type' field of a `struct utmpx'. */ > diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_lastlog.h > b/sysdeps/unix/sysv/linux/s390/bits/struct_lastlog.h new file mode > 100644 index 0000000000..2fa409aeec > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_lastlog.h > @@ -0,0 +1,35 @@ > +/* The 'struct lastlog' type. > + Copyright (C) 2020 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#ifndef _UTMP_H > +# error "Never include directly; use > instead." +#endif > + > +/* The structure describing an entry in the database of > + previous logins. */ > +struct lastlog > + { > +#if __WORDSIZE =3D=3D 32 > + int64_t ll_time; > +#else > + __time_t ll_time; > +#endif > + char ll_line[UT_LINESIZE]; > + char ll_host[UT_HOSTSIZE]; > + }; > + > diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h > b/sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h new file mode 100644 > index 0000000000..748240e528 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h > @@ -0,0 +1,51 @@ > +/* The 'struct utmp' type, describing entries in the utmp file. > + Copyright (C) 2020 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +/* The structure describing an entry in the user accounting > database. */ +struct utmp > +{ > + short int ut_type; /* Type of login. */ > + pid_t ut_pid; /* Process ID of login > process. */ > + char ut_line[UT_LINESIZE] > + __attribute_nonstring__; /* Devicename. */ > + char ut_id[4] > + __attribute_nonstring__; /* Inittab ID. */ > + char ut_user[UT_NAMESIZE] > + __attribute_nonstring__; /* Username. */ > + char ut_host[UT_HOSTSIZE] > + __attribute_nonstring__; /* Hostname for remote login. > */ > + struct exit_status ut_exit; /* Exit status of a process > marked > + as DEAD_PROCESS. */ > +/* The ut_session and ut_tv fields must be the same size when > compiled > + 32- and 64-bit. This allows data files and shared memory to be > + shared between 32- and 64-bit applications. */ > +#if __WORDSIZE =3D=3D 32 > + int64_t ut_session; /* Session ID, used for > windowing. */ > + struct > + { > + int64_t tv_sec; /* Seconds. */ > + int64_t tv_usec; /* Microseconds. */ > + } ut_tv; /* Time entry was made. */ > +#else > + long int ut_session; /* Session ID, used for > windowing. */ > + struct timeval ut_tv; /* Time entry was made. */ > +#endif > + > + int32_t ut_addr_v6[4]; /* Internet address of remote host. > */ > + char __glibc_reserved[20]; /* Reserved for future > use. */ +}; > diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h > b/sysdeps/unix/sysv/linux/s390/bits/struct_utmpx.h similarity index > 56% rename from sysdeps/unix/sysv/linux/s390/bits/utmpx.h > rename to sysdeps/unix/sysv/linux/s390/bits/struct_utmpx.h > index d68df97bef..67fd7be51c 100644 > --- a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h > +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_utmpx.h > @@ -1,5 +1,5 @@ > -/* Structures and definitions for the user accounting database. GNU > version. > - Copyright (C) 1997-2020 Free Software Foundation, Inc. > +/* The 'struct utmpx' type. > + Copyright (C) 2020 Free Software Foundation, Inc. > This file is part of the GNU C Library. > =20 > The GNU C Library is free software; you can redistribute it and/or > @@ -17,40 +17,9 @@ > . */ > =20 > #ifndef _UTMPX_H > -# error "Never include directly; use > instead." +# error "Never include directly; use > instead." #endif > =20 > -#include > -#include > -#include > - > - > -#ifdef __USE_GNU > -# include > -# define _PATH_UTMPX _PATH_UTMP > -# define _PATH_WTMPX _PATH_WTMP > -#endif > - > - > -#define __UT_LINESIZE 32 > -#define __UT_NAMESIZE 32 > -#define __UT_HOSTSIZE 256 > - > - > -/* The structure describing the status of a terminated process. This > - type is used in `struct utmpx' below. */ > -struct __exit_status > - { > -#ifdef __USE_GNU > - short int e_termination; /* Process termination status. > */ > - short int e_exit; /* Process exit status. */ > -#else > - short int __e_termination; /* Process termination status. > */ > - short int __e_exit; /* Process exit status. */ > -#endif > - }; > - > - > /* The structure describing an entry in the user accounting > database. */ struct utmpx > { > @@ -84,23 +53,3 @@ struct utmpx > __int32_t ut_addr_v6[4]; /* Internet address of remote > host. */ char __glibc_reserved[20]; /* Reserved for > future use. */ }; > - > - > -/* Values for the `ut_type' field of a `struct utmpx'. */ > -#define EMPTY 0 /* No valid user accounting > information. */ - > -#ifdef __USE_GNU > -# define RUN_LVL 1 /* The system's runlevel. */ > -#endif > -#define BOOT_TIME 2 /* Time of system boot. */ > -#define NEW_TIME 3 /* Time after system clock changed. > */ -#define OLD_TIME 4 /* Time when system clock > changed. */ - > -#define INIT_PROCESS 5 /* Process spawned by the init > process. */ -#define LOGIN_PROCESS 6 /* Session leader > of a logged in user. */ -#define USER_PROCESS 7 /* > Normal process. */ -#define DEAD_PROCESS 8 /* > Terminated process. */ - > -#ifdef __USE_GNU > -# define ACCOUNTING 9 /* System accounting. */ > -#endif > diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmp.h > b/sysdeps/unix/sysv/linux/s390/bits/utmp.h deleted file mode 100644 > index ec0ee02303..0000000000 > --- a/sysdeps/unix/sysv/linux/s390/bits/utmp.h > +++ /dev/null > @@ -1,127 +0,0 @@ > -/* The `struct utmp' type, describing entries in the utmp file. GNU > version. > - Copyright (C) 1993-2020 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be > useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -#ifndef _UTMP_H > -# error "Never include directly; use instead." > -#endif > - > -#include > -#include > -#include > -#include > - > - > -#define UT_LINESIZE 32 > -#define UT_NAMESIZE 32 > -#define UT_HOSTSIZE 256 > - > - > -/* The structure describing an entry in the database of > - previous logins. */ > -struct lastlog > - { > -#if __WORDSIZE =3D=3D 32 > - int64_t ll_time; > -#else > - __time_t ll_time; > -#endif > - char ll_line[UT_LINESIZE]; > - char ll_host[UT_HOSTSIZE]; > - }; > - > - > -/* The structure describing the status of a terminated process. This > - type is used in `struct utmp' below. */ > -struct exit_status > - { > - short int e_termination; /* Process termination status. > */ > - short int e_exit; /* Process exit status. */ > - }; > - > - > -/* The structure describing an entry in the user accounting > database. */ -struct utmp > -{ > - short int ut_type; /* Type of login. */ > - pid_t ut_pid; /* Process ID of login > process. */ > - char ut_line[UT_LINESIZE] > - __attribute_nonstring__; /* Devicename. */ > - char ut_id[4] > - __attribute_nonstring__; /* Inittab ID. */ > - char ut_user[UT_NAMESIZE] > - __attribute_nonstring__; /* Username. */ > - char ut_host[UT_HOSTSIZE] > - __attribute_nonstring__; /* Hostname for remote login. > */ > - struct exit_status ut_exit; /* Exit status of a process > marked > - as DEAD_PROCESS. */ > -/* The ut_session and ut_tv fields must be the same size when > compiled > - 32- and 64-bit. This allows data files and shared memory to be > - shared between 32- and 64-bit applications. */ > -#if __WORDSIZE =3D=3D 32 > - int64_t ut_session; /* Session ID, used for > windowing. */ > - struct > - { > - int64_t tv_sec; /* Seconds. */ > - int64_t tv_usec; /* Microseconds. */ > - } ut_tv; /* Time entry was made. */ > -#else > - long int ut_session; /* Session ID, used for > windowing. */ > - struct timeval ut_tv; /* Time entry was made. */ > -#endif > - > - int32_t ut_addr_v6[4]; /* Internet address of remote host. > */ > - char __glibc_reserved[20]; /* Reserved for future > use. */ -}; > - > -/* Backwards compatibility hacks. */ > -#define ut_name ut_user > -#ifndef _NO_UT_TIME > -/* We have a problem here: `ut_time' is also used otherwise. Define > - _NO_UT_TIME if the compiler complains. */ > -# define ut_time ut_tv.tv_sec > -#endif > -#define ut_xtime ut_tv.tv_sec > -#define ut_addr ut_addr_v6[0] > - > - > -/* Values for the `ut_type' field of a `struct utmp'. */ > -#define EMPTY 0 /* No valid user accounting > information. */ - > -#define RUN_LVL 1 /* The system's runlevel. */ > -#define BOOT_TIME 2 /* Time of system boot. */ > -#define NEW_TIME 3 /* Time after system clock changed. > */ -#define OLD_TIME 4 /* Time when system clock > changed. */ - > -#define INIT_PROCESS 5 /* Process spawned by the init > process. */ -#define LOGIN_PROCESS 6 /* Session leader > of a logged in user. */ -#define USER_PROCESS 7 /* > Normal process. */ -#define DEAD_PROCESS 8 /* > Terminated process. */ - > -#define ACCOUNTING 9 > - > -/* Old Linux name for the EMPTY type. */ > -#define UT_UNKNOWN EMPTY > - > - > -/* Tell the user that we have a modern system with UT_HOST, UT_PID, > - UT_TYPE, UT_ID and UT_TV fields. */ > -#define _HAVE_UT_TYPE 1 > -#define _HAVE_UT_PID 1 > -#define _HAVE_UT_ID 1 > -#define _HAVE_UT_TV 1 > -#define _HAVE_UT_HOST 1 Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de --Sig_/4Ram3Nc1h9SU2ogvaUAnOud Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAl+RPWkACgkQAR8vZIA0 zr19cwf8CWe3a4g42/Aske14XmwOg+2BE1yXgFmq38mVGmpigDvBRIRzDcjJdZ6r F35tcOSwP3BziJbBkqDDexR7PMlmqqShlgMSFxyCoz9pxcUqKlc2AyGVNE35gGf+ afri37DmZOL/DXTSBPHICnYacF7jeNnZ4/iRPa1Or7V69tjc6/Wk0FDLCO8rUB4j KoleasLf2g/5X22ZkEY5WOpK9Y4JKcrK912izYaQzCqSyNnqVMkBkTjbgknQoMmx B3twPaG/HMXRt3MRZ/rQokVNyK8OVU/6VOIHqqHQbq7pnOVeG1ZKBWBmvwrtsKQY uSe9dNwx/jHcnVMnwFpvvcHicTDYuw== =JMD9 -----END PGP SIGNATURE----- --Sig_/4Ram3Nc1h9SU2ogvaUAnOud--