Index: /zzuf/trunk/src/libzzuf/lib-stream.c
===================================================================
--- /zzuf/trunk/src/libzzuf/lib-stream.c	(revision 4247)
+++ /zzuf/trunk/src/libzzuf/lib-stream.c	(revision 4248)
@@ -24,11 +24,4 @@
 #define __EXTENSIONS__
 
-/* Define if stdio operations use *only* the refill mechanism */
-#if defined HAVE___SREFILL
-#   define HAVE_DARWIN_STDIO
-#elif defined HAVE___FILBUF || defined HAVE___SRGET || defined HAVE___UFLOW
-#   define HAVE_BSD_STDIO
-#endif
-
 /* Define the best ftell() clone */
 #if defined HAVE_FTELLO64
@@ -176,6 +169,8 @@
 static inline uint8_t *get_stream_ptr(FILE *stream)
 {
-#if defined HAVE_BSD_STDIO
-    return (uint8_t *)stream->FILE_PTR;
+#if defined HAVE_GLIBC_FILE
+    return (uint8_t *)stream->_IO_read_ptr;
+#elif defined HAVE_FREEBSD_FILE
+    return (uint8_t *)stream->_p;
 #else
     (void)stream;
@@ -186,6 +181,9 @@
 static inline int get_stream_off(FILE *stream)
 {
-#if defined HAVE_BSD_STDIO
-    return (int)((uint8_t *)stream->FILE_PTR - (uint8_t *)stream->FILE_BASE);
+#if defined HAVE_GLIBC_FILE
+    return (int)((uint8_t *)stream->_IO_read_ptr
+                  - (uint8_t *)stream->_IO_read_base);
+#elif defined HAVE_FREEBSD_FILE
+    return (int)((uint8_t *)stream->_p - (uint8_t *)stream->_bf._base);
 #else
     (void)stream;
@@ -196,8 +194,9 @@
 static inline int get_stream_cnt(FILE *stream)
 {
-#if defined HAVE_GLIBC_FP
-    return (int)((uint8_t *)stream->FILE_CNT - (uint8_t *)stream->FILE_PTR);
-#elif defined HAVE_BSD_STDIO
-    return stream->FILE_CNT;
+#if defined HAVE_GLIBC_FILE
+    return (int)((uint8_t *)stream->_IO_read_end
+                  - (uint8_t *)stream->_IO_read_ptr);
+#elif defined HAVE_FREEBSD_FILE
+    return stream->_r;
 #else
     (void)stream;
Index: /zzuf/trunk/configure.ac
===================================================================
--- /zzuf/trunk/configure.ac	(revision 4247)
+++ /zzuf/trunk/configure.ac	(revision 4248)
@@ -78,32 +78,23 @@
 AC_DEFINE_UNQUOTED(RECV_T, $ac_v_recv_t, [Define to the recv() return type])
 
-AC_MSG_CHECKING(for FILE* internal members)
-ac_cv_have_glibc_fp="no"
-ac_v_fp_base="unknown"
-ac_v_fp_ptr="unknown"
-ac_v_fp_cnt="unknown"
+AC_MSG_CHECKING([for _IO_read_ptr and _IO_read_end in FILE (glibc-style)])
 AC_TRY_COMPILE([#include <stdio.h>],
  [FILE *fp; fp->_IO_read_ptr++; fp->_IO_read_end++],
- [ac_cv_have_glibc_fp=yes; ac_v_fp_base=_IO_read_base
-  ac_v_fp_cnt=_IO_read_end; ac_v_fp_ptr=_IO_read_ptr],
- [AC_TRY_COMPILE([#include <stdio.h>],
-   [FILE *fp; fp->__cnt++; fp->__ptr++],
-   [ac_v_fp_base=FIXME; ac_v_fp_ptr=__ptr; ac_v_fp_cnt=__cnt],
-   [AC_TRY_COMPILE([#include <stdio.h>],
-     [FILE *fp; fp->_cnt++; fp->_ptr++],
-     [ac_v_fp_base=FIXME; ac_v_fp_ptr=_ptr; ac_v_fp_cnt=_cnt],
-     [AC_TRY_COMPILE([#include <stdio.h>],
-       [FILE *fp; fp->_c++; fp->_p++],
-       [ac_v_fp_base=FIXME; ac_v_fp_ptr=_p; ac_v_fp_cnt=_c],
-       [AC_TRY_COMPILE([#include <stdio.h>],
-         [FILE *fp; fp->_bf._base++; fp->_r++; fp->_p++],
-         [ac_v_fp_base=_bf._base; ac_v_fp_ptr=_p; ac_v_fp_cnt=_r])])])])])
-AC_MSG_RESULT($ac_v_fp_base/$ac_v_fp_ptr/$ac_v_fp_cnt)
-if test "$ac_cv_have_glibc_fp" != "no"; then
-  AC_DEFINE(HAVE_GLIBC_FP, 1, [Define to 1 if FILE has glibc-style members])
+ [ac_cv_have_file_io_read_ptr=yes],
+ [ac_cv_have_file_io_read_ptr=no])
+AC_MSG_RESULT($ac_cv_have_file_io_read_ptr)
+if test "$ac_cv_have_file_io_read_ptr" != "no"; then
+  AC_DEFINE(HAVE_GLIBC_FILE, 1, [Define to 1 if FILE has glibc-style members])
 fi
-AC_DEFINE_UNQUOTED(FILE_BASE, $ac_v_fp_base, [Define to the FILE::base member])
-AC_DEFINE_UNQUOTED(FILE_PTR, $ac_v_fp_ptr, [Define to the FILE::ptr member])
-AC_DEFINE_UNQUOTED(FILE_CNT, $ac_v_fp_cnt, [Define to the FILE::cnt member])
+
+AC_MSG_CHECKING([for _bf._base, _r and _p in FILE (FreeBSD-style)])
+AC_TRY_COMPILE([#include <stdio.h>],
+ [FILE *fp; fp->_bf._base++; fp->_r++; fp->_p++],
+ [ac_cv_have_file_bf_base=yes],
+ [ac_cv_have_file_bf_base=no])
+AC_MSG_RESULT($ac_cv_have_file_bf_base)
+if test "$ac_cv_have_file_bf_base" != "no"; then
+  AC_DEFINE(HAVE_FREEBSD_FILE, 1, [Define to 1 if FILE has FreeBSD-style members])
+fi
 
 dnl  On HP-UX, fpos64_t == int64_t, but on Linux it's a compound object.
Index: /zzuf/trunk/msvc/config.h
===================================================================
--- /zzuf/trunk/msvc/config.h	(revision 4247)
+++ /zzuf/trunk/msvc/config.h	(revision 4248)
@@ -39,4 +39,5 @@
 /* #undef HAVE_FORK */
 /* #undef HAVE_FREAD_UNLOCKED */
+/* #undef HAVE_FREEBSD_FILE */
 /* #undef HAVE_FREOPEN64 */
 /* #undef HAVE_FSEEKO */
@@ -53,5 +54,5 @@
 #define HAVE_GETPAGESIZE 1
 /* #undef HAVE_GETTIMEOFDAY */
-/* #undef HAVE_GLIBC_FP */
+/* #undef HAVE_GLIBC_FILE */
 #define HAVE_INTTYPES_H 1
 #define HAVE_IO_H 1
