bug-gnulib
[Top][All Lists]
Advanced

[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 */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]