changeset 9155:37e28ffbab9e

Add tentative support for Solaris/AMD64.
author Bruno Haible <bruno@clisp.org>
date Sun, 19 Aug 2007 09:37:45 +0000
parents 0a3b6ec42c55
children f37411290a94
files ChangeLog lib/fbufmode.c lib/fseeko.c lib/fseterr.c
diffstat 4 files changed, 27 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-19  Bruno Haible  <bruno@clisp.org>
+
+	* lib/fbufmode.c (fbufmode): Add tentative support for Solaris/AMD64.
+	* lib/fseeko.c (rpl_fseeko): Likewise.
+	* lib/fseterr.c (fseterr): Likewise.
+
 2007-08-19  Bruno Haible  <bruno@clisp.org>
 
 	* tests/test-lseek.c (main): Disable a test for BeOS.
--- a/lib/fbufmode.c
+++ b/lib/fbufmode.c
@@ -55,8 +55,15 @@
   if (fp->_flag & _IOLBF)
     return _IOLBF;
 # endif
-# if defined __sun && defined __sparc && defined _LP64 /* Solaris/SPARC 64-bit */
-  return ((unsigned int *) fp) [9] & (_IONBF | _IOFBF);
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+#  define fp_ ((struct { unsigned char *_ptr; \
+			 unsigned char *_base; \
+			 unsigned char *_end; \
+			 long _cnt; \
+			 int _file; \
+			 unsigned int _flag; \
+		       } *) fp)
+  return fp_->_flag & (_IONBF | _IOFBF);
 # else
   if (fp->_flag & _IONBF)
     return _IONBF;
--- a/lib/fseeko.c
+++ b/lib/fseeko.c
@@ -71,11 +71,13 @@
 		    : 0)
       && fp_ub._base == NULL)
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, mingw */
-# if defined __sun && defined __sparc && defined _LP64 /* Solaris/SPARC 64-bit */
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
 #  define fp_ ((struct { unsigned char *_ptr; \
 			 unsigned char *_base; \
 			 unsigned char *_end; \
 			 long _cnt; \
+			 int _file; \
+			 unsigned int _flag; \
 		       } *) fp)
   if (fp_->_ptr == fp_->_base
       && (fp_->_ptr == NULL || fp_->_cnt == 0))
--- a/lib/fseterr.c
+++ b/lib/fseterr.c
@@ -33,8 +33,15 @@
 #elif defined __sferror             /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */
   fp->_flags |= __SERR;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, mingw */
-# if defined __sun && defined __sparc && defined _LP64 /* Solaris/SPARC 64-bit */
-  ((unsigned int *) fp) [9] |= _IOERR;
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+#  define fp_ ((struct { unsigned char *_ptr; \
+			 unsigned char *_base; \
+			 unsigned char *_end; \
+			 long _cnt; \
+			 int _file; \
+			 unsigned int _flag; \
+		       } *) fp)
+  fp_->_flag |= _IOERR;
 # else
   fp->_flag |= _IOERR;
 # endif