From 94fe90cc97104818d2187b82cc918a2fc929dd5a Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 10 Mar 2007 16:08:20 +0000 Subject: [PATCH] Avoid using the fallback implementation; prefer porting efforts. --- ChangeLog | 6 ++++++ lib/fseterr.c | 13 +++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9eef4acf32..5f26043f55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-10 Bruno Haible + + * lib/fseterr.c (fseterr): Port to Solaris/SPARC64. Deactivate the + fallback; use #error instead. + Suggested by Simon Josefsson. + 2007-03-10 Bruno Haible * gnulib-tool (func_create_testdir): Treat MOSTLYCLEANFILES like diff --git a/lib/fseterr.c b/lib/fseterr.c index 3f876155b3..52b47273e5 100644 --- a/lib/fseterr.c +++ b/lib/fseterr.c @@ -33,10 +33,17 @@ 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] |= 0x20; +# else fp->_flag |= _IOERR; -#else /* unknown */ +# endif +#elif 0 /* unknown */ /* Portable fallback, based on an idea by Rich Felker. - Wow! 6 system calls for something that is just a bit operation! */ + Wow! 6 system calls for something that is just a bit operation! + Not activated on any system, because there is no way to repair FP when + the sequence of system calls fails, and library code should not call + abort(). */ int saved_errno; int fd; int fd2; @@ -56,5 +63,7 @@ fseterr (FILE *fp) close (fd2); } errno = saved_errno; +#else + #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib." #endif } -- 2.30.2