From f068697b463e8ee2787e867597ab74c68e94aba6 Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Fri, 27 Oct 2006 22:10:19 +0000 Subject: [PATCH] Add wxArchiveFSHandler. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 19 ++ build/bakefiles/files.bkl | 2 + build/msw/makefile.bcc | 16 ++ build/msw/makefile.gcc | 16 ++ build/msw/makefile.vc | 16 ++ build/msw/makefile.wat | 16 ++ build/msw/wx_base.dsp | 8 + docs/changes.txt | 3 +- include/wx/fs_arc.h | 72 +++--- src/common/fs_arc.cpp | 464 ++++++++++++++++++++++++++++++-------- src/wxWindows.dsp | 8 + wxGTK.spec | 1 + wxMotif.spec | 1 + wxX11.spec | 1 + 14 files changed, 507 insertions(+), 136 deletions(-) diff --git a/Makefile.in b/Makefile.in index 16ddf54e76..d0e0729e4f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -259,6 +259,7 @@ ALL_BASE_HEADERS = \ wx/filesys.h \ wx/fontenc.h \ wx/fontmap.h \ + wx/fs_arc.h \ wx/fs_filter.h \ wx/fs_mem.h \ wx/fs_zip.h \ @@ -393,6 +394,7 @@ ALL_PORTS_BASE_HEADERS = \ wx/filesys.h \ wx/fontenc.h \ wx/fontmap.h \ + wx/fs_arc.h \ wx/fs_filter.h \ wx/fs_mem.h \ wx/fs_zip.h \ @@ -550,6 +552,7 @@ ALL_BASE_SOURCES = \ src/common/filtall.cpp \ src/common/filtfind.cpp \ src/common/fmapbase.cpp \ + src/common/fs_arc.cpp \ src/common/fs_filter.cpp \ src/common/fs_zip.cpp \ src/common/hash.cpp \ @@ -705,6 +708,7 @@ MONODLL_OBJECTS = \ monodll_filtall.o \ monodll_filtfind.o \ monodll_fmapbase.o \ + monodll_fs_arc.o \ monodll_fs_filter.o \ monodll_fs_zip.o \ monodll_hash.o \ @@ -804,6 +808,7 @@ MONOLIB_OBJECTS = \ monolib_filtall.o \ monolib_filtfind.o \ monolib_fmapbase.o \ + monolib_fs_arc.o \ monolib_fs_filter.o \ monolib_fs_zip.o \ monolib_hash.o \ @@ -905,6 +910,7 @@ BASEDLL_OBJECTS = \ basedll_filtall.o \ basedll_filtfind.o \ basedll_fmapbase.o \ + basedll_fs_arc.o \ basedll_fs_filter.o \ basedll_fs_zip.o \ basedll_hash.o \ @@ -989,6 +995,7 @@ BASELIB_OBJECTS = \ baselib_filtall.o \ baselib_filtfind.o \ baselib_fmapbase.o \ + baselib_fs_arc.o \ baselib_fs_filter.o \ baselib_fs_zip.o \ baselib_hash.o \ @@ -12225,6 +12232,9 @@ monodll_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(MONODLL_ODEP) monodll_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +monodll_fs_arc.o: $(srcdir)/src/common/fs_arc.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_arc.cpp + monodll_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp @@ -16317,6 +16327,9 @@ monolib_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(MONOLIB_ODEP) monolib_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +monolib_fs_arc.o: $(srcdir)/src/common/fs_arc.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_arc.cpp + monolib_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp @@ -20412,6 +20425,9 @@ basedll_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(BASEDLL_ODEP) basedll_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(BASEDLL_ODEP) $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +basedll_fs_arc.o: $(srcdir)/src/common/fs_arc.cpp $(BASEDLL_ODEP) + $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_arc.cpp + basedll_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(BASEDLL_ODEP) $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp @@ -20997,6 +21013,9 @@ baselib_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(BASELIB_ODEP) baselib_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(BASELIB_ODEP) $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +baselib_fs_arc.o: $(srcdir)/src/common/fs_arc.cpp $(BASELIB_ODEP) + $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_arc.cpp + baselib_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(BASELIB_ODEP) $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index a9221ee003..368797cd92 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -314,6 +314,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/common/filtall.cpp src/common/filtfind.cpp src/common/fmapbase.cpp + src/common/fs_arc.cpp src/common/fs_filter.cpp src/common/fs_zip.cpp src/common/hash.cpp @@ -401,6 +402,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/filesys.h wx/fontenc.h wx/fontmap.h + wx/fs_arc.h wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index 62e84e3443..b300fd09d9 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -228,6 +228,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.obj \ $(OBJS)\monodll_filtfind.obj \ $(OBJS)\monodll_fmapbase.obj \ + $(OBJS)\monodll_fs_arc.obj \ $(OBJS)\monodll_fs_filter.obj \ $(OBJS)\monodll_fs_zip.obj \ $(OBJS)\monodll_hash.obj \ @@ -348,6 +349,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.obj \ $(OBJS)\monolib_filtfind.obj \ $(OBJS)\monolib_fmapbase.obj \ + $(OBJS)\monolib_fs_arc.obj \ $(OBJS)\monolib_fs_filter.obj \ $(OBJS)\monolib_fs_zip.obj \ $(OBJS)\monolib_hash.obj \ @@ -469,6 +471,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.obj \ $(OBJS)\basedll_filtfind.obj \ $(OBJS)\basedll_fmapbase.obj \ + $(OBJS)\basedll_fs_arc.obj \ $(OBJS)\basedll_fs_filter.obj \ $(OBJS)\basedll_fs_zip.obj \ $(OBJS)\basedll_hash.obj \ @@ -574,6 +577,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.obj \ $(OBJS)\baselib_filtfind.obj \ $(OBJS)\baselib_fmapbase.obj \ + $(OBJS)\baselib_fs_arc.obj \ $(OBJS)\baselib_fs_filter.obj \ $(OBJS)\baselib_fs_zip.obj \ $(OBJS)\baselib_hash.obj \ @@ -4575,6 +4579,9 @@ $(OBJS)\monodll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** +$(OBJS)\monodll_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** + $(OBJS)\monodll_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** @@ -6551,6 +6558,9 @@ $(OBJS)\monolib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** +$(OBJS)\monolib_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** + $(OBJS)\monolib_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** @@ -8530,6 +8540,9 @@ $(OBJS)\basedll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** +$(OBJS)\basedll_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** + $(OBJS)\basedll_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** @@ -8797,6 +8810,9 @@ $(OBJS)\baselib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** +$(OBJS)\baselib_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** + $(OBJS)\baselib_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 6b9525e615..fc57f0e27b 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -214,6 +214,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.o \ $(OBJS)\monodll_filtfind.o \ $(OBJS)\monodll_fmapbase.o \ + $(OBJS)\monodll_fs_arc.o \ $(OBJS)\monodll_fs_filter.o \ $(OBJS)\monodll_fs_zip.o \ $(OBJS)\monodll_hash.o \ @@ -334,6 +335,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.o \ $(OBJS)\monolib_filtfind.o \ $(OBJS)\monolib_fmapbase.o \ + $(OBJS)\monolib_fs_arc.o \ $(OBJS)\monolib_fs_filter.o \ $(OBJS)\monolib_fs_zip.o \ $(OBJS)\monolib_hash.o \ @@ -456,6 +458,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.o \ $(OBJS)\basedll_filtfind.o \ $(OBJS)\basedll_fmapbase.o \ + $(OBJS)\basedll_fs_arc.o \ $(OBJS)\basedll_fs_filter.o \ $(OBJS)\basedll_fs_zip.o \ $(OBJS)\basedll_hash.o \ @@ -561,6 +564,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.o \ $(OBJS)\baselib_filtfind.o \ $(OBJS)\baselib_fmapbase.o \ + $(OBJS)\baselib_fs_arc.o \ $(OBJS)\baselib_fs_filter.o \ $(OBJS)\baselib_fs_zip.o \ $(OBJS)\baselib_hash.o \ @@ -4692,6 +4696,9 @@ $(OBJS)\monodll_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\monodll_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monodll_fs_arc.o: ../../src/common/fs_arc.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monodll_fs_filter.o: ../../src/common/fs_filter.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -6768,6 +6775,9 @@ $(OBJS)\monolib_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\monolib_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monolib_fs_arc.o: ../../src/common/fs_arc.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monolib_fs_filter.o: ../../src/common/fs_filter.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -8847,6 +8857,9 @@ $(OBJS)\basedll_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\basedll_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\basedll_fs_arc.o: ../../src/common/fs_arc.cpp + $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\basedll_fs_filter.o: ../../src/common/fs_filter.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< @@ -9114,6 +9127,9 @@ $(OBJS)\baselib_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\baselib_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\baselib_fs_arc.o: ../../src/common/fs_arc.cpp + $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\baselib_fs_filter.o: ../../src/common/fs_filter.cpp $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 7c87a574b6..bcaa7a5079 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -229,6 +229,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.obj \ $(OBJS)\monodll_filtfind.obj \ $(OBJS)\monodll_fmapbase.obj \ + $(OBJS)\monodll_fs_arc.obj \ $(OBJS)\monodll_fs_filter.obj \ $(OBJS)\monodll_fs_zip.obj \ $(OBJS)\monodll_hash.obj \ @@ -354,6 +355,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.obj \ $(OBJS)\monolib_filtfind.obj \ $(OBJS)\monolib_fmapbase.obj \ + $(OBJS)\monolib_fs_arc.obj \ $(OBJS)\monolib_fs_filter.obj \ $(OBJS)\monolib_fs_zip.obj \ $(OBJS)\monolib_hash.obj \ @@ -481,6 +483,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.obj \ $(OBJS)\basedll_filtfind.obj \ $(OBJS)\basedll_fmapbase.obj \ + $(OBJS)\basedll_fs_arc.obj \ $(OBJS)\basedll_fs_filter.obj \ $(OBJS)\basedll_fs_zip.obj \ $(OBJS)\basedll_hash.obj \ @@ -592,6 +595,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.obj \ $(OBJS)\baselib_filtfind.obj \ $(OBJS)\baselib_fmapbase.obj \ + $(OBJS)\baselib_fs_arc.obj \ $(OBJS)\baselib_fs_filter.obj \ $(OBJS)\baselib_fs_zip.obj \ $(OBJS)\baselib_hash.obj \ @@ -4908,6 +4912,9 @@ $(OBJS)\monodll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** +$(OBJS)\monodll_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** + $(OBJS)\monodll_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** @@ -6884,6 +6891,9 @@ $(OBJS)\monolib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** +$(OBJS)\monolib_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** + $(OBJS)\monolib_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** @@ -8863,6 +8873,9 @@ $(OBJS)\basedll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** +$(OBJS)\basedll_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** + $(OBJS)\basedll_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** @@ -9130,6 +9143,9 @@ $(OBJS)\baselib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** +$(OBJS)\baselib_fs_arc.obj: ..\..\src\common\fs_arc.cpp + $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** + $(OBJS)\baselib_fs_filter.obj: ..\..\src\common\fs_filter.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat index e80969e7ec..2947cde991 100644 --- a/build/msw/makefile.wat +++ b/build/msw/makefile.wat @@ -2933,6 +2933,7 @@ MONODLL_OBJECTS = & $(OBJS)\monodll_filtall.obj & $(OBJS)\monodll_filtfind.obj & $(OBJS)\monodll_fmapbase.obj & + $(OBJS)\monodll_fs_arc.obj & $(OBJS)\monodll_fs_filter.obj & $(OBJS)\monodll_fs_zip.obj & $(OBJS)\monodll_hash.obj & @@ -3053,6 +3054,7 @@ MONOLIB_OBJECTS = & $(OBJS)\monolib_filtall.obj & $(OBJS)\monolib_filtfind.obj & $(OBJS)\monolib_fmapbase.obj & + $(OBJS)\monolib_fs_arc.obj & $(OBJS)\monolib_fs_filter.obj & $(OBJS)\monolib_fs_zip.obj & $(OBJS)\monolib_hash.obj & @@ -3175,6 +3177,7 @@ BASEDLL_OBJECTS = & $(OBJS)\basedll_filtall.obj & $(OBJS)\basedll_filtfind.obj & $(OBJS)\basedll_fmapbase.obj & + $(OBJS)\basedll_fs_arc.obj & $(OBJS)\basedll_fs_filter.obj & $(OBJS)\basedll_fs_zip.obj & $(OBJS)\basedll_hash.obj & @@ -3281,6 +3284,7 @@ BASELIB_OBJECTS = & $(OBJS)\baselib_filtall.obj & $(OBJS)\baselib_filtfind.obj & $(OBJS)\baselib_fmapbase.obj & + $(OBJS)\baselib_fs_arc.obj & $(OBJS)\baselib_fs_filter.obj & $(OBJS)\baselib_fs_zip.obj & $(OBJS)\baselib_hash.obj & @@ -4920,6 +4924,9 @@ $(OBJS)\monodll_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< +$(OBJS)\monodll_fs_arc.obj : .AUTODEPEND ..\..\src\common\fs_arc.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + $(OBJS)\monodll_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< @@ -6996,6 +7003,9 @@ $(OBJS)\monolib_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< +$(OBJS)\monolib_fs_arc.obj : .AUTODEPEND ..\..\src\common\fs_arc.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + $(OBJS)\monolib_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< @@ -9075,6 +9085,9 @@ $(OBJS)\basedll_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< +$(OBJS)\basedll_fs_arc.obj : .AUTODEPEND ..\..\src\common\fs_arc.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< + $(OBJS)\basedll_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< @@ -9342,6 +9355,9 @@ $(OBJS)\baselib_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< +$(OBJS)\baselib_fs_arc.obj : .AUTODEPEND ..\..\src\common\fs_arc.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< + $(OBJS)\baselib_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< diff --git a/build/msw/wx_base.dsp b/build/msw/wx_base.dsp index 1dfe7eee7c..588b08dafd 100644 --- a/build/msw/wx_base.dsp +++ b/build/msw/wx_base.dsp @@ -567,6 +567,10 @@ SOURCE=..\..\src\common\fmapbase.cpp # End Source File # Begin Source File +SOURCE=..\..\src\common\fs_arc.cpp +# End Source File +# Begin Source File + SOURCE=..\..\src\common\fs_filter.cpp # End Source File # Begin Source File @@ -1555,6 +1559,10 @@ SOURCE=..\..\include\wx\fontmap.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\fs_arc.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\fs_filter.h # End Source File # Begin Source File diff --git a/docs/changes.txt b/docs/changes.txt index 2e92d4a879..52b01af0f9 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -69,7 +69,8 @@ All: - Added wxFFile overload to wxFileName::CreateTemporaryFileName(). - Added wxBackingFile and wxBackedInputStream. - Added GetTempDir() to wxFileName and wxStandardPaths. -- Added wxFilterFSHandler. +- Added wxTar streams. +- Added wxFilterFSHandler and wxArchiveFSHandler. All (GUI): diff --git a/include/wx/fs_arc.h b/include/wx/fs_arc.h index e98b3f82ad..748f523b92 100644 --- a/include/wx/fs_arc.h +++ b/include/wx/fs_arc.h @@ -1,56 +1,56 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: fs_zip.h -// Purpose: ZIP file system -// Author: Vaclav Slavik -// Copyright: (c) 1999 Vaclav Slavik +// Name: fs_arc.h +// Purpose: Archive file system +// Author: Vaclav Slavik, Mike Wetherell +// Copyright: (c) 1999 Vaclav Slavik, (c) 2006 Mike Wetherell // CVS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_FS_ZIP_H_ -#define _WX_FS_ZIP_H_ +#ifndef _WX_FS_ARC_H_ +#define _WX_FS_ARC_H_ #include "wx/defs.h" -#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS +#if wxUSE_FS_ARCHIVE #include "wx/filesys.h" #include "wx/hashmap.h" - -WX_DECLARE_STRING_HASH_MAP(int, wxZipFilenameHashMap); - +WX_DECLARE_STRING_HASH_MAP(int, wxArchiveFilenameHashMap); //--------------------------------------------------------------------------- -// wxZipFSHandler +// wxArchiveFSHandler //--------------------------------------------------------------------------- -class WXDLLIMPEXP_BASE wxZipFSHandler : public wxFileSystemHandler +class WXDLLIMPEXP_BASE wxArchiveFSHandler : public wxFileSystemHandler { - public: - wxZipFSHandler(); - virtual bool CanOpen(const wxString& location); - virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location); - virtual wxString FindFirst(const wxString& spec, int flags = 0); - virtual wxString FindNext(); - void Cleanup(); - virtual ~wxZipFSHandler(); - - private: - // these vars are used by FindFirst/Next: - class wxZipInputStream *m_Archive; - wxString m_Pattern, m_BaseDir, m_ZipFile; - bool m_AllowDirs, m_AllowFiles; - wxZipFilenameHashMap *m_DirsFound; - - wxString DoFind(); - - DECLARE_NO_COPY_CLASS(wxZipFSHandler) +public: + wxArchiveFSHandler(); + virtual bool CanOpen(const wxString& location); + virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location); + virtual wxString FindFirst(const wxString& spec, int flags = 0); + virtual wxString FindNext(); + void Cleanup(); + virtual ~wxArchiveFSHandler(); + +private: + class wxArchiveFSCache *m_cache; + wxFileSystem m_fs; + + // these vars are used by FindFirst/Next: + class wxArchiveFSCacheData *m_Archive; + class wxArchiveFSEntry *m_FindEntry; + wxString m_Pattern, m_BaseDir, m_ZipFile; + bool m_AllowDirs, m_AllowFiles; + wxArchiveFilenameHashMap *m_DirsFound; + + wxString DoFind(); + + DECLARE_NO_COPY_CLASS(wxArchiveFSHandler) + DECLARE_DYNAMIC_CLASS(wxArchiveFSHandler) }; +#endif // wxUSE_FS_ARCHIVE -#endif - // wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS - -#endif // _WX_FS_ZIP_H_ - +#endif // _WX_FS_ARC_H_ diff --git a/src/common/fs_arc.cpp b/src/common/fs_arc.cpp index f96f1b8ee3..5df4232e85 100644 --- a/src/common/fs_arc.cpp +++ b/src/common/fs_arc.cpp @@ -1,8 +1,8 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: fs_zip.cpp -// Purpose: ZIP file system -// Author: Vaclav Slavik -// Copyright: (c) 1999 Vaclav Slavik +// Name: fs_arc.cpp +// Purpose: wxArchive file system +// Author: Vaclav Slavik, Mike Wetherell +// Copyright: (c) 1999 Vaclav Slavik, (c) 2006 Mike Wetherell // CVS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -13,82 +13,340 @@ #pragma hdrstop #endif -#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_ZIPSTREAM && wxUSE_ZLIB +#if wxUSE_FS_ARCHIVE + +#include "wx/fs_arc.h" #ifndef WXPRECOMP #include "wx/intl.h" #include "wx/log.h" #endif -#include "wx/filesys.h" -#include "wx/wfstream.h" -#include "wx/zipstrm.h" -#include "wx/fs_zip.h" +#include "wx/archive.h" +#include "wx/fileback.h" +#include "wx/thread.h" + +//--------------------------------------------------------------------------- +// wxArchiveFSCacheDataImpl +// +// Holds the catalog of an archive file, and if it is being read from a +// non-seekable stream, a copy of its backing file. +// +// This class is actually the reference counted implementation for the +// wxArchiveFSCacheData class below. It was done that way to allow sharing +// between instances of wxFileSystem, though that's a feature not used in this +// version. +//--------------------------------------------------------------------------- + +WX_DECLARE_STRING_HASH_MAP(wxArchiveEntry*, wxArchiveFSEntryHash); + +struct wxArchiveFSEntry +{ + wxArchiveEntry *entry; + wxArchiveFSEntry *next; +}; + +class wxArchiveFSCacheDataImpl +{ +public: + wxArchiveFSCacheDataImpl(const wxArchiveClassFactory& factory, + const wxBackingFile& backer); + wxArchiveFSCacheDataImpl(const wxArchiveClassFactory& factory, + wxInputStream *stream); + + ~wxArchiveFSCacheDataImpl(); + + void Release() { if (--m_refcount == 0) delete this; } + wxArchiveFSCacheDataImpl *AddRef() { m_refcount++; return this; } + + wxArchiveEntry *Get(const wxString& name); + wxInputStream *NewStream() const; + + wxArchiveFSEntry *GetNext(wxArchiveFSEntry *fse); +private: + wxArchiveFSEntry *AddToCache(wxArchiveEntry *entry); + void CloseStreams(); + + int m_refcount; + + wxArchiveFSEntryHash m_hash; + wxArchiveFSEntry *m_begin; + wxArchiveFSEntry **m_endptr; + + wxBackingFile m_backer; + wxInputStream *m_stream; + wxArchiveInputStream *m_archive; +}; + +wxArchiveFSCacheDataImpl::wxArchiveFSCacheDataImpl( + const wxArchiveClassFactory& factory, + const wxBackingFile& backer) + : m_refcount(1), + m_begin(NULL), + m_endptr(&m_begin), + m_backer(backer), + m_stream(new wxBackedInputStream(backer)), + m_archive(factory.NewStream(*m_stream)) +{ +} + +wxArchiveFSCacheDataImpl::wxArchiveFSCacheDataImpl( + const wxArchiveClassFactory& factory, + wxInputStream *stream) + : m_refcount(1), + m_begin(NULL), + m_endptr(&m_begin), + m_stream(stream), + m_archive(factory.NewStream(*m_stream)) +{ +} + +wxArchiveFSCacheDataImpl::~wxArchiveFSCacheDataImpl() +{ + WX_CLEAR_HASH_MAP(wxArchiveFSEntryHash, m_hash); + + wxArchiveFSEntry *entry = m_begin; + + while (entry) + { + wxArchiveFSEntry *next = entry->next; + delete entry; + entry = next; + } + + CloseStreams(); +} + +wxArchiveFSEntry *wxArchiveFSCacheDataImpl::AddToCache(wxArchiveEntry *entry) +{ + m_hash[entry->GetName()] = entry; + wxArchiveFSEntry *fse = new wxArchiveFSEntry; + *m_endptr = fse; + (*m_endptr)->entry = entry; + (*m_endptr)->next = NULL; + m_endptr = &(*m_endptr)->next; + return fse; +} + +void wxArchiveFSCacheDataImpl::CloseStreams() +{ + delete m_archive; + m_archive = NULL; + delete m_stream; + m_stream = NULL; +} + +wxArchiveEntry *wxArchiveFSCacheDataImpl::Get(const wxString& name) +{ + wxArchiveFSEntryHash::iterator it = m_hash.find(name); + + if (it != m_hash.end()) + return it->second; + + if (!m_archive) + return NULL; + + wxArchiveEntry *entry; + + while ((entry = m_archive->GetNextEntry()) != NULL) + { + AddToCache(entry); + + if (entry->GetName() == name) + return entry; + } + + CloseStreams(); + + return NULL; +} + +wxInputStream* wxArchiveFSCacheDataImpl::NewStream() const +{ + if (m_backer) + return new wxBackedInputStream(m_backer); + else + return NULL; +} + +wxArchiveFSEntry *wxArchiveFSCacheDataImpl::GetNext(wxArchiveFSEntry *fse) +{ + wxArchiveFSEntry *next = fse ? fse->next : m_begin; + + if (!next && m_archive) + { + wxArchiveEntry *entry = m_archive->GetNextEntry(); + + if (entry) + next = AddToCache(entry); + else + CloseStreams(); + } + + return next; +} //--------------------------------------------------------------------------- -// wxZipFSInputStream +// wxArchiveFSCacheData +// +// This is the inteface for wxArchiveFSCacheDataImpl above. Holds the catalog +// of an archive file, and if it is being read from a non-seekable stream, a +// copy of its backing file. //--------------------------------------------------------------------------- -// Helper class for wxZipFSHandler -class wxZipFSInputStream : public wxZipInputStream +class wxArchiveFSCacheData { - public: - wxZipFSInputStream(wxFSFile *file) - : wxZipInputStream(*file->GetStream()) - { - m_file = file; -#if WXWIN_COMPATIBILITY_2_6 - m_allowSeeking = true; -#endif - } +public: + wxArchiveFSCacheData() : m_impl(NULL) { } + wxArchiveFSCacheData(const wxArchiveClassFactory& factory, + const wxBackingFile& backer); + wxArchiveFSCacheData(const wxArchiveClassFactory& factory, + wxInputStream *stream); + + wxArchiveFSCacheData(const wxArchiveFSCacheData& data); + wxArchiveFSCacheData& operator=(const wxArchiveFSCacheData& data); + + ~wxArchiveFSCacheData() { if (m_impl) m_impl->Release(); } + + wxArchiveEntry *Get(const wxString& name) { return m_impl->Get(name); } + wxInputStream *NewStream() const { return m_impl->NewStream(); } + wxArchiveFSEntry *GetNext(wxArchiveFSEntry *fse) + { return m_impl->GetNext(fse); } + +private: + wxArchiveFSCacheDataImpl *m_impl; +}; - virtual ~wxZipFSInputStream() { delete m_file; } +wxArchiveFSCacheData::wxArchiveFSCacheData( + const wxArchiveClassFactory& factory, + const wxBackingFile& backer) + : m_impl(new wxArchiveFSCacheDataImpl(factory, backer)) +{ +} + +wxArchiveFSCacheData::wxArchiveFSCacheData( + const wxArchiveClassFactory& factory, + wxInputStream *stream) + : m_impl(new wxArchiveFSCacheDataImpl(factory, stream)) +{ +} + +wxArchiveFSCacheData::wxArchiveFSCacheData(const wxArchiveFSCacheData& data) + : m_impl(data.m_impl ? data.m_impl->AddRef() : NULL) +{ +} + +wxArchiveFSCacheData& wxArchiveFSCacheData::operator=( + const wxArchiveFSCacheData& data) +{ + if (data.m_impl != m_impl) + { + if (m_impl) + m_impl->Release(); + + m_impl = data.m_impl; + + if (m_impl) + m_impl->AddRef(); + } - private: - wxFSFile *m_file; + return *this; +} + +//--------------------------------------------------------------------------- +// wxArchiveFSCache +// +// wxArchiveFSCacheData caches a single archive, and this class holds a +// collection of them to cache all the archives accessed by this instance +// of wxFileSystem. +//--------------------------------------------------------------------------- + +WX_DECLARE_STRING_HASH_MAP(wxArchiveFSCacheData, wxArchiveFSCacheDataHash); + +class wxArchiveFSCache +{ +public: + wxArchiveFSCache() { } + ~wxArchiveFSCache() { } + + wxArchiveFSCacheData* Add(const wxString& name, + const wxArchiveClassFactory& factory, + wxInputStream *stream); + + wxArchiveFSCacheData *Get(const wxString& name); + +private: + wxArchiveFSCacheDataHash m_hash; }; +wxArchiveFSCacheData* wxArchiveFSCache::Add( + const wxString& name, + const wxArchiveClassFactory& factory, + wxInputStream *stream) +{ + wxArchiveFSCacheData& data(m_hash[name]); + + if (stream->IsSeekable()) + data = wxArchiveFSCacheData(factory, stream); + else + data = wxArchiveFSCacheData(factory, wxBackingFile(stream)); + + return &data; +} + +wxArchiveFSCacheData *wxArchiveFSCache::Get(const wxString& name) +{ + wxArchiveFSCacheDataHash::iterator it; + + if ((it = m_hash.find(name)) != m_hash.end()) + return &it->second; + + return NULL; +} + //---------------------------------------------------------------------------- -// wxZipFSHandler +// wxArchiveFSHandler //---------------------------------------------------------------------------- -wxZipFSHandler::wxZipFSHandler() : wxFileSystemHandler() +IMPLEMENT_DYNAMIC_CLASS(wxArchiveFSHandler, wxFileSystemHandler) + +wxArchiveFSHandler::wxArchiveFSHandler() + : wxFileSystemHandler() { m_Archive = NULL; + m_FindEntry = NULL; m_ZipFile = m_Pattern = m_BaseDir = wxEmptyString; m_AllowDirs = m_AllowFiles = true; m_DirsFound = NULL; + m_cache = NULL; } - - -wxZipFSHandler::~wxZipFSHandler() +wxArchiveFSHandler::~wxArchiveFSHandler() { Cleanup(); + delete m_cache; } - -void wxZipFSHandler::Cleanup() +void wxArchiveFSHandler::Cleanup() { - wxDELETE(m_Archive); wxDELETE(m_DirsFound); } - - -bool wxZipFSHandler::CanOpen(const wxString& location) +bool wxArchiveFSHandler::CanOpen(const wxString& location) { wxString p = GetProtocol(location); - return (p == wxT("zip")); + return wxArchiveClassFactory::Find(p) != NULL; } - -wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& location) +wxFSFile* wxArchiveFSHandler::OpenFile( + wxFileSystem& WXUNUSED(fs), + const wxString& location) { wxString right = GetRightLocation(location); wxString left = GetLeftLocation(location); - wxZipInputStream *s; + wxString protocol = GetProtocol(location); + wxString key = left + wxT("#") + protocol + wxT(":"); if (right.Contains(wxT("./"))) { @@ -100,65 +358,84 @@ wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& l if (right.GetChar(0) == wxT('/')) right = right.Mid(1); - // a new wxFileSystem object is needed here to avoid infinite recursion - wxFSFile *leftFile = wxFileSystem().OpenFile(left); - if (!leftFile) - return NULL; + if (!m_cache) + m_cache = new wxArchiveFSCache; - s = new wxZipFSInputStream(leftFile); - if (s && s->IsOk()) + const wxArchiveClassFactory *factory; + factory = wxArchiveClassFactory::Find(protocol); + if (!factory) + return NULL; + + wxArchiveFSCacheData *cached = m_cache->Get(key); + if (!cached) { -#if wxUSE_DATETIME - wxDateTime dtMod; -#endif // wxUSE_DATETIME + wxFSFile *leftFile = m_fs.OpenFile(left); + if (!leftFile) + return NULL; + cached = m_cache->Add(key, *factory, leftFile->DetachStream()); + delete leftFile; + } + + wxArchiveEntry *entry = cached->Get(right); + if (!entry) + return NULL; + + wxInputStream *leftStream = cached->NewStream(); + if (!leftStream) + { + wxFSFile *leftFile = m_fs.OpenFile(left); + if (!leftFile) + return NULL; + leftStream = leftFile->DetachStream(); + delete leftFile; + } - bool found = false; - while (!found) - { - wxZipEntry *ent = s->GetNextEntry(); - if (!ent) - break; - - if (ent->GetInternalName() == right) - { - found = true; - dtMod = ent->GetDateTime(); - } - - delete ent; - } - if (found) - { - return new wxFSFile(s, - left + wxT("#zip:") + right, + wxArchiveInputStream *s = factory->NewStream(leftStream); + s->OpenEntry(*entry); + + if (s && s->IsOk()) + return new wxFSFile(s, + key + right, GetMimeTypeFromExt(location), GetAnchor(location) #if wxUSE_DATETIME - , dtMod + , entry->GetDateTime() #endif // wxUSE_DATETIME ); - } - } delete s; return NULL; } - - -wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) +wxString wxArchiveFSHandler::FindFirst(const wxString& spec, int flags) { wxString right = GetRightLocation(spec); wxString left = GetLeftLocation(spec); + wxString protocol = GetProtocol(spec); + wxString key = left + wxT("#") + protocol + wxT(":"); if (!right.empty() && right.Last() == wxT('/')) right.RemoveLast(); - if (m_Archive) + if (!m_cache) + m_cache = new wxArchiveFSCache; + + const wxArchiveClassFactory *factory; + factory = wxArchiveClassFactory::Find(protocol); + if (!factory) + return wxEmptyString; + + m_Archive = m_cache->Get(key); + if (!m_Archive) { - delete m_Archive; - m_Archive = NULL; + wxFSFile *leftFile = m_fs.OpenFile(left); + if (!leftFile) + return wxEmptyString; + m_Archive = m_cache->Add(key, *factory, leftFile->DetachStream()); + delete leftFile; } + m_FindEntry = NULL; + switch (flags) { case wxFILE: @@ -169,11 +446,7 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) m_AllowDirs = m_AllowFiles = true; break; } - m_ZipFile = left; - - wxFSFile *leftFile = wxFileSystem().OpenFile(left); - if (leftFile) - m_Archive = new wxZipFSInputStream(leftFile); + m_ZipFile = key; m_Pattern = right.AfterLast(wxT('/')); m_BaseDir = right.BeforeLast(wxT('/')); @@ -185,7 +458,7 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) if (m_AllowDirs) { delete m_DirsFound; - m_DirsFound = new wxZipFilenameHashMap(); + m_DirsFound = new wxArchiveFilenameHashMap(); if (right.empty()) // allow "/" to match the archive root return spec; } @@ -194,32 +467,28 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) return wxEmptyString; } - - -wxString wxZipFSHandler::FindNext() +wxString wxArchiveFSHandler::FindNext() { if (!m_Archive) return wxEmptyString; return DoFind(); } - - -wxString wxZipFSHandler::DoFind() +wxString wxArchiveFSHandler::DoFind() { wxString namestr, dir, filename; wxString match = wxEmptyString; while (match == wxEmptyString) { - wxZipEntry *entry = m_Archive->GetNextEntry(); - if (!entry) + m_FindEntry = m_Archive->GetNext(m_FindEntry); + + if (!m_FindEntry) { - delete m_Archive; m_Archive = NULL; + m_FindEntry = NULL; break; } - namestr = entry->GetName(wxPATH_UNIX); - delete entry; + namestr = m_FindEntry->entry->GetName(wxPATH_UNIX); if (m_AllowDirs) { @@ -233,7 +502,7 @@ wxString wxZipFSHandler::DoFind() dir = dir.BeforeLast(wxT('/')); if (!filename.empty() && m_BaseDir == dir && wxMatchWild(m_Pattern, filename, false)) - match = m_ZipFile + wxT("#zip:") + dir + wxT("/") + filename; + match = m_ZipFile + dir + wxT("/") + filename; } else break; // already tranversed @@ -244,13 +513,10 @@ wxString wxZipFSHandler::DoFind() dir = namestr.BeforeLast(wxT('/')); if (m_AllowFiles && !filename.empty() && m_BaseDir == dir && wxMatchWild(m_Pattern, filename, false)) - match = m_ZipFile + wxT("#zip:") + namestr; + match = m_ZipFile + namestr; } return match; } - - -#endif - //wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_ZIPSTREAM +#endif // wxUSE_FS_ARCHIVE diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp index cd4065de3e..5cba9fbd7c 100644 --- a/src/wxWindows.dsp +++ b/src/wxWindows.dsp @@ -591,6 +591,10 @@ SOURCE=.\common\framecmn.cpp # End Source File # Begin Source File +SOURCE=.\common\fs_arc.cpp +# End Source File +# Begin Source File + SOURCE=.\common\fs_filter.cpp # End Source File # Begin Source File @@ -2695,6 +2699,10 @@ SOURCE=..\include\wx\frame.h # End Source File # Begin Source File +SOURCE=..\include\wx\fs_arc.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\fs_filter.h # End Source File # Begin Source File diff --git a/wxGTK.spec b/wxGTK.spec index 06a4e97295..f671637436 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -247,6 +247,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_arc.h wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h diff --git a/wxMotif.spec b/wxMotif.spec index 62953c3bd0..bcc90cdfb3 100644 --- a/wxMotif.spec +++ b/wxMotif.spec @@ -150,6 +150,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_arc.h wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h diff --git a/wxX11.spec b/wxX11.spec index c6176eac95..4f0baaff8a 100644 --- a/wxX11.spec +++ b/wxX11.spec @@ -175,6 +175,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_arc.h wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h -- 2.45.2