-#if defined(__UCLIBC__)
-
-# if defined(__FLAG_ERROR)
-/* Using my newer stdio implementation. Unlocked macros are:
- * #define __CLEARERR(stream) \
- ((stream)->modeflags &= ~(__FLAG_EOF|__FLAG_ERROR), (void)0)
- * #define __FEOF(stream) ((stream)->modeflags & __FLAG_EOF)
- * #define __FERROR(stream) ((stream)->modeflags & __FLAG_ERROR)
- */
-#define SET_FERROR_UNLOCKED(S) ((S)->modeflags |= __FLAG_ERROR)
-
-#elif defined(__MODE_ERR)
-/* Using either the original stdio implementation (from dev86) or
- * my original stdio rewrite. Macros were:
- * #define ferror(fp) (((fp)->mode&__MODE_ERR) != 0)
- * #define feof(fp) (((fp)->mode&__MODE_EOF) != 0)
- * #define clearerr(fp) ((fp)->mode &= ~(__MODE_EOF|__MODE_ERR),0)
- */
-#define SET_FERROR_UNLOCKED(S) ((S)->mode |= __MODE_ERR)
-
-#else
-#error unknown uClibc stdio implemenation!
-#endif
-
-#elif defined(__GLIBC__)
-
-# if defined(_STDIO_USES_IOSTREAM)
-/* Apparently using the newer libio implementation, with associated defines:
- * #define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
- * #define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
- */
-#define SET_FERROR_UNLOCKED(S) ((S)->_flags |= _IO_ERR_SEEN)
-
-# else
-/* Assume the older version of glibc which used a bitfield entry
- * as a stream error flag. The associated defines were:
- * #define __clearerr(stream) ((stream)->__error = (stream)->__eof = 0)
- * #define feof_unlocked(stream) ((stream)->__eof != 0)
- * #define ferror_unlocked(stream) ((stream)->__error != 0)
- */
-#define SET_FERROR_UNLOCKED(S) ((S)->__error = 1)
-
-# endif
-
-#elif defined(__NEWLIB_H__)
-/* I honestly don't know if there are different versions of stdio in
- * newlibs history. Anyway, here's what's current.
- * #define __sfeof(p) (((p)->_flags & __SEOF) != 0)
- * #define __sferror(p) (((p)->_flags & __SERR) != 0)
- * #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
- */
-#define SET_FERROR_UNLOCKED(S) ((S)->_flags |= __SERR)
-
-#elif defined(__dietlibc__)
-/*
- * WARNING!!! dietlibc is quite buggy. WARNING!!!
- *
- * Some example bugs as of March 12, 2003...
- * 1) fputc() doesn't set the error indicator on failure.
- * 2) freopen() doesn't maintain the same stream object, contary to
- * standards. This makes it useless in its primary role of
- * reassociating stdin/stdout/stderr.
- * 3) printf() often fails to correctly format output when conversions
- * involve padding. It is also practically useless for floating
- * point output.
- *
- * But, if you're determined to use it anyway, (as of the current version)
- * you can extract the information you need from dietstdio.h. See the
- * other library implementations for examples.
- */
-#error dietlibc is currently not supported. Please see the commented source.
-
-#else /* some other lib */
-/* Please see the comments for the above supported libaries for examples
- * of what is required to support your stdio implementation.
- */
-#error Your stdio library is currently not supported. Please see the commented source.
-#endif
-