wx/features.h \
        wx/ffile.h \
        wx/file.h \
+       wx/fileback.h \
        wx/fileconf.h \
        wx/filefn.h \
        wx/filename.h \
        wx/features.h \
        wx/ffile.h \
        wx/file.h \
+       wx/fileback.h \
        wx/fileconf.h \
        wx/filefn.h \
        wx/filename.h \
        src/common/extended.c \
        src/common/ffile.cpp \
        src/common/file.cpp \
+       src/common/fileback.cpp \
        src/common/fileconf.cpp \
        src/common/filefn.cpp \
        src/common/filename.cpp \
        monodll_extended.o \
        monodll_ffile.o \
        monodll_file.o \
+       monodll_fileback.o \
        monodll_fileconf.o \
        monodll_filefn.o \
        monodll_filename.o \
        monolib_extended.o \
        monolib_ffile.o \
        monolib_file.o \
+       monolib_fileback.o \
        monolib_fileconf.o \
        monolib_filefn.o \
        monolib_filename.o \
        basedll_extended.o \
        basedll_ffile.o \
        basedll_file.o \
+       basedll_fileback.o \
        basedll_fileconf.o \
        basedll_filefn.o \
        basedll_filename.o \
        baselib_extended.o \
        baselib_ffile.o \
        baselib_file.o \
+       baselib_fileback.o \
        baselib_fileconf.o \
        baselib_filefn.o \
        baselib_filename.o \
 monodll_file.o: $(srcdir)/src/common/file.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/file.cpp
 
+monodll_fileback.o: $(srcdir)/src/common/fileback.cpp $(MONODLL_ODEP)
+       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fileback.cpp
+
 monodll_fileconf.o: $(srcdir)/src/common/fileconf.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fileconf.cpp
 
 monolib_file.o: $(srcdir)/src/common/file.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/file.cpp
 
+monolib_fileback.o: $(srcdir)/src/common/fileback.cpp $(MONOLIB_ODEP)
+       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fileback.cpp
+
 monolib_fileconf.o: $(srcdir)/src/common/fileconf.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fileconf.cpp
 
 basedll_file.o: $(srcdir)/src/common/file.cpp $(BASEDLL_ODEP)
        $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/file.cpp
 
+basedll_fileback.o: $(srcdir)/src/common/fileback.cpp $(BASEDLL_ODEP)
+       $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fileback.cpp
+
 basedll_fileconf.o: $(srcdir)/src/common/fileconf.cpp $(BASEDLL_ODEP)
        $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fileconf.cpp
 
 baselib_file.o: $(srcdir)/src/common/file.cpp $(BASELIB_ODEP)
        $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/file.cpp
 
+baselib_fileback.o: $(srcdir)/src/common/fileback.cpp $(BASELIB_ODEP)
+       $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fileback.cpp
+
 baselib_fileconf.o: $(srcdir)/src/common/fileconf.cpp $(BASELIB_ODEP)
        $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fileconf.cpp
 
 
     src/common/extended.c
     src/common/ffile.cpp
     src/common/file.cpp
+    src/common/fileback.cpp
     src/common/fileconf.cpp
     src/common/filefn.cpp
     src/common/filename.cpp
     wx/features.h
     wx/ffile.h
     wx/file.h
+    wx/fileback.h
     wx/fileconf.h
     wx/filefn.h
     wx/filename.h
 
        $(OBJS)\monodll_extended.obj \
        $(OBJS)\monodll_ffile.obj \
        $(OBJS)\monodll_file.obj \
+       $(OBJS)\monodll_fileback.obj \
        $(OBJS)\monodll_fileconf.obj \
        $(OBJS)\monodll_filefn.obj \
        $(OBJS)\monodll_filename.obj \
        $(OBJS)\monolib_extended.obj \
        $(OBJS)\monolib_ffile.obj \
        $(OBJS)\monolib_file.obj \
+       $(OBJS)\monolib_fileback.obj \
        $(OBJS)\monolib_fileconf.obj \
        $(OBJS)\monolib_filefn.obj \
        $(OBJS)\monolib_filename.obj \
        $(OBJS)\basedll_extended.obj \
        $(OBJS)\basedll_ffile.obj \
        $(OBJS)\basedll_file.obj \
+       $(OBJS)\basedll_fileback.obj \
        $(OBJS)\basedll_fileconf.obj \
        $(OBJS)\basedll_filefn.obj \
        $(OBJS)\basedll_filename.obj \
        $(OBJS)\baselib_extended.obj \
        $(OBJS)\baselib_ffile.obj \
        $(OBJS)\baselib_file.obj \
+       $(OBJS)\baselib_fileback.obj \
        $(OBJS)\baselib_fileconf.obj \
        $(OBJS)\baselib_filefn.obj \
        $(OBJS)\baselib_filename.obj \
 $(OBJS)\monodll_file.obj: ..\..\src\common\file.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_fileback.obj: ..\..\src\common\fileback.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_fileconf.obj: ..\..\src\common\fileconf.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
 $(OBJS)\monolib_file.obj: ..\..\src\common\file.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_fileback.obj: ..\..\src\common\fileback.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_fileconf.obj: ..\..\src\common\fileconf.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
 $(OBJS)\basedll_file.obj: ..\..\src\common\file.cpp
        $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
 
+$(OBJS)\basedll_fileback.obj: ..\..\src\common\fileback.cpp
+       $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
+
 $(OBJS)\basedll_fileconf.obj: ..\..\src\common\fileconf.cpp
        $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
 
 $(OBJS)\baselib_file.obj: ..\..\src\common\file.cpp
        $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
 
+$(OBJS)\baselib_fileback.obj: ..\..\src\common\fileback.cpp
+       $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
+
 $(OBJS)\baselib_fileconf.obj: ..\..\src\common\fileconf.cpp
        $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
 
 
        $(OBJS)\monodll_extended.o \
        $(OBJS)\monodll_ffile.o \
        $(OBJS)\monodll_file.o \
+       $(OBJS)\monodll_fileback.o \
        $(OBJS)\monodll_fileconf.o \
        $(OBJS)\monodll_filefn.o \
        $(OBJS)\monodll_filename.o \
        $(OBJS)\monolib_extended.o \
        $(OBJS)\monolib_ffile.o \
        $(OBJS)\monolib_file.o \
+       $(OBJS)\monolib_fileback.o \
        $(OBJS)\monolib_fileconf.o \
        $(OBJS)\monolib_filefn.o \
        $(OBJS)\monolib_filename.o \
        $(OBJS)\basedll_extended.o \
        $(OBJS)\basedll_ffile.o \
        $(OBJS)\basedll_file.o \
+       $(OBJS)\basedll_fileback.o \
        $(OBJS)\basedll_fileconf.o \
        $(OBJS)\basedll_filefn.o \
        $(OBJS)\basedll_filename.o \
        $(OBJS)\baselib_extended.o \
        $(OBJS)\baselib_ffile.o \
        $(OBJS)\baselib_file.o \
+       $(OBJS)\baselib_fileback.o \
        $(OBJS)\baselib_fileconf.o \
        $(OBJS)\baselib_filefn.o \
        $(OBJS)\baselib_filename.o \
 $(OBJS)\monodll_file.o: ../../src/common/file.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_fileback.o: ../../src/common/fileback.cpp
+       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_fileconf.o: ../../src/common/fileconf.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\monolib_file.o: ../../src/common/file.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_fileback.o: ../../src/common/fileback.cpp
+       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_fileconf.o: ../../src/common/fileconf.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\basedll_file.o: ../../src/common/file.cpp
        $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\basedll_fileback.o: ../../src/common/fileback.cpp
+       $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\basedll_fileconf.o: ../../src/common/fileconf.cpp
        $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\baselib_file.o: ../../src/common/file.cpp
        $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\baselib_fileback.o: ../../src/common/fileback.cpp
+       $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\baselib_fileconf.o: ../../src/common/fileconf.cpp
        $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
 
 
        $(OBJS)\monodll_extended.obj &
        $(OBJS)\monodll_ffile.obj &
        $(OBJS)\monodll_file.obj &
+       $(OBJS)\monodll_fileback.obj &
        $(OBJS)\monodll_fileconf.obj &
        $(OBJS)\monodll_filefn.obj &
        $(OBJS)\monodll_filename.obj &
        $(OBJS)\monolib_extended.obj &
        $(OBJS)\monolib_ffile.obj &
        $(OBJS)\monolib_file.obj &
+       $(OBJS)\monolib_fileback.obj &
        $(OBJS)\monolib_fileconf.obj &
        $(OBJS)\monolib_filefn.obj &
        $(OBJS)\monolib_filename.obj &
        $(OBJS)\basedll_extended.obj &
        $(OBJS)\basedll_ffile.obj &
        $(OBJS)\basedll_file.obj &
+       $(OBJS)\basedll_fileback.obj &
        $(OBJS)\basedll_fileconf.obj &
        $(OBJS)\basedll_filefn.obj &
        $(OBJS)\basedll_filename.obj &
        $(OBJS)\baselib_extended.obj &
        $(OBJS)\baselib_ffile.obj &
        $(OBJS)\baselib_file.obj &
+       $(OBJS)\baselib_fileback.obj &
        $(OBJS)\baselib_fileconf.obj &
        $(OBJS)\baselib_filefn.obj &
        $(OBJS)\baselib_filename.obj &
 $(OBJS)\monodll_file.obj :  .AUTODEPEND ..\..\src\common\file.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_fileback.obj :  .AUTODEPEND ..\..\src\common\fileback.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_fileconf.obj :  .AUTODEPEND ..\..\src\common\fileconf.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
 $(OBJS)\monolib_file.obj :  .AUTODEPEND ..\..\src\common\file.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_fileback.obj :  .AUTODEPEND ..\..\src\common\fileback.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_fileconf.obj :  .AUTODEPEND ..\..\src\common\fileconf.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
 $(OBJS)\basedll_file.obj :  .AUTODEPEND ..\..\src\common\file.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
 
+$(OBJS)\basedll_fileback.obj :  .AUTODEPEND ..\..\src\common\fileback.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
+
 $(OBJS)\basedll_fileconf.obj :  .AUTODEPEND ..\..\src\common\fileconf.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
 
 $(OBJS)\baselib_file.obj :  .AUTODEPEND ..\..\src\common\file.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
 
+$(OBJS)\baselib_fileback.obj :  .AUTODEPEND ..\..\src\common\fileback.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
+
 $(OBJS)\baselib_fileconf.obj :  .AUTODEPEND ..\..\src\common\fileconf.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
 
 
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\fileback.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\fileconf.cpp
 # End Source File
 # Begin Source File
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\fileback.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\fileconf.h
 # End Source File
 # Begin Source File
 
   --enable-ipc            use interprocess communication (wxSocket etc.)
   --enable-apple_ieee     use the Apple IEEE codec
   --enable-arcstream      use wxArchive streams
+  --enable-backingfile    use wxBackingFile
   --enable-backtrace      use wxStackWalker class for getting backtraces
   --enable-catch_segvs    catch signals in wxApp::OnFatalException (Unix only)
   --enable-cmdline        use wxCmdLineParser class
   DEFAULT_wxUSE_BUSYINFO=no
   DEFAULT_wxUSE_ARCHIVE_STREAMS=no
   DEFAULT_wxUSE_ZIPSTREAM=no
+  DEFAULT_wxUSE_BACKINGFILE=no
   DEFAULT_wxUSE_VALIDATORS=no
 
   DEFAULT_wxUSE_ACCEL=no
   DEFAULT_wxUSE_BUSYINFO=yes
   DEFAULT_wxUSE_ARCHIVE_STREAMS=yes
   DEFAULT_wxUSE_ZIPSTREAM=yes
+  DEFAULT_wxUSE_BACKINGFILE=yes
   DEFAULT_wxUSE_VALIDATORS=yes
 
   DEFAULT_wxUSE_ACCEL=yes
           fi
 
 
+         enablestring=
+          echo "$as_me:$LINENO: checking for --${enablestring:-enable}-backingfile" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-backingfile... $ECHO_C" >&6
+          no_cache=0
+          # Check whether --enable-backingfile or --disable-backingfile was given.
+if test "${enable_backingfile+set}" = set; then
+  enableval="$enable_backingfile"
+
+                          if test "$enableval" = yes; then
+                            ac_cv_use_backingfile='wxUSE_BACKINGFILE=yes'
+                          else
+                            ac_cv_use_backingfile='wxUSE_BACKINGFILE=no'
+                          fi
+
+else
+
+                          LINE=`grep "wxUSE_BACKINGFILE" ${wx_arg_cache_file}`
+                          if test "x$LINE" != x ; then
+                            eval "DEFAULT_$LINE"
+                          else
+                            no_cache=1
+                          fi
+
+                          ac_cv_use_backingfile='wxUSE_BACKINGFILE='$DEFAULT_wxUSE_BACKINGFILE
+
+fi;
+
+          eval "$ac_cv_use_backingfile"
+          if test "$no_cache" != 1; then
+            echo $ac_cv_use_backingfile >> ${wx_arg_cache_file}.tmp
+          fi
+
+          if test "$wxUSE_BACKINGFILE" = yes; then
+            echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+          else
+            echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+          fi
+
+
          enablestring=
           echo "$as_me:$LINENO: checking for --${enablestring:-enable}-backtrace" >&5
 echo $ECHO_N "checking for --${enablestring:-enable}-backtrace... $ECHO_C" >&6
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
-  if test -r "$ac_dir/X11/Xlib.h"; then
+  if test -r "$ac_dir/X11/Intrinsic.h"; then
     ac_x_includes=$ac_dir
     break
   fi
   # See if we find them without any special options.
   # Don't add to $LIBS permanently.
   ac_save_LIBS=$LIBS
-  LIBS="-lX11 $LIBS"
+  LIBS="-lXt $LIBS"
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
 int
 main ()
 {
-XrmInitialize ()
+XtMalloc (0)
   ;
   return 0;
 }
 do
   # Don't even attempt the hair of trying to link an X program!
   for ac_extension in a so sl; do
-    if test -r $ac_dir/libX11.$ac_extension; then
+    if test -r $ac_dir/libXt.$ac_extension; then
       ac_x_libraries=$ac_dir
       break 2
     fi
     INET_LINK=" -l$INET_LINK"
 fi
 
+
+  for wx_func in fdopen
+  do
+    echo "$as_me:$LINENO: checking for $wx_func" >&5
+echo $ECHO_N "checking for $wx_func... $ECHO_C" >&6
+if eval "test \"\${wx_cv_func_$wx_func+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        cat >conftest.$ac_ext <<_ACEOF
+
+            /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+                $ac_includes_default
+
+int
+main ()
+{
+
+                #ifndef $wx_func
+                  &$wx_func;
+                #endif
+
+
+  ;
+  return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"                         || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval wx_cv_func_$wx_func=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval wx_cv_func_$wx_func=no
 fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'wx_cv_func_$wx_func'}'`" >&5
+echo "${ECHO_T}`eval echo '${'wx_cv_func_$wx_func'}'`" >&6
+
+    if eval test \$wx_cv_func_$wx_func = yes
+    then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_`echo $wx_func | tr 'a-z' 'A-Z'` 1
+_ACEOF
+
+
+    else
+      :
+
+    fi
+  done
+
+
+fi
+
 
 
 
   fi
 fi
 
+if test "$wxUSE_BACKINGFILE" = "yes"; then
+  if test "$wxUSE_STREAMS" != yes -o \( "$wxUSE_FILE" != yes -a "$wxUSE_FFILE" != yes \); then
+    { echo "$as_me:$LINENO: WARNING: wxBackingFile requires wxStreams and wxFile or wxFFile... disabled" >&5
+echo "$as_me: WARNING: wxBackingFile requires wxStreams and wxFile or wxFFile... disabled" >&2;}
+  else
+    cat >>confdefs.h <<\_ACEOF
+#define wxUSE_BACKINGFILE 1
+_ACEOF
+
+  fi
+fi
+
 if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes"; then
   if test "$USE_UNIX" != 1; then
     { echo "$as_me:$LINENO: WARNING: Catching fatal exceptions not currently supported on this system, wxApp::OnFatalException will not be called" >&5
 
   DEFAULT_wxUSE_BUSYINFO=no
   DEFAULT_wxUSE_ARCHIVE_STREAMS=no
   DEFAULT_wxUSE_ZIPSTREAM=no
+  DEFAULT_wxUSE_BACKINGFILE=no
   DEFAULT_wxUSE_VALIDATORS=no
 
   DEFAULT_wxUSE_ACCEL=no
   DEFAULT_wxUSE_BUSYINFO=yes
   DEFAULT_wxUSE_ARCHIVE_STREAMS=yes
   DEFAULT_wxUSE_ZIPSTREAM=yes
+  DEFAULT_wxUSE_BACKINGFILE=yes
   DEFAULT_wxUSE_VALIDATORS=yes
 
   DEFAULT_wxUSE_ACCEL=yes
 dnl please keep the settings below in alphabetical order
 WX_ARG_ENABLE(apple_ieee,    [  --enable-apple_ieee     use the Apple IEEE codec], wxUSE_APPLE_IEEE)
 WX_ARG_ENABLE(arcstream,     [  --enable-arcstream      use wxArchive streams], wxUSE_ARCHIVE_STREAMS)
+WX_ARG_ENABLE(backingfile,   [  --enable-backingfile    use wxBackingFile], wxUSE_BACKINGFILE)
 WX_ARG_ENABLE(backtrace,     [  --enable-backtrace      use wxStackWalker class for getting backtraces], wxUSE_STACKWALKER)
 WX_ARG_ENABLE(catch_segvs,   [  --enable-catch_segvs    catch signals in wxApp::OnFatalException (Unix only)], wxUSE_ON_FATAL_EXCEPTION)
 WX_ARG_ENABLE(cmdline,       [  --enable-cmdline        use wxCmdLineParser class], wxUSE_CMDLINE_PARSER)
   fi
 fi
 
+if test "$wxUSE_BACKINGFILE" = "yes"; then
+  if test "$wxUSE_STREAMS" != yes -o \( "$wxUSE_FILE" != yes -a "$wxUSE_FFILE" != yes \); then
+    AC_MSG_WARN(wxBackingFile requires wxStreams and wxFile or wxFFile... disabled)
+  else
+    AC_DEFINE(wxUSE_BACKINGFILE)
+  fi
+fi
+
 if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes"; then
   if test "$USE_UNIX" != 1; then
     AC_MSG_WARN([Catching fatal exceptions not currently supported on this system, wxApp::OnFatalException will not be called])
 
 2.7.2
 -----
 
+All:
+
+- Added wxFFile overload to wxFileName::CreateTemporaryFileName().
+- Added wxBackingFile and wxBackedInputStream
+
 All (GUI): 
 
 - wxMemoryDC constructor now optionally accepts a wxBitmap parameter,
 
    please keep the options in alphabetical order!
  */
 
+#ifndef wxUSE_BACKINGFILE
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_BACKINGFILE must be defined."
+#   else
+#       define wxUSE_BACKINGFILE 0
+#   endif
+#endif /* !defined(wxUSE_BACKINGFILE) */
+
 #ifndef wxUSE_CRASHREPORT
     /* this one is special: as currently it is Windows-only, don't force it
        to be defined on other platforms */
 #   endif
 #endif /* wxUSE_ZIPSTREAM */
 
+#if wxUSE_BACKINGFILE
+#   if !wxUSE_STREAMS || (!wxUSE_FILE && !wxUSE_FFILE)
+#       ifdef wxABORT_ON_CONFIG_ERROR
+#           error "wxBackingFile requires wxStream and wxFile or wxFFile"
+#       else
+#           undef wxUSE_BACKINGFILE
+#           define wxUSE_BACKINGFILE 1
+#       endif
+#   endif
+#endif /* wxUSE_ZIPSTREAM */
+
 /* the rest of the tests is for the GUI settings only */
 #if wxUSE_GUI
 
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        include/wx/fileback.h
+// Purpose:     Back an input stream with memory or a file
+// Author:      Mike Wetherell
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Mike Wetherell
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_FILEBACK_H__
+#define _WX_FILEBACK_H__
+
+#include "wx/defs.h"
+
+#if wxUSE_BACKINGFILE
+
+// ----------------------------------------------------------------------------
+// Backs an input stream with memory or a file to make it seekable.
+//
+// One or more wxBackedInputStreams can be used to read it's data. The data is
+// reference counted, so stays alive until the last wxBackingFile or
+// wxBackedInputStream using it is destroyed.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxBackingFile
+{
+public:
+    enum { DefaultBufSize = 16384 };
+
+    // Takes ownership of stream. If the stream is smaller than bufsize, the
+    // backing file is never created and the backing is done with memory.
+    wxBackingFile(wxInputStream *stream,
+                  size_t bufsize = DefaultBufSize,
+                  const wxString& prefix = _T("wxbf"));
+
+    wxBackingFile() : m_impl(NULL) { }
+    ~wxBackingFile();
+
+    wxBackingFile(const wxBackingFile& backer);
+    wxBackingFile& operator=(const wxBackingFile& backer);
+
+    operator bool() const { return m_impl != NULL; }
+
+private:
+    class wxBackingFileImpl *m_impl;
+    friend class wxBackedInputStream;
+};
+
+// ----------------------------------------------------------------------------
+// An input stream to read from a wxBackingFile.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxBackedInputStream : public wxInputStream
+{
+public:
+    wxBackedInputStream(const wxBackingFile& backer);
+
+    wxFileOffset GetLength() const;
+    bool IsSeekable() const { return true; }
+
+protected:
+    size_t OnSysRead(void *buffer, size_t size);
+    wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
+    wxFileOffset OnSysTell() const;
+
+private:
+    wxBackingFile m_backer;
+    wxFileOffset m_pos;
+
+    DECLARE_NO_COPY_CLASS(wxBackedInputStream)
+};
+
+#endif // wxUSE_BACKINGFILE
+
+#endif // _WX_FILEBACK_H__
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 //
 // Recommended setting: 1
 #ifndef wxUSE_GRAPHICS_CONTEXT
-#define wxUSE_GRAPHICS_CONTEXT 1
+#define wxUSE_GRAPHICS_CONTEXT 0
 #endif
 
 // ----------------------------------------------------------------------------
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 
 // Set to 1 to compile wxZipInput/OutputStream classes.
 #define wxUSE_ZIPSTREAM     1
 
+// Set to 1 to compile wxBackingFile and wxBackedInputStream
+#define wxUSE_BACKINGFILE   1
+
 // Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
 // wxUSE_LIBPNG
 #define wxUSE_ZLIB          1
 
 
 #define wxUSE_ZIPSTREAM     0
 
+#define wxUSE_BACKINGFILE   0
+
 #define wxUSE_ZLIB          0
 
 #define wxUSE_APPLE_IEEE          0
 
 #define wxUSE_DISPLAY       0
 
-#define wxUSE_DETECT_SM     0
-
 #define wxUSE_GEOMETRY            0
 
 #define wxUSE_IMAGLIST      0
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/fileback.cpp
+// Purpose:     Back an input stream with memory or a file
+// Author:      Mike Wetherell
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Mike Wetherell
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_BACKINGFILE
+
+#ifndef WX_PRECOMP
+    #include "wx/stream.h"
+    #include "wx/utils.h"
+    #include "wx/log.h"
+#endif
+
+#include "wx/fileback.h"
+#include "wx/private/filename.h"
+
+// Prefer wxFFile unless wxFile has large file support but wxFFile does not.
+//
+#if wxUSE_FFILE && (defined WXFFILE_LARGEFILE || !defined WXFILE_LARGEFILE)
+typedef wxFFile wxBFFile;
+static const bool wxBadSeek = false;
+#else
+typedef wxFile wxBFFile;
+static const wxFileOffset wxBadSeek = wxInvalidOffset;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Backing file implementation
+
+class wxBackingFileImpl
+{
+public:
+    wxBackingFileImpl(wxInputStream *stream,
+                      size_t bufsize,
+                      const wxString& prefix);
+    ~wxBackingFileImpl();
+
+    void Release() { if (--m_refcount == 0) delete this; }
+    wxBackingFileImpl *AddRef() { m_refcount++; return this; }
+
+    wxStreamError ReadAt(wxFileOffset pos, void *buffer, size_t *size);
+    wxFileOffset GetLength() const;
+
+private:
+    int m_refcount;
+
+    wxInputStream *m_stream;
+    wxStreamError m_parenterror;
+
+    char *m_buf;
+    size_t m_bufsize;
+    size_t m_buflen;
+
+    wxString m_prefix;
+    wxString m_filename;
+    wxBFFile m_file;
+    wxFileOffset m_filelen;
+};
+
+wxBackingFileImpl::wxBackingFileImpl(wxInputStream *stream,
+                                     size_t bufsize,
+                                     const wxString& prefix)
+  : m_refcount(1),
+    m_stream(stream),
+    m_parenterror(wxSTREAM_NO_ERROR),
+    m_buf(NULL),
+    m_bufsize(bufsize),
+    m_buflen(0),
+    m_prefix(prefix),
+    m_filelen(0)
+{
+    wxFileOffset len = m_stream->GetLength();
+
+    if (len >= 0 && len + size_t(0) < m_bufsize)
+        m_bufsize = len;
+
+    if (m_bufsize)
+        m_buf = new char[m_bufsize];
+}
+
+wxBackingFileImpl::~wxBackingFileImpl()
+{
+    delete m_stream;
+    delete [] m_buf;
+
+    if (!m_filename.empty())
+        wxRemoveFile(m_filename);
+}
+
+wxStreamError wxBackingFileImpl::ReadAt(wxFileOffset pos,
+                                        void *buffer,
+                                        size_t *size)
+{
+    size_t reqestedSize = *size;
+    *size = 0;
+
+    // size1 is the number of bytes it will read directly from the backing
+    // file. size2 is any remaining bytes not yet backed, these are returned
+    // from the buffer or read from the parent stream.
+    size_t size1, size2;
+
+    if (pos + reqestedSize <= m_filelen + size_t(0)) {
+        size1 = reqestedSize;
+        size2 = 0;
+    } else if (pos < m_filelen) {
+        size1 = m_filelen - pos;
+        size2 = reqestedSize - size1;
+    } else {
+        size1 = 0;
+        size2 = reqestedSize;
+    }
+
+    if (pos < 0)
+        return wxSTREAM_READ_ERROR;
+
+    // read the backing file
+    if (size1) {
+        if (m_file.Seek(pos) == wxBadSeek)
+            return wxSTREAM_READ_ERROR;
+
+        ssize_t n = m_file.Read(buffer, size1);
+        if (n > 0) {
+            *size = n;
+            pos += n;
+        }
+
+        if (*size < size1)
+            return wxSTREAM_READ_ERROR;
+    }
+
+    // read from the buffer or parent stream
+    if (size2)
+    {
+        while (*size < reqestedSize)
+        {
+            // if pos is further ahead than the parent has been read so far,
+            // then read forward in the parent stream
+            while (pos - m_filelen + size_t(0) >= m_buflen)
+            {
+                // if the parent is small enough, don't use a backing file
+                // just the buffer memory
+                if (!m_stream && m_filelen == 0)
+                    return m_parenterror;
+
+                // before refilling the buffer write out the current buffer
+                // to the backing file if there is anything in it
+                if (m_buflen)
+                {
+                    if (!m_file.IsOpened())
+                        if (!wxCreateTempFile(m_prefix, &m_file, &m_filename))
+                            return wxSTREAM_READ_ERROR;
+
+                    if (m_file.Seek(m_filelen) == wxBadSeek)
+                        return wxSTREAM_READ_ERROR;
+
+                    size_t count = m_file.Write(m_buf, m_buflen);
+                    m_filelen += count;
+
+                    if (count < m_buflen) {
+                        delete m_stream;
+                        m_stream = NULL;
+                        if (count > 0) {
+                            delete m_buf;
+                            m_buf = NULL;
+                            m_buflen = 0;
+                        }
+                        m_parenterror = wxSTREAM_READ_ERROR;
+                        return m_parenterror;
+                    }
+
+                    m_buflen = 0;
+
+                    if (!m_stream) {
+                        delete m_buf;
+                        m_buf = NULL;
+                    }
+                }
+
+                if (!m_stream)
+                    return m_parenterror;
+
+                // refill buffer
+                m_buflen = m_stream->Read(m_buf, m_bufsize).LastRead();
+
+                if (m_buflen < m_bufsize) {
+                    m_parenterror = m_stream->GetLastError();
+                    if (m_parenterror == wxSTREAM_NO_ERROR)
+                        m_parenterror = wxSTREAM_EOF;
+                    delete m_stream;
+                    m_stream = NULL;
+                }
+            }
+
+            // copy to the user's buffer
+            size_t start = pos - m_filelen;
+            size_t len = wxMin(m_buflen - start, reqestedSize - *size);
+
+            memcpy((char*)buffer + *size, m_buf + start, len);
+            *size += len;
+            pos += len;
+        }
+    }
+
+    return wxSTREAM_NO_ERROR;
+}
+
+wxFileOffset wxBackingFileImpl::GetLength() const
+{
+    if (m_parenterror != wxSTREAM_EOF) {
+        wxLogNull nolog;
+        return m_stream->GetLength();
+    }
+    return m_filelen + m_buflen;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Backing File, the handle part
+
+wxBackingFile::wxBackingFile(wxInputStream *stream,
+                             size_t bufsize,
+                             const wxString& prefix)
+  : m_impl(new wxBackingFileImpl(stream, bufsize, prefix))
+{
+}
+
+wxBackingFile::wxBackingFile(const wxBackingFile& backer)
+  : m_impl(backer.m_impl ? backer.m_impl->AddRef() : NULL)
+{
+}
+
+wxBackingFile& wxBackingFile::operator=(const wxBackingFile& backer)
+{
+    if (backer.m_impl != m_impl) {
+        if (m_impl)
+            m_impl->Release();
+
+        m_impl = backer.m_impl;
+
+        if (m_impl)
+            m_impl->AddRef();
+    }
+
+    return *this;
+}
+
+wxBackingFile::~wxBackingFile()
+{
+    if (m_impl)
+        m_impl->Release();
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Input stream
+
+wxBackedInputStream::wxBackedInputStream(const wxBackingFile& backer)
+  : m_backer(backer),
+    m_pos(0)
+{
+}
+
+size_t wxBackedInputStream::OnSysRead(void *buffer, size_t size)
+{
+    if (!IsOk())
+        return 0;
+
+    m_lasterror = m_backer.m_impl->ReadAt(m_pos, buffer, &size);
+    m_pos += size;
+    return size;
+}
+
+wxFileOffset wxBackedInputStream::GetLength() const
+{
+    return m_backer.m_impl->GetLength();
+}
+
+wxFileOffset wxBackedInputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
+{
+    switch (mode) {
+        case wxFromCurrent:
+        {
+            m_pos += pos;
+            break;
+        }
+        case wxFromEnd:
+        {
+            wxFileOffset len = GetLength();
+            if (len == wxInvalidOffset)
+                return wxInvalidOffset;
+            m_pos = len + pos;
+            break;
+        }
+        default:
+        {
+            m_pos = pos;
+            break;
+        }
+    }
+
+    return m_pos;
+}
+
+wxFileOffset wxBackedInputStream::OnSysTell() const
+{
+    return m_pos;
+}
+
+#endif // wxUSE_BACKINGFILE
 
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\fileback.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\fileconf.cpp
 # End Source File
 # Begin Source File
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\fileback.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\fileconf.h
 # End Source File
 # Begin Source File
 
 wx/features.h
 wx/ffile.h
 wx/file.h
+wx/fileback.h
 wx/fileconf.h
 wx/filefn.h
 wx/filename.h
 
 wx/features.h
 wx/ffile.h
 wx/file.h
+wx/fileback.h
 wx/fileconf.h
 wx/filefn.h
 wx/filename.h
 
 wx/features.h
 wx/ffile.h
 wx/file.h
+wx/fileback.h
 wx/fileconf.h
 wx/filefn.h
 wx/filename.h