diff options
author | Bruno Haible <bruno@clisp.org> | 2007-03-09 02:41:51 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2007-03-09 02:41:51 +0000 |
commit | 20b319a6d47d029941507a8db8b5a2a67b40cd23 (patch) | |
tree | dd67394f108f1ffed55f76ed259df8d8bacf42bb /lib/fseterr.c | |
parent | d2b0c77abf5b72cbf78ec4e4e404c851950b0fef (diff) | |
download | gnulib-20b319a6d47d029941507a8db8b5a2a67b40cd23.tar.gz |
Preserve errno.
Diffstat (limited to 'lib/fseterr.c')
-rw-r--r-- | lib/fseterr.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/fseterr.c b/lib/fseterr.c index 5ff8ba7e79..3f876155b3 100644 --- a/lib/fseterr.c +++ b/lib/fseterr.c @@ -20,6 +20,8 @@ /* Specification. */ #include "fseterr.h" +#include <errno.h> + void fseterr (FILE *fp) { @@ -35,9 +37,11 @@ fseterr (FILE *fp) #else /* unknown */ /* Portable fallback, based on an idea by Rich Felker. Wow! 6 system calls for something that is just a bit operation! */ + int saved_errno; int fd; int fd2; + saved_errno = errno; fflush (fp); fd = fileno (fp); fd2 = dup (fd); @@ -51,5 +55,6 @@ fseterr (FILE *fp) abort (); close (fd2); } + errno = saved_errno; #endif } |