[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Intel C++ compiler for Linux 11.1 doesn't build m4 1.4.13 on NetBSD
From: |
Bruno Haible |
Subject: |
Re: Intel C++ compiler for Linux 11.1 doesn't build m4 1.4.13 on NetBSD |
Date: |
Sat, 19 Dec 2009 12:30:36 +0100 |
User-agent: |
KMail/1.9.9 |
Hi Eric,
> #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD,
> DragonFly, MacOS X, Cygwin */
> - fp_->_offset = pos;
> + /* Use a union, since on NetBSD, the compilation flags determine
> + whether fpos_t is typedef'd to off_t or a struct containing a
> + single off_t member. */
> + union
> + {
> + fpos_t f;
> + off_t o;
> + } u;
> + u.o = pos;
> + fp_->_offset = u.f;
This is right for platforms for which the '_offset' field is declared as an
'fpos_t'. Thanks. But for the platforms where '_offset' is a scalar type
(_off64_t on Cygwin), and where fpos_t might or might become a struct,
the use of fpos_t is better avoided. I'm therefore applything this (which
currently is a no-op).
2009-12-19 Bruno Haible <address@hidden>
fflush: tweak
* lib/fflush.c (update_fpos_cache): Don't use fpos_t on Cygwin.
* lib/fseeko.c (rpl_fseeko): Likewise.
--- lib/fflush.c.orig 2009-12-19 12:29:56.000000000 +0100
+++ lib/fflush.c 2009-12-19 12:29:32.000000000 +0100
@@ -91,6 +91,11 @@
update_fpos_cache (FILE *fp, off_t pos)
{
#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD,
DragonFly, MacOS X, Cygwin */
+# if defined __CYGWIN__
+ /* fp_->_offset is typed as an integer. */
+ fp_->_offset = pos;
+# else
+ /* fp_->_offset is an fpos_t. */
/* Use a union, since on NetBSD, the compilation flags determine
whether fpos_t is typedef'd to off_t or a struct containing a
single off_t member. */
@@ -101,6 +106,7 @@
} u;
u.o = pos;
fp_->_offset = u.f;
+# endif
fp_->_flags |= __SOFF;
#endif
}
--- lib/fseeko.c.orig 2009-12-19 12:29:56.000000000 +0100
+++ lib/fseeko.c 2009-12-19 11:49:43.000000000 +0100
@@ -110,6 +110,11 @@
#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku,
Linux libc5 */
fp->_flags &= ~_IO_EOF_SEEN;
#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD,
DragonFly, MacOS X, Cygwin */
+# if defined __CYGWIN__
+ /* fp_->_offset is typed as an integer. */
+ fp_->_offset = pos;
+# else
+ /* fp_->_offset is an fpos_t. */
{
/* Use a union, since on NetBSD, the compilation flags
determine whether fpos_t is typedef'd to off_t or a struct
@@ -122,6 +127,7 @@
u.o = pos;
fp_->_offset = u.f;
}
+# endif
fp_->_flags |= __SOFF;
fp_->_flags &= ~__SEOF;
#elif defined __EMX__ /* emx+gcc */