This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h is broken


Andreas Jaeger <aj@suse.de> writes:

> The file is not complete in cvs, it contains only the start of the
> copyright header.  Andreas, could you send a fix, please?

Here's a fixed version from bugzilla (with some minor nits after
comparison with the utmpx-convert.h file) - ok to commit?

I tested this with a build on s390 and s390x,

Andreas

2008-09-02  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h: Fix last
	commit.

============================================================
Index: sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h
--- sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h	26 Jul 2008 17:41:38 -0000	1.1
+++ sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h	2 Sep 2008 08:13:12 -0000
@@ -15,3 +15,74 @@
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library; if not, write to the Free
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* This file provides functions converting between the 32 and 64 bit
+   struct utmp variants.  */
+
+#ifndef _UTMP_CONVERT_H
+#define _UTMP_CONVERT_H 1
+
+#include <string.h>
+
+#include "utmp32.h"
+
+/* Convert the 64 bit struct utmp value in FROM to the 32 bit version
+   returned in TO.  */
+static inline void
+utmp_convert64to32 (__const struct utmp *from, struct utmp32 *to)
+{
+#if _HAVE_UT_TYPE - 0
+  to->ut_type = from->ut_type;
+#endif
+#if _HAVE_UT_PID - 0
+  to->ut_pid = from->ut_pid;
+#endif
+  memcpy (to->ut_line, from->ut_line, UT_LINESIZE);
+  memcpy (to->ut_user, from->ut_user, UT_NAMESIZE);
+#if _HAVE_UT_ID - 0
+  memcpy (to->ut_id, from->ut_id, 4);
+#endif
+#if _HAVE_UT_HOST - 0
+  memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE);
+#endif
+  to->ut_exit = from->ut_exit;
+  to->ut_session = (int32_t) from->ut_session;
+#if _HAVE_UT_TV - 0
+  to->ut_tv.tv_sec = (int32_t) from->ut_tv.tv_sec;
+  to->ut_tv.tv_usec = (int32_t) from->ut_tv.tv_usec;
+#endif
+  memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4);
+}
+
+/* Convert the 32 bit struct utmp value in FROM to the 64 bit version
+   returned in TO.  */
+static inline void
+utmp_convert32to64 (__const struct utmp32 *from, struct utmp *to)
+{
+#if _HAVE_UT_TYPE - 0
+  to->ut_type = from->ut_type;
+#endif
+#if _HAVE_UT_PID - 0
+  to->ut_pid = from->ut_pid;
+#endif
+  memcpy (to->ut_line, from->ut_line, UT_LINESIZE);
+  memcpy (to->ut_user, from->ut_user, UT_NAMESIZE);
+#if _HAVE_UT_ID - 0
+  memcpy (to->ut_id, from->ut_id, 4);
+#endif
+#if _HAVE_UT_HOST - 0
+  memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE);
+#endif
+  to->ut_exit = from->ut_exit;
+  to->ut_session = (int64_t) from->ut_session;
+#if _HAVE_UT_TV - 0
+  to->ut_tv.tv_sec = (int64_t) from->ut_tv.tv_sec;
+  to->ut_tv.tv_usec = (int64_t) from->ut_tv.tv_usec;
+#endif
+  memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4);
+}
+
+#endif /* utmp-convert.h */

-- 
 Andreas Jaeger, Director Platform / openSUSE, aj@suse.de
  SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
   Maxfeldstr. 5, 90409 Nürnberg, Germany
    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]