[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
fbufmode, fseeko, fseterr: add support for Solaris/AMD64
From: |
Bruno Haible |
Subject: |
fbufmode, fseeko, fseterr: add support for Solaris/AMD64 |
Date: |
Sun, 19 Aug 2007 11:41:43 +0200 |
User-agent: |
KMail/1.5.4 |
This has not been reported so far (Solaris/amd64 appears to be a rarely used
platform). But I believe that the AMD64 port of Solaris 10 has the same
problem as the SPARC64 port: the internals of the FILE structure are hidden.
This patch generalizes the support for SPARC64 to AMD64.
2007-08-19 Bruno Haible <address@hidden>
* lib/fbufmode.c (fbufmode): Add tentative support for Solaris/AMD64.
* lib/fseeko.c (rpl_fseeko): Likewise.
* lib/fseterr.c (fseterr): Likewise.
*** lib/fbufmode.c 9 Jun 2007 01:27:49 -0000 1.3
--- lib/fbufmode.c 19 Aug 2007 09:34:36 -0000
***************
*** 55,62 ****
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);
# else
if (fp->_flag & _IONBF)
return _IONBF;
--- 55,69 ----
if (fp->_flag & _IOLBF)
return _IOLBF;
# endif
! # 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;
*** lib/fseeko.c 9 Jun 2007 01:27:50 -0000 1.7
--- lib/fseeko.c 19 Aug 2007 09:34:36 -0000
***************
*** 71,81 ****
: 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 */
# define fp_ ((struct { unsigned char *_ptr; \
unsigned char *_base; \
unsigned char *_end; \
long _cnt; \
} *) fp)
if (fp_->_ptr == fp_->_base
&& (fp_->_ptr == NULL || fp_->_cnt == 0))
--- 71,83 ----
: 0)
&& fp_ub._base == NULL)
#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris,
mingw */
! # 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))
*** lib/fseterr.c 9 Jun 2007 01:27:50 -0000 1.5
--- lib/fseterr.c 19 Aug 2007 09:34:36 -0000
***************
*** 33,40 ****
#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;
# else
fp->_flag |= _IOERR;
# endif
--- 33,47 ----
#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 _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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- fbufmode, fseeko, fseterr: add support for Solaris/AMD64,
Bruno Haible <=