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. > > 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 => 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 => struct_utmpx.h} > (56%) delete mode 100644 sysdeps/unix/sysv/linux/s390/bits/utmp.h > 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 > > > -/* 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 > > > /* The structure describing the status of a terminated process. This > @@ -53,40 +42,7 @@ struct exit_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_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 > > /* 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 := login > > include ../Makeconfig > > -headers := utmp.h bits/utmp.h lastlog.h pty.h > +headers := utmp.h bits/utmp.h lastlog.h pty.h > bits/struct_lastlog.h \ > + bits/struct_utmp.h bits/struct_utmpx.h > > routines := 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 > }; > > > -/* 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 > > > /* 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 == 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 == 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. > > The GNU C Library is free software; you can redistribute it and/or > @@ -17,40 +17,9 @@ > . */ > > #ifndef _UTMPX_H > -# error "Never include directly; use > instead." +# error "Never include directly; use > instead." #endif > > -#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 == 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 == 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