diff options
author | Bruno Haible <bruno@clisp.org> | 2007-08-19 09:37:45 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2007-08-19 09:37:45 +0000 |
commit | 1561b0ad1f66f47d7911afd27881dc089c718cf1 (patch) | |
tree | c397111abf1b6bb7f1543ccefddf840d0c3923c2 /lib | |
parent | 757e397c630b3078b0b3d67f8e901295569d8400 (diff) | |
download | gnulib-1561b0ad1f66f47d7911afd27881dc089c718cf1.tar.gz |
Add tentative support for Solaris/AMD64.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fbufmode.c | 11 | ||||
-rw-r--r-- | lib/fseeko.c | 4 | ||||
-rw-r--r-- | lib/fseterr.c | 11 |
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 |