summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2007-08-19 09:37:45 +0000
committerBruno Haible <bruno@clisp.org>2007-08-19 09:37:45 +0000
commit1561b0ad1f66f47d7911afd27881dc089c718cf1 (patch)
treec397111abf1b6bb7f1543ccefddf840d0c3923c2 /lib
parent757e397c630b3078b0b3d67f8e901295569d8400 (diff)
downloadgnulib-1561b0ad1f66f47d7911afd27881dc089c718cf1.tar.gz
Add tentative support for Solaris/AMD64.
Diffstat (limited to 'lib')
-rw-r--r--lib/fbufmode.c11
-rw-r--r--lib/fseeko.c4
-rw-r--r--lib/fseterr.c11
3 files changed, 21 insertions, 5 deletions
diff --git a/lib/fbufmode.c b/lib/fbufmode.c
index 58c3bc247a..1c66a53784 100644
--- a/lib/fbufmode.c
+++ b/lib/fbufmode.c
@@ -55,8 +55,15 @@ fbufmode (FILE *fp)
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;
diff --git a/lib/fseeko.c b/lib/fseeko.c
index 1b51f88f1b..209ce9c690 100644
--- a/lib/fseeko.c
+++ b/lib/fseeko.c
@@ -71,11 +71,13 @@ rpl_fseeko (FILE *fp, off_t offset, int whence)
: 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))
diff --git a/lib/fseterr.c b/lib/fseterr.c
index d0137428b3..d8ea1fbb29 100644
--- a/lib/fseterr.c
+++ b/lib/fseterr.c
@@ -33,8 +33,15 @@ fseterr (FILE *fp)
#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