[llvm-commits] [test-suite] r170306 [7/7] - in /test-suite/trunk: ./ MultiSource/Benchmarks/ MultiSource/Benchmarks/7zip/ MultiSource/Benchmarks/7zip/C/ MultiSource/Benchmarks/7zip/C/LzmaUtil/ MultiSource/Benchmarks/7zip/CPP/ MultiSource/Benchmarks/7zip/CPP/7zip/ MultiSource/Benchmarks/7zip/CPP/7zip/Archive/ MultiSource/Benchmarks/7zip/CPP/7zip/Archive/7z/ MultiSource/Benchmarks/7zip/CPP/7zip/Archive/Cab/ MultiSource/Benchmarks/7zip/CPP/7zip/Archive/Chm/ MultiSource/Benchmarks/7zip/CPP/7zip/Archive/Com/ MultiSource/Ben...
Michael Gottesman
mgottesman at apple.com
Sun Dec 16 21:23:34 PST 2012
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.depend
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.depend?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.depend (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.depend Sun Dec 16 23:23:25 2012
@@ -0,0 +1,2675 @@
+CompressDialog.o: CompressDialog.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/System.h \
+ ../../../Windows/../Common/Types.h ../FileManager/BrowseDialog.h \
+ ../../../Windows/CommonDialog.h ../../../Common/MyString.h \
+ ../../../Windows/Shell.h ../../../Windows/Defs.h \
+ ../FileManager/FormatUtils.h ../FileManager/HelpUtils.h \
+ ../FileManager/SplitUtils.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Window.h ../../../Windows/Control/Window2.h \
+ ../Explorer/MyMessages.h ../Common/ZipRegistry.h ../Common/ExtractMode.h \
+ CompressDialog.h ../../../Windows/Control/Edit.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyWindows.h \
+ ../Common/../../../Common/MyString.h ../Common/../../../Common/Buffer.h \
+ ../Common/../../../Common/Defs.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/Types.h ../Common/../../IDecl.h \
+ ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../FileManager/DialogSize.h \
+ ../../../Windows/Control/Dialog.h CompressDialogRes.h \
+ ../FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Windows/ResourceString.h
+CompressDialog_rc.o: CompressDialog_rc.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h resource2.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h \
+ CompressDialogRes.h
+ExtractDialog.o: ExtractDialog.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ExtractDialog.h ExtractDialogRes.h \
+ ../../../Windows/Control/Edit.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Control/Window2.h ../Common/ZipRegistry.h \
+ ../Common/ExtractMode.h ../Common/ExtractMode.h \
+ ../FileManager/DialogSize.h ../../../Windows/Control/Dialog.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileDir.h ../../../Windows/Defs.h \
+ ../../../Windows/ResourceString.h ../FileManager/HelpUtils.h \
+ ../FileManager/BrowseDialog.h ../../../Windows/CommonDialog.h \
+ ../../../Windows/Shell.h ../FileManager/LangUtils.h \
+ ../../../Common/Lang.h ../FileManager/resourceGui.h ExtractRes.h
+ExtractDialog_rc.o: ExtractDialog_rc.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h ExtractRes.h \
+ ExtractDialogRes.h
+BenchmarkDialog.o: BenchmarkDialog.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Common/MyException.h ../../../Common/MyWindows.h \
+ ../../../Windows/Error.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/System.h ../../../Windows/../Common/Types.h \
+ ../../../Windows/Thread.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../../C/Threads.h ../../../Windows/../../C/Types.h \
+ ../FileManager/HelpUtils.h BenchmarkDialog.h \
+ ../../../Windows/Synchronization.h ../../../Windows/Synchronization2.h \
+ ../../../Windows/Control/ComboBox.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/Control/Window2.h \
+ ../Common/Bench.h ../Common/../../Common/CreateCoder.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../../Common/MyWindows.h \
+ ../Common/../../Common/../../Common/MyString.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/../../Common/MethodId.h \
+ ../Common/../../Common/../../Common/Types.h ../FileManager/DialogSize.h \
+ ../../../Windows/Control/Dialog.h BenchmarkDialogRes.h \
+ ../FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyString.h ../../../Windows/ResourceString.h
+BenchmarkDialog_rc.o: BenchmarkDialog_rc.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h \
+ BenchmarkDialogRes.h
+ExtractGUI.o: ExtractGUI.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Error.h \
+ ../../../Common/MyString.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/FileFind.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Thread.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../FileManager/ExtractCallback.h \
+ ../../../Common/MyCom.h ../../../Windows/ResourceString.h \
+ ../FileManager/../Agent/IFolderArchive.h \
+ ../FileManager/../Agent/../../IDecl.h \
+ ../FileManager/../Agent/../../../Common/MyUnknown.h \
+ ../FileManager/../Agent/../../../Common/MyWindows.h \
+ ../FileManager/../Agent/../../Archive/IArchive.h \
+ ../FileManager/../Agent/../../Archive/../IProgress.h \
+ ../FileManager/../Agent/../../Archive/../../Common/MyUnknown.h \
+ ../FileManager/../Agent/../../Archive/../../Common/Types.h \
+ ../FileManager/../Agent/../../Archive/../IDecl.h \
+ ../FileManager/../Agent/../../Archive/../IStream.h \
+ ../FileManager/../Agent/../../Archive/../PropID.h \
+ ../FileManager/../Agent/../../UI/Common/LoadCodecs.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Common/Types.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Common/MyCom.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Common/MyString.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Common/Buffer.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Common/Defs.h \
+ ../FileManager/../Agent/../../UI/Common/../../ICoder.h \
+ ../FileManager/../Agent/../../UI/Common/../../IStream.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Windows/DLL.h \
+ ../FileManager/../Agent/../../UI/Common/../../../Windows/../Common/MyString.h \
+ ../FileManager/../Agent/../../UI/Common/../../Archive/IArchive.h \
+ ../FileManager/../Agent/../../UI/FileManager/IFolder.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IProgress.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IStream.h \
+ ../FileManager/../Agent/../Common/ExtractMode.h \
+ ../FileManager/../Agent/../Common/IFileExtractCallback.h \
+ ../FileManager/../Agent/../Common/../../IDecl.h \
+ ../FileManager/../Common/ArchiveOpenCallback.h \
+ ../FileManager/../Common/../../IPassword.h \
+ ../FileManager/../Common/../../../Common/MyUnknown.h \
+ ../FileManager/../Common/../../../Common/Types.h \
+ ../FileManager/../Common/../../IDecl.h \
+ ../FileManager/../Common/../../Archive/IArchive.h \
+ ../FileManager/../../IPassword.h ../FileManager/IFolder.h \
+ ../FileManager/ProgressDialog2.h ../../../Windows/Synchronization.h \
+ ../../../Windows/Synchronization2.h ../../../Windows/Control/Dialog.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../FileManager/LangUtils.h \
+ ../../../Common/Lang.h ../FileManager/FormatUtils.h \
+ ../FileManager/LangUtils.h ../FileManager/resourceGui.h \
+ ../Common/ArchiveExtractCallback.h ../../../Common/Wildcard.h \
+ ../Common/../../IPassword.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IProgress.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/OpenArchive.h \
+ ../Common/ArchiveOpenCallback.h ../Common/LoadCodecs.h \
+ ../Common/PropIDUtils.h ../Explorer/MyMessages.h resource2.h \
+ ExtractRes.h ExtractDialog.h ExtractDialogRes.h \
+ ../../../Windows/Control/Edit.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Control/Window2.h ../Common/ZipRegistry.h \
+ ../Common/ExtractMode.h ../FileManager/DialogSize.h ExtractGUI.h \
+ ../Common/Extract.h ../Common/ArchiveExtractCallback.h \
+ ../Common/Property.h ../Common/../Common/LoadCodecs.h
+GUI.o: GUI.cpp ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../myWindows/initguid.h ../../../Common/MyInitGuid.h \
+ ../../../../C/Alloc.h ../../../Common/CommandLineParser.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Common/MyException.h \
+ ../../../Common/MyWindows.h ../../../Common/NewHandler.h \
+ ../../../Common/StringConvert.h ../../../Windows/Error.h \
+ ../../../Common/MyString.h ../Common/ArchiveCommandLine.h \
+ ../../../Common/Wildcard.h ../Common/Extract.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/ArchiveExtractCallback.h \
+ ../../../Common/MyCom.h ../Common/../../IPassword.h \
+ ../Common/../../../Common/MyUnknown.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../IProgress.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/../../IDecl.h \
+ ../Common/OpenArchive.h ../Common/ArchiveOpenCallback.h \
+ ../Common/LoadCodecs.h ../Common/../../../Common/Types.h \
+ ../Common/../../../Common/MyCom.h ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../../Common/Defs.h \
+ ../Common/../../ICoder.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/../Common/LoadCodecs.h ../Common/Update.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h ../Common/ExitCode.h \
+ ../FileManager/StringUtils.h BenchmarkDialog.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h \
+ ../../../Windows/Control/ComboBox.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/Control/Window2.h \
+ ../Common/Bench.h ../Common/../../Common/CreateCoder.h \
+ ../Common/../../Common/../../Common/MyString.h \
+ ../Common/../../Common/MethodId.h \
+ ../Common/../../Common/../../Common/Types.h ../FileManager/DialogSize.h \
+ ../../../Windows/Control/Dialog.h BenchmarkDialogRes.h ExtractGUI.h \
+ ../Common/Extract.h ../FileManager/ExtractCallback.h \
+ ../../../Windows/ResourceString.h \
+ ../FileManager/../Agent/IFolderArchive.h \
+ ../FileManager/../Agent/../../IDecl.h \
+ ../FileManager/../Agent/../../Archive/IArchive.h \
+ ../FileManager/../Agent/../../UI/Common/LoadCodecs.h \
+ ../FileManager/../Agent/../../UI/FileManager/IFolder.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IProgress.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IStream.h \
+ ../FileManager/../Agent/../Common/ExtractMode.h \
+ ../FileManager/../Agent/../Common/IFileExtractCallback.h \
+ ../FileManager/../Common/ArchiveOpenCallback.h \
+ ../FileManager/../../IPassword.h ../FileManager/IFolder.h \
+ ../FileManager/ProgressDialog2.h ../../../Windows/Thread.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../FileManager/LangUtils.h \
+ ../../../Common/Lang.h UpdateGUI.h ../Common/Update.h \
+ UpdateCallbackGUI.h ../Common/ArchiveOpenCallback.h \
+ ../FileManager/ProgressDialog2.h ../../../Windows/FileDir.h ExtractRes.h
+wxGUI.o: wxGUI.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h ../../../../GUI/p7zip_32.xpm \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Control/Dialog.h \
+ ../../../Windows/Registry.h ../../../Common/Buffer.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h \
+ ExtractRes.h ../Explorer/MyMessages.h ../FileManager/resourceGui.h \
+ ExtractGUI.h ../Common/Extract.h ../../../Windows/FileFind.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/ArchiveExtractCallback.h \
+ ../../../Common/MyCom.h ../../../Common/Wildcard.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/Types.h ../Common/../../IDecl.h \
+ ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../IProgress.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/../../IDecl.h \
+ ../Common/OpenArchive.h ../Common/ArchiveOpenCallback.h \
+ ../Common/LoadCodecs.h ../Common/../../../Common/Types.h \
+ ../Common/../../../Common/MyCom.h ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../ICoder.h \
+ ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/../Common/LoadCodecs.h ../FileManager/ExtractCallback.h \
+ ../../../Windows/ResourceString.h \
+ ../FileManager/../Agent/IFolderArchive.h \
+ ../FileManager/../Agent/../../IDecl.h \
+ ../FileManager/../Agent/../../Archive/IArchive.h \
+ ../FileManager/../Agent/../../UI/Common/LoadCodecs.h \
+ ../FileManager/../Agent/../../UI/FileManager/IFolder.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IProgress.h \
+ ../FileManager/../Agent/../../UI/FileManager/../../IStream.h \
+ ../FileManager/../Agent/../Common/ExtractMode.h \
+ ../FileManager/../Agent/../Common/IFileExtractCallback.h \
+ ../FileManager/../Common/ArchiveOpenCallback.h \
+ ../FileManager/../../IPassword.h ../FileManager/IFolder.h \
+ ../FileManager/ProgressDialog2.h ../../../Windows/Thread.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../FileManager/LangUtils.h \
+ ../../../Common/Lang.h UpdateGUI.h ../Common/Update.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h UpdateCallbackGUI.h \
+ ../Common/ArchiveOpenCallback.h ../FileManager/ProgressDialog2.h \
+ BenchmarkDialog.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Control/Window2.h ../Common/Bench.h \
+ ../Common/../../Common/CreateCoder.h \
+ ../Common/../../Common/../../Common/MyString.h \
+ ../Common/../../Common/MethodId.h \
+ ../Common/../../Common/../../Common/Types.h ../FileManager/DialogSize.h \
+ BenchmarkDialogRes.h ../FileManager/RegistryUtils.h \
+ ../FileManager/ProgramLocation.h ../../../myWindows/myPrivate.h \
+ resource2.h
+UpdateCallbackGUI.o: UpdateCallbackGUI.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Error.h \
+ ../../../Common/MyString.h ../../../Windows/PropVariant.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/Types.h ../FileManager/PasswordDialog.h \
+ ../../../Windows/Control/Dialog.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/Control/Edit.h \
+ ../FileManager/PasswordDialogRes.h UpdateCallbackGUI.h \
+ ../Common/Update.h ../../../Common/Wildcard.h \
+ ../Common/ArchiveOpenCallback.h ../../../Common/MyCom.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../Common/../../IPassword.h \
+ ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/MyWindows.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyString.h ../Common/../../../Common/Buffer.h \
+ ../Common/../../../Common/Defs.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h ../Common/ArchiveOpenCallback.h \
+ ../FileManager/ProgressDialog2.h ../../../Windows/Synchronization.h \
+ ../../../Windows/../../C/Threads.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Synchronization2.h ../../../Windows/Thread.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h
+UpdateGUI.o: UpdateGUI.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h UpdateGUI.h ../Common/Update.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../Common/ArchiveOpenCallback.h ../../../Common/MyCom.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/MyWindows.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyString.h ../Common/../../../Common/Buffer.h \
+ ../Common/../../../Common/Defs.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h UpdateCallbackGUI.h \
+ ../Common/ArchiveOpenCallback.h ../FileManager/ProgressDialog2.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h \
+ ../../../Windows/Thread.h ../../../Windows/Control/Dialog.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/StringToInt.h \
+ ../../../Windows/Error.h ../../../Windows/FileDir.h ../Common/WorkDir.h \
+ ../Common/ZipRegistry.h ../Common/ExtractMode.h ../Explorer/MyMessages.h \
+ ../FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Windows/ResourceString.h ../FileManager/ProgramLocation.h \
+ ../FileManager/StringUtils.h ../FileManager/resourceGui.h \
+ CompressDialog.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Control/Window2.h ../../../Windows/Control/Edit.h \
+ ../Common/LoadCodecs.h ../Common/ZipRegistry.h \
+ ../FileManager/DialogSize.h CompressDialogRes.h resource2.h
+ArchiveCommandLine.o: ../Common/ArchiveCommandLine.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/ListFileUtils.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/StringToInt.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../myWindows/myPrivate.h \
+ ../Common/ArchiveCommandLine.h ../../../Common/CommandLineParser.h \
+ ../../../Common/Wildcard.h ../Common/Extract.h \
+ ../../../Windows/FileFind.h ../../../Windows/FileName.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/ArchiveExtractCallback.h \
+ ../../../Common/MyCom.h ../Common/../../IPassword.h \
+ ../Common/../../../Common/MyUnknown.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h ../../../Common/MyString.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../IProgress.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/../../IDecl.h \
+ ../Common/OpenArchive.h ../Common/ArchiveOpenCallback.h \
+ ../Common/LoadCodecs.h ../Common/../../../Common/Types.h \
+ ../Common/../../../Common/MyCom.h ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../../Common/Defs.h \
+ ../Common/../../ICoder.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/../Common/LoadCodecs.h ../Common/Update.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h ../Common/EnumDirItems.h \
+ ../Common/DirItem.h ../Common/SortUtils.h
+ArchiveExtractCallback.o: ../Common/ArchiveExtractCallback.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/ComTry.h ../../../Common/MyWindows.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/FileDir.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/FileFind.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/PropVariant.h \
+ ../../../Windows/../Common/Types.h \
+ ../../../Windows/PropVariantConversions.h ../../../Common/MyString.h \
+ ../Common/../../Common/FilePathAutoRename.h \
+ ../Common/../Common/ExtractingFilePath.h \
+ ../Common/ArchiveExtractCallback.h ../../../Common/MyCom.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/MyWindows.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../IProgress.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../IStream.h ../Common/../../Archive/../PropID.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/../../IDecl.h \
+ ../Common/OpenArchive.h ../Common/ArchiveOpenCallback.h \
+ ../Common/LoadCodecs.h ../Common/../../../Common/Types.h \
+ ../Common/../../../Common/MyCom.h ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../../Common/Defs.h \
+ ../Common/../../ICoder.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h
+ArchiveOpenCallback.o: ../Common/ArchiveOpenCallback.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Common/ComTry.h \
+ ../../../Windows/PropVariant.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/Types.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h ../../../Common/MyString.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../../Common/MyWindows.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/ArchiveOpenCallback.h \
+ ../../../Common/MyCom.h ../../../Windows/FileFind.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Defs.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/Types.h ../Common/../../IDecl.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h
+Bench.o: ../Common/Bench.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/Bench.h \
+ ../Common/../../Common/CreateCoder.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../../Common/MyWindows.h \
+ ../Common/../../Common/../../Common/MyString.h \
+ ../Common/../../Common/../../Common/MyVector.h \
+ ../Common/../../Common/../../Common/Defs.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/../../Common/MethodId.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../../../C/7zCrc.h ../Common/../../../../C/Types.h \
+ ../Common/../../../../C/Alloc.h \
+ ../Common/../../../Windows/Synchronization.h \
+ ../Common/../../../Windows/Defs.h \
+ ../Common/../../../Windows/../Common/MyWindows.h \
+ ../Common/../../../Windows/../../C/Threads.h \
+ ../Common/../../../Windows/../../C/Types.h \
+ ../Common/../../../Windows/Synchronization2.h \
+ ../Common/../../../Windows/Thread.h \
+ ../Common/../../../Windows/PropVariant.h \
+ ../Common/../../../Windows/../Common/Types.h
+DefaultName.o: ../Common/DefaultName.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/DefaultName.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+EnumDirItems.o: ../Common/EnumDirItems.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/EnumDirItems.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../Common/DirItem.h ../../../Common/MyString.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h
+Extract.o: ../Common/Extract.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/PropVariant.h ../../../Windows/../Common/Types.h \
+ ../../../Windows/PropVariantConversions.h ../../../Common/MyString.h \
+ ../Common/../Common/ExtractingFilePath.h ../Common/Extract.h \
+ ../../../Windows/FileFind.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/ArchiveExtractCallback.h \
+ ../../../Common/MyCom.h ../../../Common/MyWindows.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/Types.h ../Common/../../IDecl.h \
+ ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/ProgressUtils.h \
+ ../Common/../../Common/../ICoder.h ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../IProgress.h \
+ ../Common/../../Archive/Common/OutStreamWithCRC.h \
+ ../Common/../../Archive/Common/../../../../C/7zCrc.h \
+ ../Common/../../Archive/Common/../../../../C/Types.h \
+ ../Common/../../Archive/Common/../../../Common/MyCom.h \
+ ../Common/../../Archive/Common/../../IStream.h ../Common/ExtractMode.h \
+ ../Common/IFileExtractCallback.h ../Common/../../IDecl.h \
+ ../Common/OpenArchive.h ../Common/ArchiveOpenCallback.h \
+ ../Common/LoadCodecs.h ../Common/../../../Common/Types.h \
+ ../Common/../../../Common/MyCom.h ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../../Common/Defs.h \
+ ../Common/../../ICoder.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/../Common/LoadCodecs.h ../Common/SetProperties.h
+ExtractingFilePath.o: ../Common/ExtractingFilePath.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../Common/../../../../C/Types.h ../../../Common/Wildcard.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../Common/ExtractingFilePath.h \
+ ../../../Common/MyString.h
+LoadCodecs.o: ../Common/LoadCodecs.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyWindows.h \
+ ../Common/../../../Common/MyString.h \
+ ../Common/../../../Common/MyVector.h ../Common/../../../Common/Defs.h \
+ ../Common/../../../Common/Buffer.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/Types.h ../Common/../../IDecl.h \
+ ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h \
+ ../Common/../../../Windows/PropVariant.h \
+ ../Common/../../../Windows/../Common/MyWindows.h \
+ ../Common/../../../Windows/../Common/Types.h \
+ ../Common/../../Common/RegisterArc.h \
+ ../Common/../../Common/../Archive/IArchive.h \
+ ../Common/../../../Windows/FileFind.h \
+ ../Common/../../../Windows/FileName.h \
+ ../Common/../../../Windows/../../C/Types.h \
+ ../Common/../../../Windows/Defs.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h
+OpenArchive.o: ../Common/OpenArchive.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/Wildcard.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/PropVariant.h \
+ ../../../Windows/../Common/Types.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h ../../../Common/MyString.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../../Common/MyWindows.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/../../Common/StreamUtils.h \
+ ../Common/DefaultName.h ../Common/OpenArchive.h \
+ ../../../Windows/FileFind.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/ArchiveOpenCallback.h \
+ ../../../Common/MyCom.h ../Common/../../IPassword.h \
+ ../Common/../../../Common/MyUnknown.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyString.h ../Common/../../../Common/Buffer.h \
+ ../Common/../../../Common/Defs.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h
+PropIDUtils.o: ../Common/PropIDUtils.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/PropVariantConversions.h ../../../Common/MyString.h \
+ ../Common/../../PropID.h ../Common/PropIDUtils.h
+SetProperties.o: ../Common/SetProperties.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/SetProperties.h \
+ ../Common/Property.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/PropVariant.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/Types.h ../../../Common/StringToInt.h \
+ ../../../Common/MyCom.h ../../../Common/MyWindows.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h
+SortUtils.o: ../Common/SortUtils.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/SortUtils.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Common/Wildcard.h \
+ ../../../Common/MyString.h
+TempFiles.o: ../Common/TempFiles.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/TempFiles.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/FileIO.h
+Update.o: ../Common/Update.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/Update.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../Common/ArchiveOpenCallback.h ../../../Common/MyCom.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../Common/../../IPassword.h ../Common/../../../Common/MyUnknown.h \
+ ../Common/../../../Common/MyWindows.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/LoadCodecs.h \
+ ../Common/../../../Common/Types.h ../Common/../../../Common/MyCom.h \
+ ../Common/../../../Common/MyString.h ../Common/../../../Common/Buffer.h \
+ ../Common/../../../Common/Defs.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../../../Windows/DLL.h \
+ ../Common/../../../Windows/../Common/MyString.h ../Common/Property.h \
+ ../Common/UpdateAction.h ../Common/UpdateCallback.h \
+ ../Common/../Common/UpdatePair.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Windows/FileDir.h \
+ ../../../Windows/FileName.h ../../../Windows/PropVariant.h \
+ ../../../Windows/../Common/Types.h \
+ ../../../Windows/PropVariantConversions.h ../../../Windows/Time.h \
+ ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../IStream.h ../Common/../../Compress/CopyCoder.h \
+ ../Common/../../Compress/../../Common/MyCom.h \
+ ../Common/../../Compress/../ICoder.h ../Common/../Common/DirItem.h \
+ ../Common/../Common/EnumDirItems.h ../Common/../Common/OpenArchive.h \
+ ../Common/../Common/ArchiveOpenCallback.h \
+ ../Common/../Common/LoadCodecs.h ../Common/EnumDirItems.h \
+ ../Common/SetProperties.h ../Common/TempFiles.h
+UpdateAction.o: ../Common/UpdateAction.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/UpdateAction.h
+UpdateCallback.o: ../Common/UpdateCallback.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/ComTry.h ../../../Common/MyWindows.h \
+ ../../../Common/Defs.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/PropVariant.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/Types.h ../Common/../../Common/FileStreams.h \
+ ../Common/../../Common/../../Windows/FileIO.h ../../../Common/MyString.h \
+ ../Common/../../Common/../../Common/MyCom.h \
+ ../Common/../../Common/../../Common/MyWindows.h \
+ ../Common/../../Common/../IStream.h \
+ ../Common/../../Common/../../Common/MyUnknown.h \
+ ../Common/../../Common/../../Common/Types.h \
+ ../Common/../../Common/../IDecl.h ../Common/UpdateCallback.h \
+ ../../../Common/MyCom.h ../Common/../../IPassword.h \
+ ../Common/../../../Common/MyUnknown.h ../Common/../../../Common/Types.h \
+ ../Common/../../IDecl.h ../Common/../../ICoder.h \
+ ../Common/../../IStream.h ../Common/../Common/UpdatePair.h \
+ ../Common/../Common/DirItem.h \
+ ../Common/../Common/../../Archive/IArchive.h \
+ ../Common/../Common/../../Archive/../IProgress.h \
+ ../Common/../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../Common/../../Archive/../../Common/Types.h \
+ ../Common/../Common/../../Archive/../IDecl.h \
+ ../Common/../Common/../../Archive/../IStream.h \
+ ../Common/../Common/../../Archive/../PropID.h \
+ ../Common/../Common/UpdateAction.h ../Common/../Common/UpdateProduce.h \
+ ../Common/../Common/UpdatePair.h
+UpdatePair.o: ../Common/UpdatePair.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/Defs.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Time.h ../Common/SortUtils.h ../../../Common/MyString.h \
+ ../Common/UpdatePair.h ../Common/DirItem.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/UpdateAction.h
+UpdateProduce.o: ../Common/UpdateProduce.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Common/UpdateProduce.h \
+ ../Common/UpdatePair.h ../Common/DirItem.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../Common/../../Archive/IArchive.h \
+ ../Common/../../Archive/../IProgress.h \
+ ../Common/../../Archive/../../Common/MyUnknown.h \
+ ../Common/../../Archive/../../Common/MyWindows.h \
+ ../Common/../../Archive/../../Common/Types.h \
+ ../Common/../../Archive/../IDecl.h ../Common/../../Archive/../IStream.h \
+ ../Common/../../Archive/../PropID.h ../Common/UpdateAction.h
+WorkDir.o: ../Common/WorkDir.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/Wildcard.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../Common/WorkDir.h \
+ ../Common/ZipRegistry.h ../../../Common/MyString.h \
+ ../Common/ExtractMode.h
+ZipRegistry.o: ../Common/ZipRegistry.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/IntToString.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Windows/Registry.h \
+ ../../../Common/Buffer.h ../../../Common/MyString.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h \
+ ../Common/ZipRegistry.h ../Common/ExtractMode.h
+MyMessages.o: ../Explorer/MyMessages.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../Explorer/MyMessages.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Error.h \
+ ../../../Windows/ResourceString.h ../Explorer/../FileManager/LangUtils.h \
+ ../../../Common/Lang.h ../../../Common/MyString.h
+FormatUtils.o: ../../UI/FileManager/FormatUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../UI/FileManager/FormatUtils.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/IntToString.h ../../../Windows/ResourceString.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyString.h
+ProgramLocation.o: ../../UI/FileManager/ProgramLocation.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../UI/FileManager/ProgramLocation.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h
+ProgressDialog2.o: ../../UI/FileManager/ProgressDialog2.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/IntToString.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Control/Static.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Windows/Error.h \
+ ../../UI/FileManager/ProgressDialog2.h \
+ ../../../Windows/Synchronization.h ../../../Windows/Defs.h \
+ ../../../Windows/../../C/Threads.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Synchronization2.h ../../../Windows/Thread.h \
+ ../../../Windows/Control/Dialog.h ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../../UI/FileManager/DialogSize.h \
+ ../../UI/FileManager/ProgressDialog2Res.h \
+ ../../UI/FileManager/../GUI/ExtractRes.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Windows/ResourceString.h
+ProgressDialog2_rc.o: ../../UI/FileManager/ProgressDialog2_rc.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../UI/FileManager/ProgressDialog2Res.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h
+MessagesDialog.o: ../../UI/FileManager/MessagesDialog.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/IntToString.h ../../../Windows/ResourceString.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../UI/FileManager/MessagesDialog.h \
+ ../../../Windows/Control/Dialog.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/Control/ListView.h \
+ ../../UI/FileManager/MessagesDialogRes.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyString.h
+MessagesDialog_rc.o: ../../UI/FileManager/MessagesDialog_rc.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h \
+ ../../UI/FileManager/MessagesDialogRes.h
+OverwriteDialog.o: ../../UI/FileManager/OverwriteDialog.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/ResourceString.h ../../../Common/MyString.h \
+ ../../../Windows/Control/Static.h ../../../Windows/Window.h \
+ ../../../Windows/PropVariantConversions.h \
+ ../../UI/FileManager/FormatUtils.h \
+ ../../UI/FileManager/OverwriteDialog.h ../../../Windows/Control/Dialog.h \
+ ../../UI/FileManager/DialogSize.h \
+ ../../UI/FileManager/OverwriteDialogRes.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h
+OverwriteDialog_rc.o: ../../UI/FileManager/OverwriteDialog_rc.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../UI/FileManager/OverwriteDialogRes.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h
+PasswordDialog.o: ../../UI/FileManager/PasswordDialog.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../UI/FileManager/PasswordDialog.h ../../../Windows/Control/Dialog.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Control/Edit.h ../../UI/FileManager/PasswordDialogRes.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyString.h ../../../Windows/ResourceString.h
+PasswordDialog_rc.o: ../../UI/FileManager/PasswordDialog_rc.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ ../../../Windows/Control/DialogImpl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/Dialog.h \
+ ../../UI/FileManager/PasswordDialogRes.h
+ExtractCallback.o: ../../UI/FileManager/ExtractCallback.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Windows/Error.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/FileDir.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/FileFind.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h \
+ ../../UI/FileManager/../../Common/FilePathAutoRename.h \
+ ../../UI/FileManager/../GUI/ExtractRes.h \
+ ../../UI/FileManager/ExtractCallback.h ../../../Common/MyCom.h \
+ ../../../Common/MyWindows.h ../../../Windows/ResourceString.h \
+ ../../UI/FileManager/../Agent/IFolderArchive.h \
+ ../../UI/FileManager/../Agent/../../IDecl.h \
+ ../../UI/FileManager/../Agent/../../../Common/MyUnknown.h \
+ ../../UI/FileManager/../Agent/../../../Common/MyWindows.h \
+ ../../UI/FileManager/../Agent/../../Archive/IArchive.h \
+ ../../UI/FileManager/../Agent/../../Archive/../IProgress.h \
+ ../../UI/FileManager/../Agent/../../Archive/../../Common/MyUnknown.h \
+ ../../UI/FileManager/../Agent/../../Archive/../../Common/Types.h \
+ ../../UI/FileManager/../Agent/../../Archive/../IDecl.h \
+ ../../UI/FileManager/../Agent/../../Archive/../IStream.h \
+ ../../UI/FileManager/../Agent/../../Archive/../PropID.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/LoadCodecs.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Common/Types.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Common/MyCom.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Common/MyString.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Common/Buffer.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Common/Defs.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../ICoder.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../IStream.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Windows/DLL.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../../Windows/../Common/MyString.h \
+ ../../UI/FileManager/../Agent/../../UI/Common/../../Archive/IArchive.h \
+ ../../UI/FileManager/../Agent/../../UI/FileManager/IFolder.h \
+ ../../UI/FileManager/../Agent/../../UI/FileManager/../../IProgress.h \
+ ../../UI/FileManager/../Agent/../../UI/FileManager/../../IStream.h \
+ ../../UI/FileManager/../Agent/../Common/ExtractMode.h \
+ ../../UI/FileManager/../Agent/../Common/IFileExtractCallback.h \
+ ../../UI/FileManager/../Agent/../Common/../../IDecl.h \
+ ../../UI/FileManager/../Common/ArchiveOpenCallback.h \
+ ../../UI/FileManager/../Common/../../IPassword.h \
+ ../../UI/FileManager/../Common/../../../Common/MyUnknown.h \
+ ../../UI/FileManager/../Common/../../../Common/Types.h \
+ ../../UI/FileManager/../Common/../../IDecl.h \
+ ../../UI/FileManager/../Common/../../Archive/IArchive.h \
+ ../../UI/FileManager/../../IPassword.h ../../UI/FileManager/IFolder.h \
+ ../../UI/FileManager/ProgressDialog2.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h \
+ ../../../Windows/Thread.h ../../../Windows/Control/Dialog.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/Control/ListView.h \
+ ../../../Windows/Control/ProgressBar.h ../../UI/FileManager/LangUtils.h \
+ ../../../Common/Lang.h ../../../Common/MyString.h \
+ ../../UI/FileManager/FormatUtils.h \
+ ../../UI/FileManager/OverwriteDialog.h ../../UI/FileManager/DialogSize.h \
+ ../../UI/FileManager/OverwriteDialogRes.h \
+ ../../UI/FileManager/PasswordDialog.h ../../../Windows/Control/Edit.h \
+ ../../UI/FileManager/PasswordDialogRes.h
+SplitUtils.o: ../../UI/FileManager/SplitUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/StringToInt.h ../../UI/FileManager/SplitUtils.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/Control/Window2.h ../../UI/FileManager/StringUtils.h
+StringUtils.o: ../../UI/FileManager/StringUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../UI/FileManager/StringUtils.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h
+LangUtils.o: ../../UI/FileManager/LangUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../UI/FileManager/LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/MyString.h ../../../Windows/ResourceString.h \
+ ../../../Common/MyString.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/StringToInt.h \
+ ../../../Windows/Synchronization.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../../C/Threads.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Synchronization2.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/FileFind.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../UI/FileManager/RegistryUtils.h \
+ ../../UI/FileManager/ProgramLocation.h
+OutStreamWithCRC.o: ../../Archive/Common/OutStreamWithCRC.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../Archive/Common/OutStreamWithCRC.h \
+ ../../Archive/Common/../../../../C/7zCrc.h \
+ ../../Archive/Common/../../../../C/Types.h \
+ ../../Archive/Common/../../../Common/MyCom.h \
+ ../../Archive/Common/../../../Common/MyWindows.h \
+ ../../Archive/Common/../../IStream.h \
+ ../../Archive/Common/../../../Common/MyUnknown.h \
+ ../../Archive/Common/../../../Common/Types.h \
+ ../../Archive/Common/../../IDecl.h
+CreateCoder.o: ../../Common/CreateCoder.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../Common/../../Windows/Defs.h \
+ ../../Common/../../Windows/../Common/MyWindows.h \
+ ../../Common/../../Windows/PropVariant.h \
+ ../../Common/../../Windows/../Common/Types.h ../../Common/CreateCoder.h \
+ ../../Common/../../Common/MyCom.h ../../Common/../../Common/MyWindows.h \
+ ../../Common/../../Common/MyString.h \
+ ../../Common/../../Common/MyVector.h ../../Common/../../Common/Defs.h \
+ ../../Common/../ICoder.h ../../Common/../IStream.h \
+ ../../Common/../../Common/MyUnknown.h ../../Common/../../Common/Types.h \
+ ../../Common/../IDecl.h ../../Common/MethodId.h \
+ ../../Common/../../Common/Types.h ../../Common/FilterCoder.h \
+ ../../Common/../IPassword.h ../../Common/RegisterCodec.h \
+ ../../Common/../Common/MethodId.h
+FilePathAutoRename.o: ../../Common/FilePathAutoRename.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/Defs.h ../../../Common/IntToString.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../Common/FilePathAutoRename.h ../../../Common/MyString.h
+FileStreams.o: ../../Common/FileStreams.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../Common/FileStreams.h \
+ ../../Common/../../Windows/FileIO.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../Common/../../Common/MyCom.h ../../Common/../../Common/MyWindows.h \
+ ../../Common/../IStream.h ../../Common/../../Common/MyUnknown.h \
+ ../../Common/../../Common/Types.h ../../Common/../IDecl.h
+FilterCoder.o: ../../Common/FilterCoder.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../Common/../../../C/Alloc.h \
+ ../../Common/../../Common/Defs.h ../../Common/FilterCoder.h \
+ ../../Common/../../Common/MyCom.h ../../Common/../../Common/MyWindows.h \
+ ../../Common/../ICoder.h ../../Common/../IStream.h \
+ ../../Common/../../Common/MyUnknown.h ../../Common/../../Common/Types.h \
+ ../../Common/../IDecl.h ../../Common/../IPassword.h \
+ ../../Common/StreamUtils.h ../../Common/../IStream.h
+ProgressUtils.o: ../../Common/ProgressUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../Common/ProgressUtils.h ../../Common/../../Common/MyCom.h \
+ ../../Common/../../Common/MyWindows.h ../../Common/../ICoder.h \
+ ../../Common/../IStream.h ../../Common/../../Common/MyUnknown.h \
+ ../../Common/../../Common/Types.h ../../Common/../IDecl.h \
+ ../../Common/../IProgress.h
+StreamUtils.o: ../../Common/StreamUtils.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../Common/StreamUtils.h \
+ ../../Common/../IStream.h ../../Common/../../Common/MyUnknown.h \
+ ../../Common/../../Common/MyWindows.h ../../Common/../../Common/Types.h \
+ ../../Common/../IDecl.h
+CopyCoder.o: ../../Compress/CopyCoder.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../Compress/../../../C/Alloc.h \
+ ../../Compress/../Common/StreamUtils.h \
+ ../../Compress/../Common/../IStream.h \
+ ../../Compress/../Common/../../Common/MyUnknown.h \
+ ../../Compress/../Common/../../Common/MyWindows.h \
+ ../../Compress/../Common/../../Common/Types.h \
+ ../../Compress/../Common/../IDecl.h ../../Compress/CopyCoder.h \
+ ../../Compress/../../Common/MyCom.h \
+ ../../Compress/../../Common/MyWindows.h ../../Compress/../ICoder.h \
+ ../../Compress/../IStream.h
+CommandLineParser.o: ../../../Common/CommandLineParser.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/CommandLineParser.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h
+CRC.o: ../../../Common/CRC.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/../../C/7zCrc.h \
+ ../../../Common/../../C/Types.h
+IntToString.o: ../../../Common/IntToString.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/IntToString.h
+Lang.o: ../../../Common/Lang.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/Lang.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/MyString.h ../../../Common/TextConfig.h \
+ ../../../Common/../Windows/FileIO.h ../../../Common/MyString.h \
+ ../../../Common/UTFConvert.h
+ListFileUtils.o: ../../../Common/ListFileUtils.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/MyWindows.h ../../../Common/../Windows/FileIO.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Common/ListFileUtils.h \
+ ../../../Common/MyString.h ../../../Common/StringConvert.h \
+ ../../../Common/UTFConvert.h
+MyString.o: ../../../Common/MyString.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../myWindows/myPrivate.h
+MyVector.o: ../../../Common/MyVector.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+StringConvert.o: ../../../Common/StringConvert.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/StringConvert.h ../../../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+StringToInt.o: ../../../Common/StringToInt.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/StringToInt.h
+TextConfig.o: ../../../Common/TextConfig.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/TextConfig.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Common/MyString.h ../../../Common/UTFConvert.h
+UTFConvert.o: ../../../Common/UTFConvert.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/UTFConvert.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+Wildcard.o: ../../../Common/Wildcard.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/Wildcard.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+MyWindows.o: ../../../Common/MyWindows.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Common/MyWindows.h
+DLL.o: ../../../Windows/DLL.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/DLL.h \
+ ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/StringConvert.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/../Common/Types.h \
+ ../../../myWindows/myPrivate.h
+Error.o: ../../../Windows/Error.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/Error.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h
+FileDir.o: ../../../Windows/FileDir.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/FileDir.h \
+ ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/FileFind.h ../../../Windows/../Common/StringConvert.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/../Common/Types.h \
+ ../../../Windows/../Common/IntToString.h ../../../myWindows/myPrivate.h \
+ ../../../Windows/Synchronization.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h
+FileFind.o: ../../../Windows/FileFind.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/FileFind.h \
+ ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Windows/FileName.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/StringConvert.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/../Common/Types.h \
+ ../../../myWindows/myPrivate.h
+FileIO.o: ../../../Windows/FileIO.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/FileIO.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/StringConvert.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/MyString.h ../../../Windows/../Common/Types.h \
+ ../../../myWindows/myPrivate.h
+FileName.o: ../../../Windows/FileName.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/FileName.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/../Common/MyString.h \
+ ../../../Windows/../Common/MyVector.h ../../../Windows/../Common/Defs.h \
+ ../../../Common/Wildcard.h ../../../Common/MyString.h
+PropVariant.o: ../../../Windows/PropVariant.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Windows/PropVariant.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../Common/Types.h ../../../Windows/../Common/Defs.h
+PropVariantConversions.o: ../../../Windows/PropVariantConversions.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Common/IntToString.h ../../../Common/StringConvert.h \
+ ../../../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/PropVariantConversions.h ../../../Common/MyString.h
+Registry.o: ../../../Windows/Registry.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/Registry.h \
+ ../../../Common/Buffer.h ../../../Common/Defs.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ /usr/include/wx-2.8/wx/config.h /usr/include/wx-2.8/wx/confbase.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/string.h \
+ /usr/include/wx-2.8/wx/buffer.h /usr/include/wx-2.8/wx/strconv.h \
+ /usr/include/wx-2.8/wx/fontenc.h /usr/include/wx-2.8/wx/beforestd.h \
+ /usr/include/wx-2.8/wx/afterstd.h /usr/include/wx-2.8/wx/iosfwrap.h \
+ /usr/include/wx-2.8/wx/fileconf.h /usr/include/wx-2.8/wx/textfile.h \
+ /usr/include/wx-2.8/wx/textbuf.h /usr/include/wx-2.8/wx/arrstr.h \
+ /usr/include/wx-2.8/wx/convauto.h /usr/include/wx-2.8/wx/dynarray.h \
+ /usr/include/wx-2.8/wx/file.h /usr/include/wx-2.8/wx/filefn.h \
+ /usr/include/wx-2.8/wx/list.h /usr/include/wx-2.8/wx/object.h \
+ /usr/include/wx-2.8/wx/memory.h /usr/include/wx-2.8/wx/msgout.h
+Synchronization.o: ../../../Windows/Synchronization.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ ../../../Windows/Synchronization.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h \
+ ../../../Windows/../../C/Threads.h ../../../Windows/../../C/Types.h \
+ ../../../Windows/Synchronization2.h
+Time.o: ../../../Windows/Time.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h ../../../Windows/Time.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h
+System.o: ../../../Windows/System.cpp ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h
+Window.o: ../../../Windows/Window.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h
+Dialog.o: ../../../Windows/Control/Dialog.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
+ ../../../include_windows/tchar.h /usr/include/wx-2.8/wx/wxprec.h \
+ /usr/include/wx-2.8/wx/defs.h /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ /usr/include/wx-2.8/wx/filename.h ../../../Windows/Control/DialogImpl.h \
+ ../../../Windows/Window.h ../../../Windows/Defs.h \
+ ../../../Windows/../Common/MyWindows.h ../../../Common/MyString.h \
+ ../../../Common/MyVector.h ../../../Common/Defs.h \
+ ../../../Windows/Control/Dialog.h ../../../Windows/Synchronization.h \
+ ../../../Windows/Defs.h ../../../Windows/../../C/Threads.h \
+ ../../../Windows/../../C/Types.h ../../../Windows/Synchronization2.h
+Controls.o: ../../../Windows/Control/Controls.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/features.h \
+ /usr/include/wx-2.8/wx/version.h /usr/include/wx-2.8/wx/cpp.h \
+ /usr/include/wx-2.8/wx/dlimpexp.h /usr/include/wx-2.8/wx/debug.h \
+ /usr/include/wx-2.8/wx/wxchar.h /usr/include/wx-2.8/wx/wx.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/memory.h \
+ /usr/include/wx-2.8/wx/string.h /usr/include/wx-2.8/wx/buffer.h \
+ /usr/include/wx-2.8/wx/strconv.h /usr/include/wx-2.8/wx/fontenc.h \
+ /usr/include/wx-2.8/wx/beforestd.h /usr/include/wx-2.8/wx/afterstd.h \
+ /usr/include/wx-2.8/wx/iosfwrap.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/generic/logg.h \
+ /usr/include/wx-2.8/wx/event.h /usr/include/wx-2.8/wx/clntdata.h \
+ /usr/include/wx-2.8/wx/vector.h /usr/include/wx-2.8/wx/gdicmn.h \
+ /usr/include/wx-2.8/wx/math.h /usr/include/wx-2.8/wx/cursor.h \
+ /usr/include/wx-2.8/wx/gtk/cursor.h /usr/include/wx-2.8/wx/utils.h \
+ /usr/include/wx-2.8/wx/filefn.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/gtk/app.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/gtk/font.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/variant.h /usr/include/wx-2.8/wx/datetime.h \
+ /usr/include/wx-2.8/wx/gtk/colour.h /usr/include/wx-2.8/wx/region.h \
+ /usr/include/wx-2.8/wx/gtk/region.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h \
+ /usr/include/wx-2.8/wx/generic/paletteg.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/gtk/accel.h \
+ /usr/include/wx-2.8/wx/generic/accel.h \
+ /usr/include/wx-2.8/wx/gtk/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/gtk/toplevel.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/gtk/frame.h /usr/include/wx-2.8/wx/bitmap.h \
+ /usr/include/wx-2.8/wx/gtk/bitmap.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/gtk/brush.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/gtk/pen.h /usr/include/wx-2.8/wx/gtk/dc.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/gtk/dcclient.h /usr/include/wx-2.8/wx/dcmemory.h \
+ /usr/include/wx-2.8/wx/gtk/dcmemory.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/gtk/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/gtk/control.h /usr/include/wx-2.8/wx/gtk/button.h \
+ /usr/include/wx-2.8/wx/menuitem.h /usr/include/wx-2.8/wx/gtk/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/gtk/menu.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/generic/icon.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/gtk/dialog.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/gtk/timer.h /usr/include/wx-2.8/wx/settings.h \
+ /usr/include/wx-2.8/wx/msgdlg.h /usr/include/wx-2.8/wx/gtk/msgdlg.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/gtk/dataform.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj.h \
+ /usr/include/wx-2.8/wx/gtk/dataobj2.h /usr/include/wx-2.8/wx/ctrlsub.h \
+ /usr/include/wx-2.8/wx/bmpbuttn.h /usr/include/wx-2.8/wx/gtk/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/checkbox.h /usr/include/wx-2.8/wx/gtk/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/listbox.h \
+ /usr/include/wx-2.8/wx/gtk/checklst.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/gtk/choice.h /usr/include/wx-2.8/wx/scrolbar.h \
+ /usr/include/wx-2.8/wx/gtk/scrolbar.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gtk/stattext.h /usr/include/wx-2.8/wx/statbmp.h \
+ /usr/include/wx-2.8/wx/gtk/statbmp.h /usr/include/wx-2.8/wx/statbox.h \
+ /usr/include/wx-2.8/wx/gtk/statbox.h /usr/include/wx-2.8/wx/radiobox.h \
+ /usr/include/wx-2.8/wx/gtk/radiobox.h /usr/include/wx-2.8/wx/radiobut.h \
+ /usr/include/wx-2.8/wx/gtk/radiobut.h /usr/include/wx-2.8/wx/textctrl.h \
+ /usr/include/wx-2.8/wx/ioswrap.h /usr/include/wx-2.8/wx/gtk/textctrl.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/gtk/slider.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/gtk/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/gtk/scrolwin.h \
+ /usr/include/wx-2.8/wx/dirdlg.h /usr/include/wx-2.8/wx/gtk/dirdlg.h \
+ /usr/include/wx-2.8/wx/generic/dirdlgg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/tbarbase.h \
+ /usr/include/wx-2.8/wx/gtk/tbargtk.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/gtk/combobox.h /usr/include/wx-2.8/wx/layout.h \
+ /usr/include/wx-2.8/wx/sizer.h /usr/include/wx-2.8/wx/mdi.h \
+ /usr/include/wx-2.8/wx/gtk/mdi.h /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/gtk/filedlg.h \
+ /usr/include/wx-2.8/wx/generic/filedlgg.h \
+ /usr/include/wx-2.8/wx/listctrl.h /usr/include/wx-2.8/wx/listbase.h \
+ /usr/include/wx-2.8/wx/generic/listctrl.h \
+ /usr/include/wx-2.8/wx/imaglist.h \
+ /usr/include/wx-2.8/wx/generic/imaglist.h \
+ ../../../Windows/Control/Dialog.h ../../../Windows/Window.h \
+ ../../../Windows/Defs.h ../../../Windows/../Common/MyWindows.h \
+ ../../../Common/MyString.h ../../../Common/MyVector.h \
+ ../../../Common/Defs.h ../../../Windows/Control/ComboBox.h \
+ ../../../Windows/Control/Window2.h ../../../Windows/Control/Edit.h \
+ ../../../Windows/Control/ProgressBar.h \
+ ../../../Windows/Control/StatusBar.h ../../../Windows/Control/ListView.h
+wine_date_and_time.o: ../../../myWindows/wine_date_and_time.cpp \
+ ../../../myWindows/config.h ../../../include_windows/windows.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../include_windows/basetyps.h
+wine_GetXXXDefaultLangID.o: \
+ ../../../myWindows/wine_GetXXXDefaultLangID.cpp \
+ ../../../myWindows/StdAfx.h ../../../myWindows/config.h \
+ ../../../Common/MyWindows.h ../../../Common/MyGuidDef.h \
+ ../../../Common/Types.h ../../../Common/../../C/Types.h \
+ ../../../Common/Types.h ../../../include_windows/windows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.list
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.list?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.list (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/makefile.list Sun Dec 16 23:23:25 2012
@@ -0,0 +1,136 @@
+SRCS=\
+ CompressDialog.cpp \
+ CompressDialog_rc.cpp \
+ ExtractDialog.cpp \
+ ExtractDialog_rc.cpp \
+ BenchmarkDialog.cpp \
+ BenchmarkDialog_rc.cpp \
+ ExtractGUI.cpp \
+ GUI.cpp \
+ wxGUI.cpp \
+ UpdateCallbackGUI.cpp \
+ UpdateGUI.cpp \
+ ../Common/ArchiveCommandLine.cpp \
+ ../Common/ArchiveExtractCallback.cpp \
+ ../Common/ArchiveOpenCallback.cpp \
+ ../Common/Bench.cpp \
+ ../Common/DefaultName.cpp \
+ ../Common/EnumDirItems.cpp \
+ ../Common/Extract.cpp \
+ ../Common/ExtractingFilePath.cpp \
+ ../Common/LoadCodecs.cpp \
+ ../Common/OpenArchive.cpp \
+ ../Common/PropIDUtils.cpp \
+ ../Common/SetProperties.cpp \
+ ../Common/SortUtils.cpp \
+ ../Common/TempFiles.cpp \
+ ../Common/Update.cpp \
+ ../Common/UpdateAction.cpp \
+ ../Common/UpdateCallback.cpp \
+ ../Common/UpdatePair.cpp \
+ ../Common/UpdateProduce.cpp \
+ ../Common/WorkDir.cpp \
+ ../Common/ZipRegistry.cpp \
+ ../Explorer/MyMessages.cpp \
+ ../../UI/FileManager/FormatUtils.cpp \
+ ../../UI/FileManager/ProgramLocation.cpp \
+ ../../UI/FileManager/ProgressDialog2.cpp \
+ ../../UI/FileManager/ProgressDialog2_rc.cpp \
+ ../../UI/FileManager/MessagesDialog.cpp \
+ ../../UI/FileManager/MessagesDialog_rc.cpp \
+ ../../UI/FileManager/OverwriteDialog.cpp \
+ ../../UI/FileManager/OverwriteDialog_rc.cpp \
+ ../../UI/FileManager/PasswordDialog.cpp \
+ ../../UI/FileManager/PasswordDialog_rc.cpp \
+ ../../UI/FileManager/ExtractCallback.cpp \
+ ../../UI/FileManager/SplitUtils.cpp \
+ ../../UI/FileManager/StringUtils.cpp \
+ ../../UI/FileManager/LangUtils.cpp \
+ ../../Archive/Common/OutStreamWithCRC.cpp \
+ ../../Common/CreateCoder.cpp \
+ ../../Common/FilePathAutoRename.cpp \
+ ../../Common/FileStreams.cpp \
+ ../../Common/FilterCoder.cpp \
+ ../../Common/ProgressUtils.cpp \
+ ../../Common/StreamUtils.cpp \
+ ../../Compress/CopyCoder.cpp \
+ ../../../Common/CommandLineParser.cpp \
+ ../../../Common/CRC.cpp \
+ ../../../Common/IntToString.cpp \
+ ../../../Common/Lang.cpp \
+ ../../../Common/ListFileUtils.cpp \
+ ../../../Common/MyString.cpp \
+ ../../../Common/MyVector.cpp \
+ ../../../Common/StringConvert.cpp \
+ ../../../Common/StringToInt.cpp \
+ ../../../Common/TextConfig.cpp \
+ ../../../Common/UTFConvert.cpp \
+ ../../../Common/Wildcard.cpp \
+ ../../../Common/MyWindows.cpp \
+ ../../../Windows/DLL.cpp \
+ ../../../Windows/Error.cpp \
+ ../../../Windows/FileDir.cpp \
+ ../../../Windows/FileFind.cpp \
+ ../../../Windows/FileIO.cpp \
+ ../../../Windows/FileName.cpp \
+ ../../../Windows/PropVariant.cpp \
+ ../../../Windows/PropVariantConversions.cpp \
+ ../../../Windows/Registry.cpp \
+ ../../../Windows/Synchronization.cpp \
+ ../../../Windows/Time.cpp \
+ ../../../Windows/System.cpp \
+ ../../../Windows/Window.cpp \
+ ../../../Windows/Control/Dialog.cpp \
+ ../../../Windows/Control/Controls.cpp \
+ ../../../myWindows/wine_date_and_time.cpp \
+ ../../../myWindows/wine_GetXXXDefaultLangID.cpp
+
+
+SRCS_OUT=\
+ ../../UI/FileManager/HelpUtils.cpp \
+ ../../UI/FileManager/OpenCallback.cpp \
+ ../../UI/FileManager/RegistryUtils.cpp \
+ ../../../Common/NewHandler.cpp \
+ ../../../Windows/MemoryLock.cpp \
+ ../../../Windows/Registry.cpp \
+ ../../../Windows/ResourceString.cpp \
+ ../../../Windows/Shell.cpp
+
+SRCS_C=\
+ ../../../../C/7zCrc.c \
+ ../../../../C/7zCrcOpt.c \
+ ../../../../C/Alloc.c \
+ ../../../../C/Threads.c
+
+include ../../../../makefile.rules
+
+CompressDialog.o : CompressDialog.cpp
+ $(CXX) $(CXXFLAGS) CompressDialog.cpp
+CompressDialog_rc.o : CompressDialog_rc.cpp
+ $(CXX) $(CXXFLAGS) CompressDialog_rc.cpp
+ExtractDialog.o : ExtractDialog.cpp
+ $(CXX) $(CXXFLAGS) ExtractDialog.cpp
+ExtractDialog_rc.o : ExtractDialog_rc.cpp
+ $(CXX) $(CXXFLAGS) ExtractDialog_rc.cpp
+BenchmarkDialog.o : BenchmarkDialog.cpp
+ $(CXX) $(CXXFLAGS) BenchmarkDialog.cpp
+BenchmarkDialog_rc.o : BenchmarkDialog_rc.cpp
+ $(CXX) $(CXXFLAGS) BenchmarkDialog_rc.cpp
+ExtractGUI.o : ExtractGUI.cpp
+ $(CXX) $(CXXFLAGS) ExtractGUI.cpp
+GUI.o : GUI.cpp
+ $(CXX) $(CXXFLAGS) GUI.cpp
+wxGUI.o : wxGUI.cpp
+ $(CXX) $(CXXFLAGS) wxGUI.cpp
+UpdateCallbackGUI.o : UpdateCallbackGUI.cpp
+ $(CXX) $(CXXFLAGS) UpdateCallbackGUI.cpp
+UpdateGUI.o : UpdateGUI.cpp
+ $(CXX) $(CXXFLAGS) UpdateGUI.cpp
+
+LzmaBench.o : ../../Compress/LZMA_Alone/LzmaBench.cpp
+ $(CXX) $(CXXFLAGS) ../../Compress/LZMA_Alone/LzmaBench.cpp
+
+
+MyMessages.o : ../Explorer/MyMessages.cpp
+ $(CXX) $(CXXFLAGS) ../Explorer/MyMessages.cpp
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/resource2.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/resource2.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/resource2.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/resource2.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,3 @@
+#define IDS_COMPRESSED_COLON 2277
+#define IDS_ARCHIVES_COLON 2278
+#define IDS_PROGRESS_COMPRESSING 98
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/wxGUI.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/wxGUI.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/wxGUI.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/GUI/wxGUI.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,617 @@
+// wxGUI.cpp
+
+#include "StdAfx.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWidgets headers)
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#undef _WIN32
+
+#ifdef __WXMAC__
+
+#define UInt32 max_UInt32
+#include <ApplicationServices/ApplicationServices.h>
+#undef UInt32
+
+#endif
+
+#define static const
+#include "../GUI/p7zip_32.xpm"
+#undef static
+
+#undef ACTIVATE_DIALOG_TESTS
+
+#ifdef _WIN32
+#error 5
+#endif
+
+#include "Windows/Window.h"
+#include "Windows/Control/DialogImpl.h"
+
+
+// FIXME
+
+static pthread_t g_main_thread;
+
+bool is_main_thread(void)
+{
+ return ( g_main_thread == pthread_self() );
+}
+
+void verify_main_thread(void)
+{
+ if ( ! is_main_thread() )
+ {
+ printf("verify_main_thread-wxGUI\n");
+ abort();
+ }
+}
+
+
+
+
+
+
+
+
+
+int Main1(int argc,TCHAR **argv);
+
+#include "Windows/Registry.h"
+using namespace NWindows;
+using namespace NRegistry;
+
+
+#include "Common/StringConvert.h"
+#include "Windows/FileDir.h"
+#include "Windows/Synchronization.h"
+
+#include "ExtractRes.h"
+#include "../Explorer/MyMessages.h"
+
+#include "../FileManager/resourceGui.h"
+#include "ExtractGUI.h"
+#include "UpdateGUI.h"
+#include "BenchmarkDialog.h"
+#include "../FileManager/RegistryUtils.h"
+
+using namespace NWindows;
+using namespace NFile;
+
+#include "../FileManager/ProgramLocation.h"
+
+static LPCWSTR kHelpFileName = L"help/";
+
+void ShowHelpWindow(HWND hwnd, LPCWSTR topicFile)
+{
+ UString path;
+ if (!::GetProgramFolderPath(path))
+ return;
+ path += kHelpFileName;
+ path += topicFile;
+ printf("ShowHelpWindow(%p,%ls)=>%ls\n",hwnd,topicFile,(const wchar_t *)path);
+ // HtmlHelp(hwnd, GetSystemString(path), HH_DISPLAY_TOPIC, NULL);
+ wxString path2(path);
+ wxLaunchDefaultBrowser(path2);
+}
+
+////////////////////////////// TRIES ///////////////////////////////////
+
+#ifdef ACTIVATE_DIALOG_TESTS
+static void ErrorMessage(const wchar_t *message)
+{
+ MessageBox(0,message, wxT("7-Zip GUI"),wxICON_ERROR);
+}
+
+#include "../FileManager/PasswordDialog.h"
+#include "../FileManager/MessagesDialog.h"
+#include "../FileManager/OverwriteDialog.h"
+#include "Windows/Thread.h"
+
+void myErrorMsg(const wchar_t *message)
+{
+ MessageBox(0,message, wxT("Message"),wxICON_ERROR);
+}
+
+void testCMessagesDialog()
+{
+ UStringVector Messages;
+
+ Messages.Add(L"message 1");
+ Messages.Add(L"message 2");
+ Messages.Add(L"message 3");
+ Messages.Add(L"message 4");
+ Messages.Add(L"message 5");
+ Messages.Add(L"message 6");
+ Messages.Add(L"message 7");
+ Messages.Add(L"message 8");
+ Messages.Add(L"message 9");
+
+ CMessagesDialog messagesDialog;
+ messagesDialog.Messages = &Messages;
+ int ret = messagesDialog.Create( 0 ); // ParentWindow
+
+ if (ret == IDOK) myErrorMsg(wxT("CMessagesDialog => IDOK"));
+ else if (ret == IDCANCEL) myErrorMsg(wxT("CMessagesDialog => IDCANCEL"));
+ else myErrorMsg(wxT("CMessagesDialog => ?"));
+
+}
+
+void testCOverwriteDialog()
+{
+SYSTEMTIME systemTime;
+GetSystemTime( &systemTime );
+
+
+const wchar_t *existName = L"existName";
+FILETIME data_existTime;
+FILETIME *existTime = &data_existTime ;
+UInt64 data_existSize = 1234;
+UInt64 *existSize = &data_existSize;
+const wchar_t *newName = L"newName";
+FILETIME data_newTime;
+FILETIME *newTime = &data_newTime;
+UInt64 data_newSize = 45678;
+UInt64 *newSize = &data_newSize;
+Int32 data_answer=0;
+Int32 *answer = &data_answer;
+
+SystemTimeToFileTime( &systemTime , &data_existTime);
+SystemTimeToFileTime( &systemTime , &data_newTime);
+
+ COverwriteDialog dialog;
+
+ dialog.OldFileInfo.Time = *existTime;
+ dialog.OldFileInfo.TimeIsDefined = true; // FIXME : look again at the sample !
+
+ dialog.OldFileInfo.SizeIsDefined = (existSize != NULL);
+ if (dialog.OldFileInfo.SizeIsDefined)
+ dialog.OldFileInfo.Size = *existSize;
+ dialog.OldFileInfo.Name = existName;
+
+ if (newTime == 0)
+ dialog.NewFileInfo.TimeIsDefined = false;
+ else
+ {
+ dialog.NewFileInfo.TimeIsDefined = true;
+ dialog.NewFileInfo.Time = *newTime;
+ }
+
+ dialog.NewFileInfo.SizeIsDefined = (newSize != NULL);
+ if (dialog.NewFileInfo.SizeIsDefined)
+ dialog.NewFileInfo.Size = *newSize;
+ dialog.NewFileInfo.Name = newName;
+
+ /*
+ NOverwriteDialog::NResult::EEnum writeAnswer =
+ NOverwriteDialog::Execute(oldFileInfo, newFileInfo);
+ */
+ INT_PTR writeAnswer = dialog.Create(NULL); // ParentWindow doesn't work with 7z
+
+ switch(writeAnswer)
+ {
+ case IDCANCEL: myErrorMsg(wxT("COverwriteDialog => IDCANCEL")); break;
+ case IDNO: myErrorMsg(wxT("COverwriteDialog => IDNO")); break;
+ case IDC_BUTTON_OVERWRITE_NO_TO_ALL: myErrorMsg(wxT("COverwriteDialog => IDC_BUTTON_OVERWRITE_NO_TO_ALL")); break;
+ case IDC_BUTTON_OVERWRITE_YES_TO_ALL:myErrorMsg(wxT("COverwriteDialog => IDC_BUTTON_OVERWRITE_YES_TO_ALL")); break;
+ case IDC_BUTTON_OVERWRITE_AUTO_RENAME:myErrorMsg(wxT("COverwriteDialog => IDC_BUTTON_OVERWRITE_AUTO_RENAME")); break;
+ case IDYES: myErrorMsg(wxT("COverwriteDialog => IDYES")); break;
+ default: myErrorMsg(wxT("COverwriteDialog => default")); break;
+ }
+}
+
+void testCPasswordDialog()
+{
+ CPasswordDialog dialog;
+
+ int ret = dialog.Create(0);
+ if (ret == IDOK) {
+ UString Password = dialog.Password;
+ UString msg = wxT("CPasswordDialog => IDOK password=\"");
+ msg += Password;
+ msg += wxT("\"");
+ myErrorMsg(msg);
+ }
+ else if (ret == IDCANCEL) myErrorMsg(wxT("CPasswordDialog => IDCANCEL"));
+ else myErrorMsg(wxT("CPasswordDialog => ?"));
+
+}
+
+struct CThreadProgressDialog
+{
+ CProgressDialog * ProgressDialog;
+ static THREAD_FUNC_DECL MyThreadFunction(void *param)
+ {
+ ((CThreadProgressDialog *)param)->Result = ((CThreadProgressDialog *)param)->Process();
+ return 0;
+ }
+ HRESULT Result;
+ HRESULT Process()
+ {
+ Sleep(1000);
+ int total = 1000;
+
+ ProgressDialog->ProgressSynch.SetTitleFileName(L"SetTitleFileName");
+ ProgressDialog->ProgressSynch.SetNumFilesTotal(100);
+ ProgressDialog->ProgressSynch.SetNumFilesCur(1);
+ ProgressDialog->ProgressSynch.SetProgress(total, 0);
+ // ProgressDialog.ProgressSynch.SetRatioInfo(inSize, outSize);
+ // ProgressDialog.ProgressSynch.SetCurrentFileName(name);
+
+ ProgressDialog->ProgressSynch.SetPos(total/10);
+ ProgressDialog->ProgressSynch.SetCurrentFileName(L"File1");
+ Sleep(1000);
+ ProgressDialog->ProgressSynch.SetPos(total/2);
+ ProgressDialog->ProgressSynch.SetCurrentFileName(L"File2");
+ Sleep(1000);
+ ProgressDialog->ProgressSynch.SetPos(total);
+ ProgressDialog->ProgressSynch.SetCurrentFileName(L"File3");
+ Sleep(1000);
+ ProgressDialog->MyClose();
+ return 0;
+ }
+};
+
+void testCProgressDialog()
+{
+ CProgressDialog ProgressDialog;
+
+ CThreadProgressDialog benchmarker;
+ benchmarker.ProgressDialog = &ProgressDialog;
+ NWindows::CThread thread;
+ thread.Create(CThreadProgressDialog::MyThreadFunction, &benchmarker);
+
+ // void StartProgressDialog(const UString &title)
+ int ret = ProgressDialog.Create(L"testCProgressDialog", 0);
+
+ if (ret == IDOK) myErrorMsg(wxT("CProgressDialog => IDOK"));
+ else if (ret == IDCANCEL) myErrorMsg(wxT("CProgressDialog => IDCANCEL"));
+ else myErrorMsg(wxT("CProgressDialog => ?"));
+
+}
+
+void testDialog(int num)
+{
+ NWindows::NControl::CModalDialog dialog;
+
+ printf("Generic Dialog(%d)\n",num);
+ int ret = dialog.Create(num, 0);
+ if (ret == IDOK) myErrorMsg(wxT("Generic Dialog => IDOK"));
+ else if (ret == IDCANCEL) myErrorMsg(wxT("Generic Dialog => IDCANCEL"));
+ else myErrorMsg(wxT("Generic Dialog => ?"));
+}
+
+void testMessageBox()
+{
+ int ret = MessageBoxW(0, L"test yes/no/cancel",
+ L"7-Zip", MB_YESNOCANCEL | MB_ICONQUESTION | MB_TASKMODAL);
+ if (ret == IDYES) myErrorMsg(wxT("MessageBoxW => IDYES"));
+ else if (ret == IDNO) myErrorMsg(wxT("MessageBoxW => IDNO"));
+ else if (ret == IDCANCEL) myErrorMsg(wxT("MessageBoxW => IDCANCEL"));
+ else myErrorMsg(wxT("MessageBoxW => ?"));
+}
+
+static void testRegistry()
+{
+ SaveRegLang(L"fr");
+
+ UString langFile;
+ ReadRegLang(langFile);
+
+ printf("testRegistry : -%ls-\n",(const wchar_t *)langFile);
+}
+
+
+int Main2(int argc,TCHAR **argv);
+
+int Main3(int argc,wxChar **argv)
+{
+ testRegistry();
+
+ int num = -1;
+
+ if (argc >=2 )
+ {
+ num = argv[1][0] - L'0';
+ }
+ printf("num=%d\n",num);
+
+
+ switch(num)
+ {
+ case 0:
+ {
+ TCHAR **argv2 = (TCHAR **)calloc(argc,sizeof(*argv));
+
+ argv2[0] = argv[0];
+ for(int i = 2; i < argc; i++) argv2[i-1] = argv[i];
+
+ return Main2(argc-1,argv2);
+ }
+ // TODO Benchmark
+ // TODO CCompressDialog
+ // TODO CExtractDialog ?
+ case 1 : testCMessagesDialog(); break;
+ case 2 : testCOverwriteDialog(); break;
+ case 3 : testCPasswordDialog(); break;
+ case 4 : testCProgressDialog(); break;
+ case 5 : testMessageBox(); break;
+ case 9 :
+ if (argc >= 3)
+ {
+ AString str = GetAnsiString(argv[2]);
+ int num = atoi((const char*)str);
+ testDialog(num);
+ }
+ else
+ {
+ printf("usage : 7zG 9 <windowID>\n");
+ }
+ break;
+ default :
+ printf("usage : 7zG number\n");
+
+ };
+
+ return 0;
+}
+
+#endif // ACTIVATE_DIALOG_TESTS
+
+static const TCHAR *kCUBasePath = TEXT("Software/7-ZIP");
+static const WCHAR *kLangValueName = L"Lang";
+
+void SaveRegLang(const UString &langFile)
+{
+ CKey key;
+ key.Create(HKEY_CURRENT_USER, kCUBasePath);
+ key.SetValue(kLangValueName, langFile);
+}
+
+void ReadRegLang(UString &langFile)
+{
+ langFile.Empty();
+ CKey key;
+ if (key.Open(HKEY_CURRENT_USER, kCUBasePath, KEY_READ) == ERROR_SUCCESS)
+ key.QueryValue(kLangValueName, langFile);
+}
+
+
+//////////////////////////////////
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h" // global_use_utf16_conversion
+
+void mySplitCommandLineW(int numArguments, TCHAR **arguments,UStringVector &parts) {
+
+ parts.Clear();
+ for(int ind=0;ind < numArguments; ind++) {
+ UString tmp = arguments[ind];
+ // tmp.Trim(); " " is a valid filename ...
+ if (!tmp.IsEmpty()) {
+ parts.Add(tmp);
+// DEBUG printf("ARG %d : '%ls'\n",ind,(const wchar_t *)tmp);
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+// private classes
+// ----------------------------------------------------------------------------
+
+// Define a new frame type
+class MyFrame: public wxFrame
+{
+public:
+ // ctor
+ MyFrame(wxFrame *frame, const wxString& title, int x, int y, int w, int h);
+ // virtual ~MyFrame();
+
+ // operations
+ void WriteText(const wxString& text) { m_txtctrl->WriteText(text); }
+
+protected:
+ // callbacks
+ void OnWorkerEvent(wxCommandEvent& event);
+private:
+ // just some place to put our messages in
+ wxTextCtrl *m_txtctrl;
+ DECLARE_EVENT_TABLE()
+};
+
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_MENU(WORKER_EVENT, MyFrame::OnWorkerEvent)
+ // EVT_IDLE(MyFrame::OnIdle)
+END_EVENT_TABLE()
+
+// My frame constructor
+MyFrame::MyFrame(wxFrame *frame, const wxString& title,
+ int x, int y, int w, int h)
+ : wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
+{
+ this->SetIcon(wxICON(p7zip_32));
+
+#if wxUSE_STATUSBAR
+ CreateStatusBar(2);
+#endif // wxUSE_STATUSBAR
+
+ m_txtctrl = new wxTextCtrl(this, wxID_ANY, _T(""), wxPoint(0, 0), wxSize(0, 0), wxTE_MULTILINE | wxTE_READONLY);
+}
+
+void myCreateHandle(int n);
+wxWindow * g_window=0;
+
+void MyFrame::OnWorkerEvent(wxCommandEvent& event)
+{
+ int n = event.GetInt();
+ myCreateHandle(n);
+}
+
+
+// Define a new application type, each program should derive a class from wxApp
+class MyApp : public wxApp
+{
+public:
+ // override base class virtuals
+ // ----------------------------
+
+ // this one is called on application startup and is a good place for the app
+ // initialization (doing it here and not in the ctor allows to have an error
+ // return: if OnInit() returns false, the application terminates)
+ virtual bool OnInit();
+};
+
+// Create a new application object: this macro will allow wxWidgets to create
+// the application object during program execution (it's better than using a
+// static object for many reasons) and also implements the accessor function
+// wxGetApp() which will return the reference of the right type (i.e. MyApp and
+// not wxApp)
+IMPLEMENT_APP(MyApp)
+
+
+
+time_t g_T0 = 0;
+
+/* FIXME : to erase ?
+class MyThread : public wxThread
+{
+ int _argc;
+ TCHAR **_argv;
+public:
+ MyThread(int argc,TCHAR **argv): wxThread(),_argc(argc), _argv(argv) {}
+
+ // thread execution starts here
+ virtual void *Entry()
+ {
+#ifdef ACTIVATE_DIALOG_TESTS
+ int ret = Main3(_argc,_argv);
+#else
+ int ret = Main1(_argc,_argv);
+#endif
+ exit(ret);
+ }
+};
+*/
+
+// 'Main program' equivalent: the program execution "starts" here
+bool MyApp::OnInit()
+{
+ // don't parse the command-line options !
+ // : if ( !wxApp::OnInit() ) return false;
+
+#ifdef __WXMAC__
+ProcessSerialNumber PSN;
+GetCurrentProcess(&PSN);
+TransformProcessType(&PSN,kProcessTransformToForegroundApplication);
+#endif
+
+
+ g_main_thread = pthread_self();
+
+ { // define P7ZIP_HOME_DIR
+ extern void my_windows_split_path(const AString &p_path, AString &dir , AString &base);
+ static char p7zip_home_dir[MAX_PATH];
+
+ UString fullPath;
+ NDirectory::MyGetFullPathName(wxApp::argv[0], fullPath);
+ AString afullPath = GetAnsiString(fullPath);
+
+ AString dir,name;
+
+ my_windows_split_path(afullPath,dir,name);
+
+ const char *dir2 = nameWindowToUnix((const char *)dir);
+ snprintf(p7zip_home_dir,sizeof(p7zip_home_dir),"P7ZIP_HOME_DIR=%s/",dir2);
+ p7zip_home_dir[sizeof(p7zip_home_dir)-1] = 0;
+ putenv(p7zip_home_dir);
+ // DEBUG printf("putenv(%s)\n",p7zip_home_dir);
+ }
+ global_use_utf16_conversion = 1; // UNICODE !
+
+ g_T0 = time(0);
+ // DEBUG printf("MAIN Thread : 0x%lx\n",wxThread::GetCurrentId());
+
+ // Create the main frame window
+ MyFrame *frame = new MyFrame((wxFrame *)NULL, _T("7-zip Main Window"), 50, 50, 450, 340);
+ // Don't Show the frame !
+ // frame->Show(true);
+
+ g_window = frame;
+
+ SetTopWindow(frame);
+
+/* FIXME ?
+ MyThread *thread = new MyThread(wxApp::argc,wxApp::argv);
+ thread->Create(); // != wxTHREAD_NO_ERROR
+ thread->Run();
+
+ // success: wxApp::OnRun() will be called which will enter the main message
+ // loop and the application will run. If we returned false here, the
+ // application would exit immediately.
+ return true;
+*/
+
+ int ret = Main1(wxApp::argc,wxApp::argv);
+
+ exit(ret);
+
+ return false;
+}
+
+DWORD WINAPI GetTickCount(VOID) {
+ static wxStopWatch sw;
+ return sw.Time();
+}
+
+//////////////////////////////////////////
+
+#include "resource2.h"
+#include "ExtractRes.h"
+
+static CStringTable g_stringTable[] =
+{
+ /* resource.rc */
+ /***************/
+
+ { IDS_PROGRESS_COMPRESSING, L"Compressing" },
+ { IDS_PROGRESS_TESTING, L"Testing" },
+ { IDS_MESSAGE_NO_ERRORS, L"There are no errors" },
+ { IDS_FILES_COLON, L"Files:" },
+ { IDS_FOLDERS_COLON, L"Folders:" },
+ { IDS_SIZE_COLON, L"Size:" },
+ { IDS_COMPRESSED_COLON, L"Compressed size:" },
+ { IDS_ARCHIVES_COLON, L"Archives:" },
+
+ /* Extract.rc */
+ /**************/
+ { IDS_CANNOT_CREATE_FOLDER , L"Cannot create folder '{0}'"},
+ { IDS_OPEN_IS_NOT_SUPORTED_ARCHIVE, L"File is not supported archive."},
+
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_CRC , L"CRC failed in '{0}'. File is broken."},
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_DATA_ERROR , L"Data error in '{0}'. File is broken"},
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_UNSUPPORTED_METHOD , L"Unsupported compression method for '{0}'."},
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_CRC_ENCRYPTED , L"CRC failed in encrypted file '{0}'. Wrong password?"},
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_DATA_ERROR_ENCRYPTED , L"Data error in encrypted file '{0}'. Wrong password?"},
+
+ { IDS_EXTRACT_SET_FOLDER , L"Specify a location for extracted files."},
+ { IDS_MESSAGES_DIALOG_EXTRACT_MESSAGE_CANNOT_OPEN_FILE, L"Can not open output file '{0}'."},
+ { IDS_PROGRESS_EXTRACTING, L"Extracting" },
+
+ { IDS_CANT_OPEN_ARCHIVE , L"Can not open file '{0}' as archive"},
+ { IDS_CANT_OPEN_ENCRYPTED_ARCHIVE , L"Can not open encrypted archive '{0}'. Wrong password?"},
+
+ { 0 , 0 }
+};
+
+REGISTER_STRINGTABLE(g_stringTable)
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileDir.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileDir.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileDir.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileDir.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileFind.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileFind.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileFind.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/FileFind.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/IntToString.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/IntToString.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/IntToString.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/IntToString.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyString.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyString.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyString.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyString.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyVector.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyVector.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyVector.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/MyVector.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/StringConvert.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/StringConvert.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/StringConvert.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/StringConvert.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/Threads.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/Threads.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/Threads.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/Threads.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile Sun Dec 16 23:23:25 2012
@@ -0,0 +1,27 @@
+PROG=../../../../bin/p7zip$(BINSUFFIX)
+
+LOCAL_FLAGS=\
+ -DUNICODE -D_UNICODE \
+ -I. \
+ `wx-config --unicode=yes --cxxflags`
+
+include ../../../../makefile.crc32
+include ../../../../makefile.machine
+
+PCH_NAME=$(PRE_COMPILED_HEADER)
+
+LIBS=`wx-config --unicode=yes --libs` $(LOCAL_LIBS_DLL)
+
+OBJS=\
+ FileDir.o \
+ FileFind.o \
+ MyString.o \
+ MyVector.o \
+ IntToString.o \
+StringConvert.o \
+wine_date_and_time.o \
+Threads.o \
+ wxP7ZIP.o
+
+include ../../../../makefile.glb
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.depend
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.depend?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.depend (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.depend Sun Dec 16 23:23:25 2012
@@ -0,0 +1,180 @@
+wxP7ZIP.o: wxP7ZIP.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+ ../../../Common/../../C/Types.h ../../../Common/Types.h \
+ ../../../include_windows/windows.h ../../../Common/MyWindows.h \
+ ../../../include_windows/basetyps.h ../../../include_windows/tchar.h \
+ /usr/include/wx-2.8/wx/wxprec.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/platform.h \
+ /usr/lib/wx/include/mac-unicode-debug-2.8/wx/setup.h \
+ /usr/include/wx-2.8/wx/chkconf.h /usr/include/wx-2.8/wx/mac/chkconf.h \
+ /usr/include/wx-2.8/wx/mac/carbon/chkconf.h \
+ /usr/include/wx-2.8/wx/features.h /usr/include/wx-2.8/wx/version.h \
+ /usr/include/wx-2.8/wx/cpp.h /usr/include/wx-2.8/wx/dlimpexp.h \
+ /usr/include/wx-2.8/wx/debug.h /usr/include/wx-2.8/wx/wxchar.h \
+ /usr/include/wx-2.8/wx/wx.h /usr/include/wx-2.8/wx/object.h \
+ /usr/include/wx-2.8/wx/memory.h /usr/include/wx-2.8/wx/string.h \
+ /usr/include/wx-2.8/wx/buffer.h /usr/include/wx-2.8/wx/strconv.h \
+ /usr/include/wx-2.8/wx/fontenc.h /usr/include/wx-2.8/wx/msgout.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/list.h \
+ /usr/include/wx-2.8/wx/hash.h /usr/include/wx-2.8/wx/hashmap.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/intl.h \
+ /usr/include/wx-2.8/wx/log.h /usr/include/wx-2.8/wx/iosfwrap.h \
+ /usr/include/wx-2.8/wx/generic/logg.h /usr/include/wx-2.8/wx/event.h \
+ /usr/include/wx-2.8/wx/clntdata.h /usr/include/wx-2.8/wx/vector.h \
+ /usr/include/wx-2.8/wx/gdicmn.h /usr/include/wx-2.8/wx/math.h \
+ /usr/include/wx-2.8/wx/cursor.h /usr/include/wx-2.8/wx/mac/cursor.h \
+ /usr/include/wx-2.8/wx/mac/carbon/cursor.h \
+ /usr/include/wx-2.8/wx/bitmap.h /usr/include/wx-2.8/wx/colour.h \
+ /usr/include/wx-2.8/wx/gdiobj.h /usr/include/wx-2.8/wx/variant.h \
+ /usr/include/wx-2.8/wx/datetime.h /usr/include/wx-2.8/wx/longlong.h \
+ /usr/include/wx-2.8/wx/mac/colour.h \
+ /usr/include/wx-2.8/wx/mac/carbon/colour.h \
+ /usr/include/wx-2.8/wx/object.h /usr/include/wx-2.8/wx/string.h \
+ /usr/include/wx-2.8/wx/mac/bitmap.h \
+ /usr/include/wx-2.8/wx/mac/carbon/bitmap.h \
+ /usr/include/wx-2.8/wx/palette.h /usr/include/wx-2.8/wx/mac/palette.h \
+ /usr/include/wx-2.8/wx/mac/carbon/palette.h \
+ /usr/include/wx-2.8/wx/colour.h /usr/include/wx-2.8/wx/gdiobj.h \
+ /usr/include/wx-2.8/wx/utils.h /usr/include/wx-2.8/wx/filefn.h \
+ /usr/include/wx-2.8/wx/platinfo.h /usr/include/wx-2.8/wx/thread.h \
+ /usr/include/wx-2.8/wx/app.h /usr/include/wx-2.8/wx/build.h \
+ /usr/include/wx-2.8/wx/init.h /usr/include/wx-2.8/wx/mac/app.h \
+ /usr/include/wx-2.8/wx/mac/carbon/app.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/gdicmn.h /usr/include/wx-2.8/wx/event.h \
+ /usr/include/wx-2.8/wx/stream.h /usr/include/wx-2.8/wx/stopwatch.h \
+ /usr/include/wx-2.8/wx/module.h /usr/include/wx-2.8/wx/window.h \
+ /usr/include/wx-2.8/wx/font.h /usr/include/wx-2.8/wx/mac/font.h \
+ /usr/include/wx-2.8/wx/mac/carbon/font.h \
+ /usr/include/wx-2.8/wx/region.h /usr/include/wx-2.8/wx/mac/region.h \
+ /usr/include/wx-2.8/wx/mac/carbon/region.h \
+ /usr/include/wx-2.8/wx/list.h /usr/include/wx-2.8/wx/validate.h \
+ /usr/include/wx-2.8/wx/palette.h /usr/include/wx-2.8/wx/accel.h \
+ /usr/include/wx-2.8/wx/mac/accel.h \
+ /usr/include/wx-2.8/wx/mac/carbon/accel.h \
+ /usr/include/wx-2.8/wx/mac/window.h \
+ /usr/include/wx-2.8/wx/mac/carbon/window.h \
+ /usr/include/wx-2.8/wx/brush.h /usr/include/wx-2.8/wx/mac/brush.h \
+ /usr/include/wx-2.8/wx/mac/carbon/brush.h /usr/include/wx-2.8/wx/dc.h \
+ /usr/include/wx-2.8/wx/bitmap.h /usr/include/wx-2.8/wx/brush.h \
+ /usr/include/wx-2.8/wx/pen.h /usr/include/wx-2.8/wx/mac/pen.h \
+ /usr/include/wx-2.8/wx/mac/carbon/pen.h /usr/include/wx-2.8/wx/mac/dc.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dc.h /usr/include/wx-2.8/wx/pen.h \
+ /usr/include/wx-2.8/wx/icon.h /usr/include/wx-2.8/wx/iconloc.h \
+ /usr/include/wx-2.8/wx/mac/icon.h \
+ /usr/include/wx-2.8/wx/mac/carbon/icon.h /usr/include/wx-2.8/wx/font.h \
+ /usr/include/wx-2.8/wx/dcgraph.h /usr/include/wx-2.8/wx/geometry.h \
+ /usr/include/wx-2.8/wx/graphics.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/generic/panelg.h \
+ /usr/include/wx-2.8/wx/window.h /usr/include/wx-2.8/wx/containr.h \
+ /usr/include/wx-2.8/wx/toplevel.h /usr/include/wx-2.8/wx/iconbndl.h \
+ /usr/include/wx-2.8/wx/mac/toplevel.h \
+ /usr/include/wx-2.8/wx/mac/carbon/toplevel.h \
+ /usr/include/wx-2.8/wx/frame.h /usr/include/wx-2.8/wx/mac/frame.h \
+ /usr/include/wx-2.8/wx/mac/carbon/frame.h \
+ /usr/include/wx-2.8/wx/window.h /usr/include/wx-2.8/wx/toolbar.h \
+ /usr/include/wx-2.8/wx/tbarbase.h /usr/include/wx-2.8/wx/control.h \
+ /usr/include/wx-2.8/wx/mac/control.h \
+ /usr/include/wx-2.8/wx/mac/carbon/control.h \
+ /usr/include/wx-2.8/wx/mac/toolbar.h \
+ /usr/include/wx-2.8/wx/mac/carbon/toolbar.h \
+ /usr/include/wx-2.8/wx/tbarbase.h /usr/include/wx-2.8/wx/dynarray.h \
+ /usr/include/wx-2.8/wx/accel.h /usr/include/wx-2.8/wx/image.h \
+ /usr/include/wx-2.8/wx/imagbmp.h /usr/include/wx-2.8/wx/imagpng.h \
+ /usr/include/wx-2.8/wx/imaggif.h /usr/include/wx-2.8/wx/imagpcx.h \
+ /usr/include/wx-2.8/wx/imagjpeg.h /usr/include/wx-2.8/wx/imagtga.h \
+ /usr/include/wx-2.8/wx/imagtiff.h /usr/include/wx-2.8/wx/imagpnm.h \
+ /usr/include/wx-2.8/wx/imagxpm.h /usr/include/wx-2.8/wx/imagiff.h \
+ /usr/include/wx-2.8/wx/dc.h /usr/include/wx-2.8/wx/dcclient.h \
+ /usr/include/wx-2.8/wx/mac/dcclient.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dcclient.h \
+ /usr/include/wx-2.8/wx/dcmemory.h /usr/include/wx-2.8/wx/mac/dcmemory.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dcmemory.h \
+ /usr/include/wx-2.8/wx/dcclient.h /usr/include/wx-2.8/wx/dcprint.h \
+ /usr/include/wx-2.8/wx/mac/dcprint.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dcprint.h \
+ /usr/include/wx-2.8/wx/cmndata.h /usr/include/wx-2.8/wx/encinfo.h \
+ /usr/include/wx-2.8/wx/dcscreen.h /usr/include/wx-2.8/wx/mac/dcscreen.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dcscreen.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/mac/button.h \
+ /usr/include/wx-2.8/wx/mac/carbon/button.h \
+ /usr/include/wx-2.8/wx/control.h /usr/include/wx-2.8/wx/menuitem.h \
+ /usr/include/wx-2.8/wx/mac/menuitem.h \
+ /usr/include/wx-2.8/wx/mac/carbon/menuitem.h \
+ /usr/include/wx-2.8/wx/menu.h /usr/include/wx-2.8/wx/mac/menu.h \
+ /usr/include/wx-2.8/wx/mac/carbon/menu.h \
+ /usr/include/wx-2.8/wx/arrstr.h /usr/include/wx-2.8/wx/icon.h \
+ /usr/include/wx-2.8/wx/dialog.h /usr/include/wx-2.8/wx/mac/dialog.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dialog.h \
+ /usr/include/wx-2.8/wx/panel.h /usr/include/wx-2.8/wx/timer.h \
+ /usr/include/wx-2.8/wx/mac/timer.h \
+ /usr/include/wx-2.8/wx/mac/carbon/timer.h \
+ /usr/include/wx-2.8/wx/mac/macnotfy.h \
+ /usr/include/wx-2.8/wx/mac/carbon/macnotfy.h \
+ /usr/include/wx-2.8/wx/settings.h /usr/include/wx-2.8/wx/msgdlg.h \
+ /usr/include/wx-2.8/wx/mac/msgdlg.h \
+ /usr/include/wx-2.8/wx/mac/carbon/msgdlg.h \
+ /usr/include/wx-2.8/wx/dialog.h /usr/include/wx-2.8/wx/cmndata.h \
+ /usr/include/wx-2.8/wx/dataobj.h /usr/include/wx-2.8/wx/mac/dataform.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dataform.h \
+ /usr/include/wx-2.8/wx/mac/dataobj.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dataobj.h \
+ /usr/include/wx-2.8/wx/mac/dataobj2.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dataobj2.h \
+ /usr/include/wx-2.8/wx/ctrlsub.h /usr/include/wx-2.8/wx/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/mac/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/mac/carbon/bmpbuttn.h \
+ /usr/include/wx-2.8/wx/button.h /usr/include/wx-2.8/wx/checkbox.h \
+ /usr/include/wx-2.8/wx/mac/checkbox.h \
+ /usr/include/wx-2.8/wx/mac/carbon/checkbox.h \
+ /usr/include/wx-2.8/wx/checklst.h /usr/include/wx-2.8/wx/listbox.h \
+ /usr/include/wx-2.8/wx/mac/listbox.h \
+ /usr/include/wx-2.8/wx/mac/carbon/listbox.h \
+ /usr/include/wx-2.8/wx/mac/checklst.h \
+ /usr/include/wx-2.8/wx/mac/carbon/checklst.h \
+ /usr/include/wx-2.8/wx/choice.h /usr/include/wx-2.8/wx/mac/choice.h \
+ /usr/include/wx-2.8/wx/mac/carbon/choice.h \
+ /usr/include/wx-2.8/wx/scrolbar.h /usr/include/wx-2.8/wx/mac/scrolbar.h \
+ /usr/include/wx-2.8/wx/mac/carbon/scrolbar.h \
+ /usr/include/wx-2.8/wx/stattext.h /usr/include/wx-2.8/wx/mac/stattext.h \
+ /usr/include/wx-2.8/wx/mac/carbon/stattext.h \
+ /usr/include/wx-2.8/wx/statbmp.h /usr/include/wx-2.8/wx/mac/statbmp.h \
+ /usr/include/wx-2.8/wx/mac/carbon/statbmp.h \
+ /usr/include/wx-2.8/wx/statbox.h /usr/include/wx-2.8/wx/mac/statbox.h \
+ /usr/include/wx-2.8/wx/mac/carbon/statbox.h \
+ /usr/include/wx-2.8/wx/radiobox.h /usr/include/wx-2.8/wx/mac/radiobox.h \
+ /usr/include/wx-2.8/wx/mac/carbon/radiobox.h \
+ /usr/include/wx-2.8/wx/radiobut.h /usr/include/wx-2.8/wx/mac/radiobut.h \
+ /usr/include/wx-2.8/wx/mac/carbon/radiobut.h \
+ /usr/include/wx-2.8/wx/textctrl.h /usr/include/wx-2.8/wx/mac/textctrl.h \
+ /usr/include/wx-2.8/wx/mac/carbon/textctrl.h \
+ /usr/include/wx-2.8/wx/textctrl.h /usr/include/wx-2.8/wx/slider.h \
+ /usr/include/wx-2.8/wx/mac/slider.h \
+ /usr/include/wx-2.8/wx/mac/carbon/slider.h \
+ /usr/include/wx-2.8/wx/slider.h /usr/include/wx-2.8/wx/stattext.h \
+ /usr/include/wx-2.8/wx/gauge.h /usr/include/wx-2.8/wx/mac/gauge.h \
+ /usr/include/wx-2.8/wx/mac/carbon/gauge.h \
+ /usr/include/wx-2.8/wx/scrolwin.h /usr/include/wx-2.8/wx/dirdlg.h \
+ /usr/include/wx-2.8/wx/mac/dirdlg.h \
+ /usr/include/wx-2.8/wx/mac/carbon/dirdlg.h \
+ /usr/include/wx-2.8/wx/toolbar.h /usr/include/wx-2.8/wx/combobox.h \
+ /usr/include/wx-2.8/wx/mac/combobox.h \
+ /usr/include/wx-2.8/wx/mac/carbon/combobox.h \
+ /usr/include/wx-2.8/wx/containr.h /usr/include/wx-2.8/wx/choice.h \
+ /usr/include/wx-2.8/wx/layout.h /usr/include/wx-2.8/wx/sizer.h \
+ /usr/include/wx-2.8/wx/mdi.h /usr/include/wx-2.8/wx/mac/mdi.h \
+ /usr/include/wx-2.8/wx/mac/carbon/mdi.h /usr/include/wx-2.8/wx/frame.h \
+ /usr/include/wx-2.8/wx/statusbr.h \
+ /usr/include/wx-2.8/wx/generic/statusbr.h /usr/include/wx-2.8/wx/defs.h \
+ /usr/include/wx-2.8/wx/pen.h /usr/include/wx-2.8/wx/arrstr.h \
+ /usr/include/wx-2.8/wx/mac/statusbr.h \
+ /usr/include/wx-2.8/wx/mac/carbon/statusbr.h \
+ /usr/include/wx-2.8/wx/choicdlg.h \
+ /usr/include/wx-2.8/wx/generic/choicdgg.h \
+ /usr/include/wx-2.8/wx/dynarray.h /usr/include/wx-2.8/wx/dialog.h \
+ /usr/include/wx-2.8/wx/textdlg.h \
+ /usr/include/wx-2.8/wx/generic/textdlgg.h \
+ /usr/include/wx-2.8/wx/valtext.h /usr/include/wx-2.8/wx/filedlg.h \
+ /usr/include/wx-2.8/wx/mac/filedlg.h \
+ /usr/include/wx-2.8/wx/mac/carbon/filedlg.h \
+ /usr/include/wx-2.8/wx/valtext.h
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.list
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.list?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.list (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/makefile.list Sun Dec 16 23:23:25 2012
@@ -0,0 +1,10 @@
+SRCS=\
+ wxP7ZIP.cpp
+
+
+SRCS_C=
+
+include ../../../../makefile.rules
+
+wxP7ZIP.o : wxP7ZIP.cpp
+ $(CXX) $(CXXFLAGS) wxP7ZIP.cpp
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wine_date_and_time.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wine_date_and_time.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wine_date_and_time.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wine_date_and_time.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,371 @@
+// wxFM.cpp
+
+#include "StdAfx.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWidgets headers)
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#include "wx/dnd.h"
+
+#undef _WIN32
+
+#ifdef __WXMAC__
+
+#define UInt32 max_UInt32
+#include <ApplicationServices/ApplicationServices.h>
+#undef UInt32
+
+#endif
+
+#include "Common/StringConvert.h"
+#include "Windows/FileDir.h"
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h" // global_use_utf16_conversion
+
+using namespace NWindows;
+using namespace NFile;
+
+
+///////////////////////////////////////////
+
+static LPCWSTR kArchiveNoNameSwitch = L" -an";
+
+HRESULT MyCreateProcess(const UString ¶ms,LPCWSTR curDir, bool waitFinish)
+{
+ printf("MyCreateProcess: waitFinish=%d\n",(unsigned)waitFinish);
+ printf("\tparams : %ls\n",(const wchar_t*)params);
+
+ printf("\tcurDir : %ls\n",(const wchar_t*)curDir);
+
+ wxString cmd(params);
+ wxString memoCurDir = wxGetCwd();
+
+ if (curDir) { // FIXME
+ wxSetWorkingDirectory(wxString(curDir));
+ }
+
+ printf("MyCreateProcess: cmd='%ls'\n",(const wchar_t *)cmd);
+ long pid = 0;
+ if (waitFinish) pid = wxExecute(cmd, wxEXEC_SYNC); // FIXME process never ends and stays zombie ...
+ else pid = wxExecute(cmd, wxEXEC_ASYNC);
+
+ if (curDir) {
+ wxSetWorkingDirectory(memoCurDir);
+ }
+
+ // FIXME if (pid == 0) return E_FAIL;
+
+ return S_OK;
+}
+
+
+
+static HRESULT ExtractGroupCommand(const UStringVector &archivePaths,
+ const UString ¶ms)
+{
+ UString params2 = params;
+// AddLagePagesSwitch(params2);
+ params2 += kArchiveNoNameSwitch;
+
+
+ char tempFile[256];
+ static int count = 1000;
+
+ sprintf(tempFile,"/tmp/7zExtract_%d_%d.tmp",(int)getpid(),count++);
+
+ FILE * file = fopen(tempFile,"w");
+ if (file)
+ {
+ for (int i = 0; i < archivePaths.Size(); i++) {
+ fprintf(file,"%ls\n",(const wchar_t *)archivePaths[i]);
+ printf(" TMP_%d : '%ls'\n",i,(const wchar_t *)archivePaths[i]);
+ }
+
+ fclose(file);
+ }
+ params2 += L" -ai@";
+ params2 += GetUnicodeString(tempFile);
+ printf("ExtractGroupCommand : -%ls-\n",(const wchar_t *)params2);
+ HRESULT res = MyCreateProcess(params2, 0, true);
+ printf("ExtractGroupCommand : END\n");
+
+ remove(tempFile);
+
+ return res;
+}
+
+
+HRESULT TestArchives(const UStringVector &archivePaths)
+{
+ UString params;
+ params = L"/Users/me/P7ZIP/bin/7zG"; // Get7zGuiPath();
+ params += L" t";
+ return ExtractGroupCommand(archivePaths, params);
+}
+
+// Define a new application type, each program should derive a class from wxApp
+class MyApp : public wxApp
+{
+public:
+ virtual bool OnInit();
+};
+
+// Create a new application object: this macro will allow wxWidgets to create
+// the application object during program execution (it's better than using a
+// static object for many reasons) and also implements the accessor function
+// wxGetApp() which will return the reference of the right type (i.e. MyApp and
+// not wxApp)
+IMPLEMENT_APP(MyApp)
+
+
+class DnDFile : public wxFileDropTarget
+{
+public:
+ DnDFile(wxListBox *pOwner) { m_pOwner = pOwner; }
+
+ virtual bool OnDropFiles(wxCoord x, wxCoord y,
+ const wxArrayString& filenames);
+
+private:
+ wxListBox *m_pOwner;
+};
+
+
+
+
+bool DnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
+{
+ size_t nFiles = filenames.GetCount();
+ wxString str;
+ str.Printf( _T("%d files dropped"), (int)nFiles);
+ m_pOwner->Append(str);
+
+ UStringVector archivePaths;
+
+ for ( size_t n = 0; n < nFiles; n++ )
+ {
+ // m_pOwner->Append(filenames[n]);
+/*
+ if (wxFile::Exists(filenames[n]))
+ m_pOwner->Append(wxT(" This file exists.") );
+ else
+ m_pOwner->Append(wxT(" This file doesn't exist.") );
+*/
+ // cmd = cmd + _T(" \"") + filenames[n] + _T("\"");
+ const wchar_t * wx = filenames[n].wc_str ();
+ archivePaths.Add(wx);
+ }
+
+ /*
+ m_pOwner->Append(cmd);
+
+
+ long pid = 0;
+
+ pid = wxExecute(cmd, wxEXEC_ASYNC);
+ */
+
+ TestArchives(archivePaths);
+
+ return true;
+}
+
+//////////////////
+
+class DnDFrame : public wxFrame
+{
+public:
+ DnDFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h);
+ virtual ~DnDFrame();
+
+ void OnQuit(wxCommandEvent& event);
+
+ DECLARE_EVENT_TABLE()
+
+// private:
+public:
+ // GUI controls
+ wxListBox *m_ctrlFile;
+
+};
+
+enum
+{
+ Menu_Quit = 1,
+ Menu_Drag,
+ Menu_DragMoveDef,
+ Menu_DragMoveAllow,
+ Menu_NewFrame,
+ Menu_About = 101,
+ Menu_OpenFile,
+ Menu_Help,
+ Menu_Clear,
+ Menu_Copy,
+ Menu_Paste,
+ Menu_CopyBitmap,
+ Menu_PasteBitmap,
+ Menu_PasteMFile,
+ Menu_CopyFiles,
+ Menu_Shape_New = 500,
+ Menu_Shape_Edit,
+ Menu_Shape_Clear,
+ Menu_ShapeClipboard_Copy,
+ Menu_ShapeClipboard_Paste,
+ Button_Colour = 1001
+};
+
+DnDFrame::DnDFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h)
+: wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
+{
+ // frame icon and status bar
+ // FIXME SetIcon(wxICON(sample));
+
+
+
+ // construct menu
+ wxMenu *file_menu = new wxMenu;
+ file_menu->Append(Menu_Drag, _T("&Test drag..."));
+ file_menu->AppendCheckItem(Menu_DragMoveDef, _T("&Move by default"));
+ file_menu->AppendCheckItem(Menu_DragMoveAllow, _T("&Allow moving"));
+ file_menu->AppendSeparator();
+ file_menu->Append(Menu_NewFrame, _T("&New frame\tCtrl-N"));
+ file_menu->AppendSeparator();
+ file_menu->Append(Menu_OpenFile, _T("&Open file..."));
+ file_menu->AppendSeparator();
+ file_menu->Append(Menu_Quit, _T("E&xit\tCtrl-Q"));
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+ menu_bar->Append(file_menu, _T("&File"));
+//#if wxUSE_LOG
+// menu_bar->Append(log_menu, _T("&Log"));
+//#endif // wxUSE_LOG
+// menu_bar->Append(clip_menu, _T("&Clipboard"));
+// menu_bar->Append(help_menu, _T("&Help"));
+
+ SetMenuBar(menu_bar);
+
+
+ //
+ // wxString strFile(_T("Drop files here!"));
+
+ wxString str;
+ wxString str2 = wxString::FromUTF8(getenv("P7ZIP_HOME_DIR"));
+ str = wxString(_T("P7ZIP_HOME_DIR -")) + str2 + _T("-");
+
+ wxString strFile(str);
+
+ m_ctrlFile = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 1, &strFile ,
+ wxLB_HSCROLL | wxLB_ALWAYS_SB );
+
+
+ // m_ctrlFile->Append(str);
+
+
+ m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
+
+ wxBoxSizer *sizer_top = new wxBoxSizer( wxHORIZONTAL );
+ sizer_top->Add(m_ctrlFile, 1, wxEXPAND );
+
+ wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
+sizer->Add(sizer_top, 2, wxEXPAND );
+
+SetSizer(sizer);
+sizer->SetSizeHints( this );
+
+}
+
+void DnDFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+ Close(true);
+}
+
+DnDFrame::~DnDFrame()
+{
+/*
+#if wxUSE_LOG
+ if ( m_pLog != NULL ) {
+ if ( wxLog::SetActiveTarget(m_pLogPrev) == m_pLog )
+ delete m_pLog;
+ }
+#endif // wxUSE_LOG
+ */
+}
+
+
+BEGIN_EVENT_TABLE(DnDFrame, wxFrame)
+EVT_MENU(Menu_Quit, DnDFrame::OnQuit)
+END_EVENT_TABLE()
+
+// 'Main program' equivalent: the program execution "starts" here
+bool MyApp::OnInit()
+{
+ // don't parse the command-line options !
+ // : if ( !wxApp::OnInit() ) return false;
+
+#ifdef __WXMAC__
+ProcessSerialNumber PSN;
+GetCurrentProcess(&PSN);
+TransformProcessType(&PSN,kProcessTransformToForegroundApplication);
+#endif
+
+
+ { // define P7ZIP_HOME_DIR
+ extern void my_windows_split_path(const AString &p_path, AString &dir , AString &base);
+ static char p7zip_home_dir[MAX_PATH];
+
+ UString fullPath;
+ NDirectory::MyGetFullPathName(wxApp::argv[0], fullPath);
+ AString afullPath = GetAnsiString(fullPath);
+
+ AString dir,name;
+
+ my_windows_split_path(afullPath,dir,name);
+
+ const char *dir2 = nameWindowToUnix((const char *)dir);
+ snprintf(p7zip_home_dir,sizeof(p7zip_home_dir),"P7ZIP_HOME_DIR=%s/",dir2);
+ p7zip_home_dir[sizeof(p7zip_home_dir)-1] = 0;
+ putenv(p7zip_home_dir);
+ // DEBUG printf("putenv(%s)\n",p7zip_home_dir);
+ }
+ global_use_utf16_conversion = 1; // UNICODE !
+
+
+ wxInitAllImageHandlers();
+
+// Main1(wxApp::argc,wxApp::argv);
+
+ // create the main frame window
+ DnDFrame *frame = new DnDFrame((wxFrame *) NULL,
+ _T("P7ZIP Drag-and-Drop"),
+ 10, 100, 750, 540);
+
+
+ printf("P7ZIP_HOME_DIR : -%s-\n", getenv("P7ZIP_HOME_DIR"));
+
+
+
+ // activate it
+ frame->Show(true);
+
+ SetTopWindow(frame);
+
+
+
+
+
+ // success: wxApp::OnRun() will be called which will enter the main message
+ // loop and the application will run. If we returned false here, the
+ // application would exit immediately.
+ return true;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.o
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.o?rev=170306&view=auto
==============================================================================
Binary files test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.o (added) and test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/7zip/UI/P7ZIP/wxP7ZIP.o Sun Dec 16 23:23:25 2012 differ
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/AutoPtr.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/AutoPtr.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/AutoPtr.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/AutoPtr.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,35 @@
+// Common/AutoPtr.h
+
+#ifndef __COMMON_AUTOPTR_H
+#define __COMMON_AUTOPTR_H
+
+template<class T> class CMyAutoPtr
+{
+ T *_p;
+public:
+ CMyAutoPtr(T *p = 0) : _p(p) {}
+ CMyAutoPtr(CMyAutoPtr<T>& p): _p(p.release()) {}
+ CMyAutoPtr<T>& operator=(CMyAutoPtr<T>& p)
+ {
+ reset(p.release());
+ return (*this);
+ }
+ ~CMyAutoPtr() { delete _p; }
+ T& operator*() const { return *_p; }
+ // T* operator->() const { return (&**this); }
+ T* get() const { return _p; }
+ T* release()
+ {
+ T *tmp = _p;
+ _p = 0;
+ return tmp;
+ }
+ void reset(T* p = 0)
+ {
+ if (p != _p)
+ delete _p;
+ _p = p;
+ }
+};
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Buffer.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Buffer.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Buffer.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Buffer.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,77 @@
+// Common/Buffer.h
+
+#ifndef __COMMON_BUFFER_H
+#define __COMMON_BUFFER_H
+
+#include "Defs.h"
+
+template <class T> class CBuffer
+{
+protected:
+ size_t _capacity;
+ T *_items;
+public:
+ void Free()
+ {
+ delete []_items;
+ _items = 0;
+ _capacity = 0;
+ }
+ CBuffer(): _capacity(0), _items(0) {};
+ CBuffer(const CBuffer &buffer): _capacity(0), _items(0) { *this = buffer; }
+ CBuffer(size_t size): _items(0), _capacity(0) { SetCapacity(size); }
+ virtual ~CBuffer() { delete []_items; }
+ operator T *() { return _items; };
+ operator const T *() const { return _items; };
+ size_t GetCapacity() const { return _capacity; }
+ void SetCapacity(size_t newCapacity)
+ {
+ if (newCapacity == _capacity)
+ return;
+ T *newBuffer;
+ if (newCapacity > 0)
+ {
+ newBuffer = new T[newCapacity];
+ if (_capacity > 0)
+ memmove(newBuffer, _items, MyMin(_capacity, newCapacity) * sizeof(T));
+ }
+ else
+ newBuffer = 0;
+ delete []_items;
+ _items = newBuffer;
+ _capacity = newCapacity;
+ }
+ CBuffer& operator=(const CBuffer &buffer)
+ {
+ Free();
+ if (buffer._capacity > 0)
+ {
+ SetCapacity(buffer._capacity);
+ memmove(_items, buffer._items, buffer._capacity * sizeof(T));
+ }
+ return *this;
+ }
+};
+
+template <class T>
+bool operator==(const CBuffer<T>& b1, const CBuffer<T>& b2)
+{
+ if (b1.GetCapacity() != b2.GetCapacity())
+ return false;
+ for (size_t i = 0; i < b1.GetCapacity(); i++)
+ if (b1[i] != b2[i])
+ return false;
+ return true;
+}
+
+template <class T>
+bool operator!=(const CBuffer<T>& b1, const CBuffer<T>& b2)
+{
+ return !(b1 == b2);
+}
+
+typedef CBuffer<char> CCharBuffer;
+typedef CBuffer<wchar_t> CWCharBuffer;
+typedef CBuffer<unsigned char> CByteBuffer;
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CRC.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CRC.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CRC.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CRC.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,7 @@
+// Common/CRC.cpp
+
+#include "StdAfx.h"
+
+#include "../../C/7zCrc.h"
+
+struct CCRCTableInit { CCRCTableInit() { CrcGenerateTable(); } } g_CRCTableInit;
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,88 @@
+// Common/C_FileIO.h
+
+#include "C_FileIO.h"
+
+#include <fcntl.h>
+#include <unistd.h>
+
+namespace NC {
+namespace NFile {
+namespace NIO {
+
+bool CFileBase::OpenBinary(const char *name, int flags)
+{
+ #ifdef O_BINARY
+ flags |= O_BINARY;
+ #endif
+ Close();
+ _handle = ::open(name, flags, 0666);
+ return _handle != -1;
+}
+
+bool CFileBase::Close()
+{
+ if (_handle == -1)
+ return true;
+ if (close(_handle) != 0)
+ return false;
+ _handle = -1;
+ return true;
+}
+
+bool CFileBase::GetLength(UInt64 &length) const
+{
+ off_t curPos = Seek(0, SEEK_CUR);
+ off_t lengthTemp = Seek(0, SEEK_END);
+ Seek(curPos, SEEK_SET);
+ length = (UInt64)lengthTemp;
+ return true;
+}
+
+off_t CFileBase::Seek(off_t distanceToMove, int moveMethod) const
+{
+ return ::lseek(_handle, distanceToMove, moveMethod);
+}
+
+/////////////////////////
+// CInFile
+
+bool CInFile::Open(const char *name)
+{
+ return CFileBase::OpenBinary(name, O_RDONLY);
+}
+
+bool CInFile::OpenShared(const char *name, bool)
+{
+ return Open(name);
+}
+
+ssize_t CInFile::Read(void *data, size_t size)
+{
+ return read(_handle, data, size);
+}
+
+/////////////////////////
+// COutFile
+
+bool COutFile::Create(const char *name, bool createAlways)
+{
+ if (createAlways)
+ {
+ Close();
+ _handle = ::creat(name, 0666);
+ return _handle != -1;
+ }
+ return OpenBinary(name, O_CREAT | O_EXCL | O_WRONLY);
+}
+
+bool COutFile::Open(const char *name, DWORD creationDisposition)
+{
+ return Create(name, false);
+}
+
+ssize_t COutFile::Write(const void *data, size_t size)
+{
+ return write(_handle, data, size);
+}
+
+}}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/C_FileIO.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,47 @@
+// Common/C_FileIO.h
+
+#ifndef __COMMON_C_FILEIO_H
+#define __COMMON_C_FILEIO_H
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "Types.h"
+#include "MyWindows.h"
+
+namespace NC {
+namespace NFile {
+namespace NIO {
+
+class CFileBase
+{
+protected:
+ int _handle;
+ bool OpenBinary(const char *name, int flags);
+public:
+ CFileBase(): _handle(-1) {};
+ ~CFileBase() { Close(); }
+ bool Close();
+ bool GetLength(UInt64 &length) const;
+ off_t Seek(off_t distanceToMove, int moveMethod) const;
+};
+
+class CInFile: public CFileBase
+{
+public:
+ bool Open(const char *name);
+ bool OpenShared(const char *name, bool shareForWrite);
+ ssize_t Read(void *data, size_t size);
+};
+
+class COutFile: public CFileBase
+{
+public:
+ bool Create(const char *name, bool createAlways);
+ bool Open(const char *name, DWORD creationDisposition);
+ ssize_t Write(const void *data, size_t size);
+};
+
+}}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ComTry.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ComTry.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ComTry.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ComTry.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,18 @@
+// ComTry.h
+
+#ifndef __COM_TRY_H
+#define __COM_TRY_H
+
+#include "MyWindows.h"
+// #include "Exception.h"
+// #include "NewHandler.h"
+
+#define COM_TRY_BEGIN try {
+#define COM_TRY_END } catch(const char * s) { throw s ; } \
+ catch(...) { return E_OUTOFMEMORY; }
+
+ // catch(const CNewException &) { return E_OUTOFMEMORY; }
+ // catch(const CSystemException &e) { return e.ErrorCode; }
+ // catch(...) { return E_FAIL; }
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,230 @@
+// CommandLineParser.cpp
+
+#include "StdAfx.h"
+
+#include "CommandLineParser.h"
+
+namespace NCommandLineParser {
+
+#ifdef _WIN32
+bool SplitCommandLine(const UString &src, UString &dest1, UString &dest2)
+{
+ dest1.Empty();
+ dest2.Empty();
+ bool quoteMode = false;
+ int i;
+ for (i = 0; i < src.Length(); i++)
+ {
+ wchar_t c = src[i];
+ if (c == L' ' && !quoteMode)
+ {
+ dest2 = src.Mid(i + 1);
+ return i != 0;
+ }
+ if (c == L'\"')
+ quoteMode = !quoteMode;
+ else
+ dest1 += c;
+ }
+ return i != 0;
+}
+
+void SplitCommandLine(const UString &s, UStringVector &parts)
+{
+ UString sTemp = s;
+ sTemp.Trim();
+ parts.Clear();
+ for (;;)
+ {
+ UString s1, s2;
+ if (SplitCommandLine(sTemp, s1, s2))
+ parts.Add(s1);
+ if (s2.IsEmpty())
+ break;
+ sTemp = s2;
+ }
+}
+#endif
+
+static const wchar_t kSwitchID1 = '-';
+// static const wchar_t kSwitchID2 = '/';
+
+static const wchar_t kSwitchMinus = '-';
+static const wchar_t *kStopSwitchParsing = L"--";
+
+static bool IsItSwitchChar(wchar_t c)
+{
+ return (c == kSwitchID1 /*|| c == kSwitchID2 */);
+}
+
+CParser::CParser(int numSwitches):
+ _numSwitches(numSwitches)
+{
+ _switches = new CSwitchResult[_numSwitches];
+}
+
+CParser::~CParser()
+{
+ delete []_switches;
+}
+
+void CParser::ParseStrings(const CSwitchForm *switchForms,
+ const UStringVector &commandStrings)
+{
+ int numCommandStrings = commandStrings.Size();
+ bool stopSwitch = false;
+ for (int i = 0; i < numCommandStrings; i++)
+ {
+ const UString &s = commandStrings[i];
+ if (stopSwitch)
+ NonSwitchStrings.Add(s);
+ else
+ if (s == kStopSwitchParsing)
+ stopSwitch = true;
+ else
+ if (!ParseString(s, switchForms))
+ NonSwitchStrings.Add(s);
+ }
+}
+
+// if string contains switch then function updates switch structures
+// out: (string is a switch)
+bool CParser::ParseString(const UString &s, const CSwitchForm *switchForms)
+{
+ int len = s.Length();
+ if (len == 0)
+ return false;
+ int pos = 0;
+ if (!IsItSwitchChar(s[pos]))
+ return false;
+ while (pos < len)
+ {
+ if (IsItSwitchChar(s[pos]))
+ pos++;
+ const int kNoLen = -1;
+ int matchedSwitchIndex = 0; // GCC Warning
+ int maxLen = kNoLen;
+ for (int switchIndex = 0; switchIndex < _numSwitches; switchIndex++)
+ {
+ int switchLen = MyStringLen(switchForms[switchIndex].IDString);
+ if (switchLen <= maxLen || pos + switchLen > len)
+ continue;
+
+ UString temp = s + pos;
+ temp = temp.Left(switchLen);
+ if (temp.CompareNoCase(switchForms[switchIndex].IDString) == 0)
+ // if (_strnicmp(switchForms[switchIndex].IDString, LPCSTR(s) + pos, switchLen) == 0)
+ {
+ matchedSwitchIndex = switchIndex;
+ maxLen = switchLen;
+ }
+ }
+ if (maxLen == kNoLen)
+ throw "maxLen == kNoLen";
+ CSwitchResult &matchedSwitch = _switches[matchedSwitchIndex];
+ const CSwitchForm &switchForm = switchForms[matchedSwitchIndex];
+ if ((!switchForm.Multi) && matchedSwitch.ThereIs)
+ throw "switch must be single";
+ matchedSwitch.ThereIs = true;
+ pos += maxLen;
+ int tailSize = len - pos;
+ NSwitchType::EEnum type = switchForm.Type;
+ switch(type)
+ {
+ case NSwitchType::kPostMinus:
+ {
+ if (tailSize == 0)
+ matchedSwitch.WithMinus = false;
+ else
+ {
+ matchedSwitch.WithMinus = (s[pos] == kSwitchMinus);
+ if (matchedSwitch.WithMinus)
+ pos++;
+ }
+ break;
+ }
+ case NSwitchType::kPostChar:
+ {
+ if (tailSize < switchForm.MinLen)
+ throw "switch is not full";
+ UString set = switchForm.PostCharSet;
+ const int kEmptyCharValue = -1;
+ if (tailSize == 0)
+ matchedSwitch.PostCharIndex = kEmptyCharValue;
+ else
+ {
+ int index = set.Find(s[pos]);
+ if (index < 0)
+ matchedSwitch.PostCharIndex = kEmptyCharValue;
+ else
+ {
+ matchedSwitch.PostCharIndex = index;
+ pos++;
+ }
+ }
+ break;
+ }
+ case NSwitchType::kLimitedPostString:
+ case NSwitchType::kUnLimitedPostString:
+ {
+ int minLen = switchForm.MinLen;
+ if (tailSize < minLen)
+ throw "switch is not full";
+ if (type == NSwitchType::kUnLimitedPostString)
+ {
+ matchedSwitch.PostStrings.Add(s.Mid(pos));
+ return true;
+ }
+ int maxLen = switchForm.MaxLen;
+ UString stringSwitch = s.Mid(pos, minLen);
+ pos += minLen;
+ for (int i = minLen; i < maxLen && pos < len; i++, pos++)
+ {
+ wchar_t c = s[pos];
+ if (IsItSwitchChar(c))
+ break;
+ stringSwitch += c;
+ }
+ matchedSwitch.PostStrings.Add(stringSwitch);
+ break;
+ }
+ case NSwitchType::kSimple:
+ break;
+ }
+ }
+ return true;
+}
+
+const CSwitchResult& CParser::operator[](size_t index) const
+{
+ return _switches[index];
+}
+
+/////////////////////////////////
+// Command parsing procedures
+
+int ParseCommand(int numCommandForms, const CCommandForm *commandForms,
+ const UString &commandString, UString &postString)
+{
+ for (int i = 0; i < numCommandForms; i++)
+ {
+ const UString id = commandForms[i].IDString;
+ if (commandForms[i].PostStringMode)
+ {
+ if (commandString.Find(id) == 0)
+ {
+ postString = commandString.Mid(id.Length());
+ return i;
+ }
+ }
+ else
+ if (commandString == id)
+ {
+ postString.Empty();
+ return i;
+ }
+ }
+ return -1;
+}
+
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/CommandLineParser.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,72 @@
+// Common/CommandLineParser.h
+
+#ifndef __COMMON_COMMAND_LINE_PARSER_H
+#define __COMMON_COMMAND_LINE_PARSER_H
+
+#include "MyString.h"
+
+namespace NCommandLineParser {
+
+bool SplitCommandLine(const UString &src, UString &dest1, UString &dest2);
+void SplitCommandLine(const UString &s, UStringVector &parts);
+
+namespace NSwitchType {
+ enum EEnum
+ {
+ kSimple,
+ kPostMinus,
+ kLimitedPostString,
+ kUnLimitedPostString,
+ kPostChar
+ };
+}
+
+struct CSwitchForm
+{
+ const wchar_t *IDString;
+ NSwitchType::EEnum Type;
+ bool Multi;
+ int MinLen;
+ int MaxLen;
+ const wchar_t *PostCharSet;
+};
+
+struct CSwitchResult
+{
+ bool ThereIs;
+ bool WithMinus;
+ UStringVector PostStrings;
+ int PostCharIndex;
+ CSwitchResult(): ThereIs(false) {};
+};
+
+class CParser
+{
+ int _numSwitches;
+ CSwitchResult *_switches;
+ bool ParseString(const UString &s, const CSwitchForm *switchForms);
+public:
+ UStringVector NonSwitchStrings;
+ CParser(int numSwitches);
+ ~CParser();
+ void ParseStrings(const CSwitchForm *switchForms,
+ const UStringVector &commandStrings);
+ const CSwitchResult& operator[](size_t index) const;
+};
+
+/////////////////////////////////
+// Command parsing procedures
+
+struct CCommandForm
+{
+ const wchar_t *IDString;
+ bool PostStringMode;
+};
+
+// Returns: Index of form and postString; -1, if there is no match
+int ParseCommand(int numCommandForms, const CCommandForm *commandForms,
+ const UString &commandString, UString &postString);
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Defs.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Defs.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Defs.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Defs.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,20 @@
+// Common/Defs.h
+
+#ifndef __COMMON_DEFS_H
+#define __COMMON_DEFS_H
+
+template <class T> inline T MyMin(T a, T b)
+ { return a < b ? a : b; }
+template <class T> inline T MyMax(T a, T b)
+ { return a > b ? a : b; }
+
+template <class T> inline int MyCompare(T a, T b)
+ { return a < b ? -1 : (a == b ? 0 : 1); }
+
+inline int BoolToInt(bool value)
+ { return (value ? 1: 0); }
+
+inline bool IntToBool(int value)
+ { return (value != 0); }
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/DynamicBuffer.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/DynamicBuffer.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/DynamicBuffer.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/DynamicBuffer.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,50 @@
+// Common/DynamicBuffer.h
+
+#ifndef __COMMON_DYNAMIC_BUFFER_H
+#define __COMMON_DYNAMIC_BUFFER_H
+
+#include "Buffer.h"
+
+template <class T> class CDynamicBuffer: public CBuffer<T>
+{
+ void GrowLength(size_t size)
+ {
+ size_t delta;
+ if (this->_capacity > 64)
+ delta = this->_capacity / 4;
+ else if (this->_capacity > 8)
+ delta = 16;
+ else
+ delta = 4;
+ delta = MyMax(delta, size);
+ size_t newCap = this->_capacity + delta;
+ if (newCap < delta)
+ newCap = this->_capacity + size;
+ this->SetCapacity(newCap);
+ }
+public:
+ CDynamicBuffer(): CBuffer<T>() {};
+ CDynamicBuffer(const CDynamicBuffer &buffer): CBuffer<T>(buffer) {};
+ CDynamicBuffer(size_t size): CBuffer<T>(size) {};
+ CDynamicBuffer& operator=(const CDynamicBuffer &buffer)
+ {
+ this->Free();
+ if (buffer._capacity > 0)
+ {
+ SetCapacity(buffer._capacity);
+ memmove(this->_items, buffer._items, buffer._capacity * sizeof(T));
+ }
+ return *this;
+ }
+ void EnsureCapacity(size_t capacity)
+ {
+ if (this->_capacity < capacity)
+ GrowLength(capacity - this->_capacity);
+ }
+};
+
+typedef CDynamicBuffer<char> CCharDynamicBuffer;
+typedef CDynamicBuffer<wchar_t> CWCharDynamicBuffer;
+typedef CDynamicBuffer<unsigned char> CByteDynamicBuffer;
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,77 @@
+// Common/IntToString.cpp
+
+#include "StdAfx.h"
+
+#include "IntToString.h"
+
+void ConvertUInt64ToString(UInt64 value, char *s, UInt32 base)
+{
+ if (base < 2 || base > 36)
+ {
+ *s = '\0';
+ return;
+ }
+ char temp[72];
+ int pos = 0;
+ do
+ {
+ int delta = (int)(value % base);
+ temp[pos++] = (char)((delta < 10) ? ('0' + delta) : ('a' + (delta - 10)));
+ value /= base;
+ }
+ while (value != 0);
+ do
+ *s++ = temp[--pos];
+ while (pos > 0);
+ *s = '\0';
+}
+
+void ConvertUInt64ToString(UInt64 value, wchar_t *s)
+{
+ wchar_t temp[32];
+ int pos = 0;
+ do
+ {
+ temp[pos++] = (wchar_t)(L'0' + (int)(value % 10));
+ value /= 10;
+ }
+ while (value != 0);
+ do
+ *s++ = temp[--pos];
+ while (pos > 0);
+ *s = L'\0';
+}
+
+void ConvertUInt32ToString(UInt32 value, char *s) { ConvertUInt64ToString(value, s); }
+void ConvertUInt32ToString(UInt32 value, wchar_t *s) { ConvertUInt64ToString(value, s); }
+
+void ConvertInt64ToString(Int64 value, char *s)
+{
+ if (value < 0)
+ {
+ *s++ = '-';
+ value = -value;
+ }
+ ConvertUInt64ToString(value, s);
+}
+
+void ConvertInt64ToString(Int64 value, wchar_t *s)
+{
+ if (value < 0)
+ {
+ *s++ = L'-';
+ value = -value;
+ }
+ ConvertUInt64ToString(value, s);
+}
+
+void ConvertUInt32ToHexWithZeros(UInt32 value, char *s)
+{
+ for (int i = 0; i < 8; i++)
+ {
+ int t = value & 0xF;
+ value >>= 4;
+ s[7 - i] = (char)((t < 10) ? ('0' + t) : ('A' + (t - 10)));
+ }
+ s[8] = '\0';
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/IntToString.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,19 @@
+// Common/IntToString.h
+
+#ifndef __COMMON_INT_TO_STRING_H
+#define __COMMON_INT_TO_STRING_H
+
+#include <stddef.h>
+#include "Types.h"
+
+void ConvertUInt64ToString(UInt64 value, char *s, UInt32 base = 10);
+void ConvertUInt64ToString(UInt64 value, wchar_t *s);
+void ConvertInt64ToString(Int64 value, char *s);
+void ConvertInt64ToString(Int64 value, wchar_t *s);
+
+void ConvertUInt32ToString(UInt32 value, char *s);
+void ConvertUInt32ToString(UInt32 value, wchar_t *s);
+
+void ConvertUInt32ToHexWithZeros(UInt32 value, char *s);
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,130 @@
+// Common/Lang.cpp
+
+#include "StdAfx.h"
+
+#include "Lang.h"
+#include "TextConfig.h"
+
+#include "../Windows/FileIO.h"
+#include "UTFConvert.h"
+#include "Defs.h"
+
+static bool HexStringToNumber(const UString &s, UInt32 &value)
+{
+ value = 0;
+ if (s.IsEmpty())
+ return false;
+ for (int i = 0; i < s.Length(); i++)
+ {
+ wchar_t c = s[i];
+ int a;
+ if (c >= L'0' && c <= L'9')
+ a = c - L'0';
+ else if (c >= L'A' && c <= L'F')
+ a = 10 + c - L'A';
+ else if (c >= L'a' && c <= L'f')
+ a = 10 + c - L'a';
+ else
+ return false;
+ value *= 0x10;
+ value += a;
+ }
+ return true;
+}
+
+
+static bool WaitNextLine(const AString &s, int &pos)
+{
+ for (; pos < s.Length(); pos++)
+ if (s[pos] == 0x0A)
+ return true;
+ return false;
+}
+
+static int CompareLangItems(void *const *elem1, void *const *elem2, void *)
+{
+ const CLangPair &langPair1 = *(*((const CLangPair **)elem1));
+ const CLangPair &langPair2 = *(*((const CLangPair **)elem2));
+ return MyCompare(langPair1.Value, langPair2.Value);
+}
+
+bool CLang::Open(LPCWSTR fileName)
+{
+ _langPairs.Clear();
+ NWindows::NFile::NIO::CInFile file;
+ if (!file.Open(fileName))
+ return false;
+ UInt64 length;
+ if (!file.GetLength(length))
+ return false;
+ if (length > (1 << 20))
+ return false;
+ AString s;
+ char *p = s.GetBuffer((int)length + 1);
+ UInt32 processed;
+ if (!file.Read(p, (UInt32)length, processed))
+ return false;
+ p[(UInt32)length] = 0;
+ s.ReleaseBuffer();
+ file.Close();
+ int pos = 0;
+ if (s.Length() >= 3)
+ {
+ if (Byte(s[0]) == 0xEF && Byte(s[1]) == 0xBB && Byte(s[2]) == 0xBF)
+ pos += 3;
+ }
+
+ /////////////////////
+ // read header
+
+ AString stringID = ";!@Lang@!UTF-8!";
+ if (s.Mid(pos, stringID.Length()) != stringID)
+ return false;
+ pos += stringID.Length();
+
+ if (!WaitNextLine(s, pos))
+ return false;
+
+ CObjectVector<CTextConfigPair> pairs;
+ if (!GetTextConfig(s.Mid(pos), pairs))
+ return false;
+
+ _langPairs.Reserve(_langPairs.Size());
+ for (int i = 0; i < pairs.Size(); i++)
+ {
+ CTextConfigPair textConfigPair = pairs[i];
+ CLangPair langPair;
+ if (!HexStringToNumber(textConfigPair.ID, langPair.Value))
+ return false;
+ langPair.String = textConfigPair.String;
+ _langPairs.Add(langPair);
+ }
+ _langPairs.Sort(CompareLangItems, NULL);
+ return true;
+}
+
+int CLang::FindItem(UInt32 value) const
+{
+ int left = 0, right = _langPairs.Size();
+ while (left != right)
+ {
+ UInt32 mid = (left + right) / 2;
+ UInt32 midValue = _langPairs[mid].Value;
+ if (value == midValue)
+ return mid;
+ if (value < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ return -1;
+}
+
+bool CLang::GetMessage(UInt32 value, UString &message) const
+{
+ int index = FindItem(value);
+ if (index < 0)
+ return false;
+ message = _langPairs[index].String;
+ return true;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Lang.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,28 @@
+// Common/Lang.h
+
+#ifndef __COMMON_LANG_H
+#define __COMMON_LANG_H
+
+#include "MyVector.h"
+#include "MyString.h"
+#include "Types.h"
+
+struct CLangPair
+{
+ UInt32 Value;
+ UString String;
+};
+
+class CLang
+{
+ CObjectVector<CLangPair> _langPairs;
+public:
+ bool Open(LPCWSTR fileName);
+ void Clear() { _langPairs.Clear(); }
+ int FindItem(UInt32 value) const;
+ bool GetMessage(UInt32 value, UString &message) const;
+};
+
+#endif
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,75 @@
+// Common/ListFileUtils.cpp
+
+#include "StdAfx.h"
+
+#include "MyWindows.h"
+#include "../Windows/FileIO.h"
+
+#include "ListFileUtils.h"
+#include "StringConvert.h"
+#include "UTFConvert.h"
+
+static const char kQuoteChar = '\"';
+static void RemoveQuote(UString &s)
+{
+ if (s.Length() >= 2)
+ if (s[0] == kQuoteChar && s[s.Length() - 1] == kQuoteChar)
+ s = s.Mid(1, s.Length() - 2);
+}
+
+bool ReadNamesFromListFile(LPCWSTR fileName, UStringVector &resultStrings, UINT codePage)
+{
+ NWindows::NFile::NIO::CInFile file;
+ if (!file.Open(fileName,true)) /* follow the symbolic link */
+ return false;
+ UInt64 length;
+ if (!file.GetLength(length))
+ return false;
+ if (length > ((UInt32)1 << 31))
+ return false;
+ AString s;
+ char *p = s.GetBuffer((int)length + 1);
+ UInt32 processed;
+ if (!file.Read(p, (UInt32)length, processed))
+ return false;
+ p[(UInt32)length] = 0;
+ s.ReleaseBuffer();
+ file.Close();
+
+ UString u;
+ #ifdef CP_UTF8
+ if (codePage == CP_UTF8)
+ {
+ if (!ConvertUTF8ToUnicode(s, u))
+ return false;
+ }
+ else
+ #endif
+ u = MultiByteToUnicodeString(s, codePage);
+ if (!u.IsEmpty())
+ {
+ if (u[0] == 0xFEFF)
+ u.Delete(0);
+ }
+
+ UString t;
+ for (int i = 0; i < u.Length(); i++)
+ {
+ wchar_t c = u[i];
+ if (c == L'\n' || c == 0xD)
+ {
+ t.Trim();
+ RemoveQuote(t);
+ if (!t.IsEmpty())
+ resultStrings.Add(t);
+ t.Empty();
+ }
+ else
+ t += c;
+ }
+ t.Trim();
+ RemoveQuote(t);
+ if (!t.IsEmpty())
+ resultStrings.Add(t);
+ return true;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/ListFileUtils.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,11 @@
+// Common/ListFileUtils.h
+
+#ifndef __COMMON_LISTFILEUTILS_H
+#define __COMMON_LISTFILEUTILS_H
+
+#include "MyString.h"
+#include "Types.h"
+
+bool ReadNamesFromListFile(LPCWSTR fileName, UStringVector &strings, UINT codePage = CP_OEMCP);
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyCom.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyCom.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyCom.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyCom.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,225 @@
+// MyCom.h
+
+#ifndef __MYCOM_H
+#define __MYCOM_H
+
+#include "MyWindows.h"
+
+#ifndef RINOK
+#define RINOK(x) { HRESULT __result_ = (x); if (__result_ != S_OK) return __result_; }
+#endif
+
+template <class T>
+class CMyComPtr
+{
+ T* _p;
+public:
+ // typedef T _PtrClass;
+ CMyComPtr() { _p = NULL;}
+ CMyComPtr(T* p) {if ((_p = p) != NULL) p->AddRef(); }
+ CMyComPtr(const CMyComPtr<T>& lp)
+ {
+ if ((_p = lp._p) != NULL)
+ _p->AddRef();
+ }
+ ~CMyComPtr() { if (_p) _p->Release(); }
+ void Release() { if (_p) { _p->Release(); _p = NULL; } }
+ operator T*() const { return (T*)_p; }
+ // T& operator*() const { return *_p; }
+ T** operator&() { return &_p; }
+ T* operator->() const { return _p; }
+ T* operator=(T* p)
+ {
+ if (p != 0)
+ p->AddRef();
+ if (_p)
+ _p->Release();
+ _p = p;
+ return p;
+ }
+ T* operator=(const CMyComPtr<T>& lp) { return (*this = lp._p); }
+ bool operator!() const { return (_p == NULL); }
+ // bool operator==(T* pT) const { return _p == pT; }
+ // Compare two objects for equivalence
+ void Attach(T* p2)
+ {
+ Release();
+ _p = p2;
+ }
+ T* Detach()
+ {
+ T* pt = _p;
+ _p = NULL;
+ return pt;
+ }
+ #ifdef _WIN32
+ HRESULT CoCreateInstance(REFCLSID rclsid, REFIID iid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)
+ {
+ return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, iid, (void**)&_p);
+ }
+ #endif
+ /*
+ HRESULT CoCreateInstance(LPCOLESTR szProgID, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)
+ {
+ CLSID clsid;
+ HRESULT hr = CLSIDFromProgID(szProgID, &clsid);
+ ATLASSERT(_p == NULL);
+ if (SUCCEEDED(hr))
+ hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&_p);
+ return hr;
+ }
+ */
+ template <class Q>
+ HRESULT QueryInterface(REFGUID iid, Q** pp) const
+ {
+ return _p->QueryInterface(iid, (void**)pp);
+ }
+};
+
+//////////////////////////////////////////////////////////
+
+inline HRESULT StringToBstr(LPCOLESTR src, BSTR *bstr)
+{
+ *bstr = ::SysAllocString(src);
+ return (*bstr != 0) ? S_OK : E_OUTOFMEMORY;
+}
+
+class CMyComBSTR
+{
+public:
+ BSTR m_str;
+ CMyComBSTR(): m_str(NULL) {}
+ CMyComBSTR(LPCOLESTR src) { m_str = ::SysAllocString(src); }
+ // CMyComBSTR(int nSize) { m_str = ::SysAllocStringLen(NULL, nSize); }
+ // CMyComBSTR(int nSize, LPCOLESTR sz) { m_str = ::SysAllocStringLen(sz, nSize); }
+ CMyComBSTR(const CMyComBSTR& src) { m_str = src.MyCopy(); }
+ /*
+ CMyComBSTR(REFGUID src)
+ {
+ LPOLESTR szGuid;
+ StringFromCLSID(src, &szGuid);
+ m_str = ::SysAllocString(szGuid);
+ CoTaskMemFree(szGuid);
+ }
+ */
+ ~CMyComBSTR() { ::SysFreeString(m_str); }
+ CMyComBSTR& operator=(const CMyComBSTR& src)
+ {
+ if (m_str != src.m_str)
+ {
+ if (m_str)
+ ::SysFreeString(m_str);
+ m_str = src.MyCopy();
+ }
+ return *this;
+ }
+ CMyComBSTR& operator=(LPCOLESTR src)
+ {
+ ::SysFreeString(m_str);
+ m_str = ::SysAllocString(src);
+ return *this;
+ }
+ unsigned int Length() const { return ::SysStringLen(m_str); }
+ operator BSTR() const { return m_str; }
+ BSTR* operator&() { return &m_str; }
+ BSTR MyCopy() const
+ {
+ int byteLen = ::SysStringByteLen(m_str);
+ BSTR res = ::SysAllocStringByteLen(NULL, byteLen);
+ memcpy(res, m_str, byteLen);
+ return res;
+ }
+ /*
+ void Attach(BSTR src) { m_str = src; }
+ BSTR Detach()
+ {
+ BSTR s = m_str;
+ m_str = NULL;
+ return s;
+ }
+ */
+ void Empty()
+ {
+ ::SysFreeString(m_str);
+ m_str = NULL;
+ }
+ bool operator!() const { return (m_str == NULL); }
+};
+
+//////////////////////////////////////////////////////////
+
+class CMyUnknownImp
+{
+public:
+ ULONG __m_RefCount;
+ CMyUnknownImp(): __m_RefCount(0) {}
+};
+
+#define MY_QUERYINTERFACE_BEGIN STDMETHOD(QueryInterface) \
+ (REFGUID iid, void **outObject) {
+
+#define MY_QUERYINTERFACE_ENTRY(i) if (iid == IID_ ## i) \
+ { *outObject = (void *)(i *)this; AddRef(); return S_OK; }
+
+#define MY_QUERYINTERFACE_ENTRY_UNKNOWN(i) if (iid == IID_IUnknown) \
+ { *outObject = (void *)(IUnknown *)(i *)this; AddRef(); return S_OK; }
+
+#define MY_QUERYINTERFACE_BEGIN2(i) MY_QUERYINTERFACE_BEGIN \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i) \
+ MY_QUERYINTERFACE_ENTRY(i)
+
+#define MY_QUERYINTERFACE_END return E_NOINTERFACE; }
+
+#define MY_ADDREF_RELEASE \
+STDMETHOD_(ULONG, AddRef)() { return ++__m_RefCount; } \
+STDMETHOD_(ULONG, Release)() { if (--__m_RefCount != 0) \
+ return __m_RefCount; delete this; return 0; }
+
+#define MY_UNKNOWN_IMP_SPEC(i) \
+ MY_QUERYINTERFACE_BEGIN \
+ i \
+ MY_QUERYINTERFACE_END \
+ MY_ADDREF_RELEASE
+
+
+#define MY_UNKNOWN_IMP MY_QUERYINTERFACE_BEGIN \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(IUnknown) \
+ MY_QUERYINTERFACE_END \
+ MY_ADDREF_RELEASE
+
+#define MY_UNKNOWN_IMP1(i) MY_UNKNOWN_IMP_SPEC( \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i) \
+ MY_QUERYINTERFACE_ENTRY(i) \
+ )
+
+#define MY_UNKNOWN_IMP2(i1, i2) MY_UNKNOWN_IMP_SPEC( \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i1) \
+ MY_QUERYINTERFACE_ENTRY(i1) \
+ MY_QUERYINTERFACE_ENTRY(i2) \
+ )
+
+#define MY_UNKNOWN_IMP3(i1, i2, i3) MY_UNKNOWN_IMP_SPEC( \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i1) \
+ MY_QUERYINTERFACE_ENTRY(i1) \
+ MY_QUERYINTERFACE_ENTRY(i2) \
+ MY_QUERYINTERFACE_ENTRY(i3) \
+ )
+
+#define MY_UNKNOWN_IMP4(i1, i2, i3, i4) MY_UNKNOWN_IMP_SPEC( \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i1) \
+ MY_QUERYINTERFACE_ENTRY(i1) \
+ MY_QUERYINTERFACE_ENTRY(i2) \
+ MY_QUERYINTERFACE_ENTRY(i3) \
+ MY_QUERYINTERFACE_ENTRY(i4) \
+ )
+
+#define MY_UNKNOWN_IMP5(i1, i2, i3, i4, i5) MY_UNKNOWN_IMP_SPEC( \
+ MY_QUERYINTERFACE_ENTRY_UNKNOWN(i1) \
+ MY_QUERYINTERFACE_ENTRY(i1) \
+ MY_QUERYINTERFACE_ENTRY(i2) \
+ MY_QUERYINTERFACE_ENTRY(i3) \
+ MY_QUERYINTERFACE_ENTRY(i4) \
+ MY_QUERYINTERFACE_ENTRY(i5) \
+ )
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyException.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyException.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyException.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyException.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,14 @@
+// Common/Exception.h
+
+#ifndef __COMMON_EXCEPTION_H
+#define __COMMON_EXCEPTION_H
+
+#include "MyWindows.h"
+
+struct CSystemException
+{
+ HRESULT ErrorCode;
+ CSystemException(HRESULT errorCode): ErrorCode(errorCode) {}
+};
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyGuidDef.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyGuidDef.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyGuidDef.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyGuidDef.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,54 @@
+// Common/MyGuidDef.h
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+
+#include "Types.h"
+
+typedef struct {
+ UInt32 Data1;
+ UInt16 Data2;
+ UInt16 Data3;
+ unsigned char Data4[8];
+} GUID;
+
+#ifdef __cplusplus
+#define REFGUID const GUID &
+#else
+#define REFGUID const GUID *
+#endif
+
+#define REFCLSID REFGUID
+#define REFIID REFGUID
+
+#ifdef __cplusplus
+inline int operator==(REFGUID g1, REFGUID g2)
+{
+ for (int i = 0; i < (int)sizeof(g1); i++)
+ if (((unsigned char *)&g1)[i] != ((unsigned char *)&g2)[i])
+ return 0;
+ return 1;
+}
+inline int operator!=(REFGUID g1, REFGUID g2) { return !(g1 == g2); }
+#endif
+
+#ifdef __cplusplus
+ #define MY_EXTERN_C extern "C"
+#else
+ #define MY_EXTERN_C extern
+#endif
+
+#endif
+
+
+#ifdef DEFINE_GUID
+#undef DEFINE_GUID
+#endif
+
+#ifdef INITGUID
+ #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ MY_EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
+#else
+ #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ MY_EXTERN_C const GUID name
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyInitGuid.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyInitGuid.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyInitGuid.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyInitGuid.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,22 @@
+// Common/MyInitGuid.h
+
+#ifndef __COMMON_MY_INITGUID_H
+#define __COMMON_MY_INITGUID_H
+
+#ifdef _WIN32
+#ifdef UNDER_CE
+#include <basetyps.h>
+#endif
+#include <initguid.h>
+#ifdef UNDER_CE
+DEFINE_GUID(IID_IUnknown,
+0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
+#endif
+#else
+#define INITGUID
+#include "MyGuidDef.h"
+DEFINE_GUID(IID_IUnknown,
+0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
+#endif
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,140 @@
+// MyMap.cpp
+
+#include "StdAfx.h"
+
+#include "MyMap.h"
+
+static const unsigned kNumBitsMax = sizeof(UInt32) * 8;
+
+static UInt32 GetSubBits(UInt32 value, unsigned startPos, unsigned numBits)
+{
+ if (startPos == sizeof(value) * 8)
+ return 0;
+ value >>= startPos;
+ if (numBits == sizeof(value) * 8)
+ return value;
+ return value & (((UInt32)1 << numBits) - 1);
+}
+
+static inline unsigned GetSubBit(UInt32 v, unsigned n) { return (unsigned)(v >> n) & 1; }
+
+bool CMap32::Find(UInt32 key, UInt32 &valueRes) const
+{
+ valueRes = (UInt32)(Int32)-1;
+ if (Nodes.Size() == 0)
+ return false;
+ if (Nodes.Size() == 1)
+ {
+ const CNode &n = Nodes[0];
+ if (n.Len == kNumBitsMax)
+ {
+ valueRes = n.Values[0];
+ return (key == n.Key);
+ }
+ }
+
+ int cur = 0;
+ unsigned bitPos = kNumBitsMax;
+ for (;;)
+ {
+ const CNode &n = Nodes[cur];
+ bitPos -= n.Len;
+ if (GetSubBits(key, bitPos, n.Len) != GetSubBits(n.Key, bitPos, n.Len))
+ return false;
+ unsigned bit = GetSubBit(key, --bitPos);
+ if (n.IsLeaf[bit])
+ {
+ valueRes = n.Values[bit];
+ return (key == n.Keys[bit]);
+ }
+ cur = (int)n.Keys[bit];
+ }
+}
+
+bool CMap32::Set(UInt32 key, UInt32 value)
+{
+ if (Nodes.Size() == 0)
+ {
+ CNode n;
+ n.Key = n.Keys[0] = n.Keys[1] = key;
+ n.Values[0] = n.Values[1] = value;
+ n.IsLeaf[0] = n.IsLeaf[1] = 1;
+ n.Len = kNumBitsMax;
+ Nodes.Add(n);
+ return false;
+ }
+ if (Nodes.Size() == 1)
+ {
+ CNode &n = Nodes[0];
+ if (n.Len == kNumBitsMax)
+ {
+ if (key == n.Key)
+ {
+ n.Values[0] = n.Values[1] = value;
+ return true;
+ }
+ unsigned i = kNumBitsMax - 1;
+ for (;GetSubBit(key, i) == GetSubBit(n.Key, i); i--);
+ n.Len = (UInt16)(kNumBitsMax - (1 + i));
+ unsigned newBit = GetSubBit(key, i);
+ n.Values[newBit] = value;
+ n.Keys[newBit] = key;
+ return false;
+ }
+ }
+
+ int cur = 0;
+ unsigned bitPos = kNumBitsMax;
+ for (;;)
+ {
+ CNode &n = Nodes[cur];
+ bitPos -= n.Len;
+ if (GetSubBits(key, bitPos, n.Len) != GetSubBits(n.Key, bitPos, n.Len))
+ {
+ unsigned i = n.Len - 1;
+ for (; GetSubBit(key, bitPos + i) == GetSubBit(n.Key, bitPos + i); i--);
+
+ CNode e2(n);
+ e2.Len = (UInt16)i;
+
+ n.Len = (UInt16)(n.Len - (1 + i));
+ unsigned newBit = GetSubBit(key, bitPos + i);
+ n.Values[newBit] = value;
+ n.IsLeaf[newBit] = 1;
+ n.IsLeaf[1 - newBit] = 0;
+ n.Keys[newBit] = key;
+ n.Keys[1 - newBit] = Nodes.Size();
+ Nodes.Add(e2);
+ return false;
+ }
+ unsigned bit = GetSubBit(key, --bitPos);
+
+ if (n.IsLeaf[bit])
+ {
+ if (key == n.Keys[bit])
+ {
+ n.Values[bit] = value;
+ return true;
+ }
+ unsigned i = bitPos - 1;
+ for (;GetSubBit(key, i) == GetSubBit(n.Keys[bit], i); i--);
+
+ CNode e2;
+
+ unsigned newBit = GetSubBit(key, i);
+ e2.Values[newBit] = value;
+ e2.Values[1 - newBit] = n.Values[bit];
+ e2.IsLeaf[newBit] = e2.IsLeaf[1 - newBit] = 1;
+ e2.Keys[newBit] = key;
+ e2.Keys[1 - newBit] = e2.Key = n.Keys[bit];
+ e2.Len = (UInt16)(bitPos - (1 + i));
+
+ n.IsLeaf[bit] = 0;
+ n.Keys[bit] = Nodes.Size();
+
+ Nodes.Add(e2);
+ return false;
+ }
+ cur = (int)n.Keys[bit];
+ }
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyMap.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,28 @@
+// MyMap.h
+
+#ifndef __COMMON_MYMAP_H
+#define __COMMON_MYMAP_H
+
+#include "MyVector.h"
+#include "Types.h"
+
+class CMap32
+{
+ struct CNode
+ {
+ UInt32 Key;
+ UInt32 Keys[2];
+ UInt32 Values[2];
+ UInt16 Len;
+ Byte IsLeaf[2];
+ };
+ CRecordVector<CNode> Nodes;
+
+public:
+
+ void Clear() { Nodes.Clear(); }
+ bool Find(UInt32 key, UInt32 &valueRes) const;
+ bool Set(UInt32 key, UInt32 value); // returns true, if there is such key already
+};
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,206 @@
+// Common/String.cpp
+
+#include "StdAfx.h"
+
+#include <ctype.h>
+#ifdef ENV_HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+#include "StringConvert.h" // FIXED
+
+#include "MyString.h" // FIXED to avoid confusion with <string.h> on some filesystems
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef ENV_HAVE_WCHAR__H
+#include <wchar.h>
+#endif
+
+#include <limits.h>
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 1024
+#endif
+
+#include "myPrivate.h"
+
+LPSTR WINAPI CharPrevA( LPCSTR start, LPCSTR ptr ) { // OK for MBS
+ while (*start && (start < ptr)) {
+ LPCSTR next = CharNextA( start );
+ if (next >= ptr)
+ break;
+ start = next;
+ }
+ return (LPSTR)start;
+}
+
+LPSTR WINAPI CharNextA( LPCSTR ptr ) {
+ if (!*ptr)
+ return (LPSTR)ptr;
+// #ifdef ENV_HAVE_MBRTOWC
+// if (global_use_utf16_conversion)
+// {
+// wchar_t wc;
+// size_t len = mbrtowc(&wc,ptr,MB_LEN_MAX,0); // mbrtowc stales on some configurations.
+// if (len >= 1) return (LPSTR)(ptr + len);
+// printf("INTERNAL ERROR - CharNextA\n");
+// exit(EXIT_FAILURE);
+// } else {
+// return (LPSTR)(ptr + 1);
+// }
+//#else
+ return (LPSTR)(ptr + 1); // p7zip search only for ASCII characters like '/' so no need to worry about current locale
+//#endif
+}
+
+char MyCharLower(char c)
+{
+ int r = c & 0xFF;
+
+ return tolower(r);
+}
+
+wchar_t MyCharLower(wchar_t c)
+{
+#ifdef ENV_HAVE_TOWUPPER
+ return towlower(c);
+#else
+ int ret = c;
+ if ((ret >= 1) && (ret <256)) ret = tolower(ret);
+ return (wchar_t)ret;
+#endif
+}
+
+char * MyStringLower(char *s)
+{
+ if (s == 0)
+ return 0;
+ char *ret = s;
+ while (*s)
+ {
+ *s = MyCharLower(*s);
+ s++;
+ }
+ return ret;
+}
+
+wchar_t * MyStringLower(wchar_t *s)
+{
+ if (s == 0)
+ return 0;
+ wchar_t *ret = s;
+ while (*s)
+ {
+ *s = MyCharLower(*s);
+ s++;
+ }
+ return ret;
+}
+
+wchar_t MyCharUpper(wchar_t c)
+{
+#ifdef ENV_HAVE_TOWUPPER
+ return towupper(c);
+#else
+ int ret = c;
+ if ((ret >= 1) && (ret <256)) ret = toupper(ret);
+ return (wchar_t)ret;
+#endif
+}
+
+wchar_t * MyStringUpper(wchar_t *s)
+{
+ if (s == 0)
+ return 0;
+ wchar_t *ret = s;
+ while (*s)
+ {
+ *s = MyCharUpper(*s);
+ s++;
+ }
+ return ret;
+}
+
+int MyStringCompare(const char *s1, const char *s2)
+{
+ while (true)
+ {
+ unsigned char c1 = (unsigned char)*s1++;
+ unsigned char c2 = (unsigned char)*s2++;
+ if (c1 < c2) return -1;
+ if (c1 > c2) return 1;
+ if (c1 == 0) return 0;
+ }
+}
+
+int MyStringCompare(const wchar_t *s1, const wchar_t *s2)
+{
+ while (true)
+ {
+ wchar_t c1 = *s1++;
+ wchar_t c2 = *s2++;
+ if (c1 < c2) return -1;
+ if (c1 > c2) return 1;
+ if (c1 == 0) return 0;
+ }
+}
+
+int MyStringCompareNoCase(const wchar_t *s1, const wchar_t *s2)
+{
+ while (true)
+ {
+ wchar_t c1 = *s1++;
+ wchar_t c2 = *s2++;
+ if (c1 != c2)
+ {
+ wchar_t u1 = MyCharUpper(c1);
+ wchar_t u2 = MyCharUpper(c2);
+ if (u1 < u2) return -1;
+ if (u1 > u2) return 1;
+ }
+ if (c1 == 0) return 0;
+ }
+}
+
+int MyStringCompareNoCase(const char *s1, const char *s2)
+{
+ return MyStringCompareNoCase(MultiByteToUnicodeString(s1), MultiByteToUnicodeString(s2));
+}
+
+
+#ifndef ENV_HAVE_WCHAR__H
+
+EXTERN_C_BEGIN
+
+size_t wcslen(const wchar_t *s)
+{
+ register const wchar_t *p;
+
+ for (p=s ; *p ; p++);
+
+ return p - s;
+}
+
+wchar_t *wcscpy(wchar_t * s1, const wchar_t * s2)
+{
+ register wchar_t *s = s1;
+
+ while ( (*s++ = *s2++) != 0 );
+
+ return s1;
+}
+
+wchar_t *wcscat(wchar_t * s1, const wchar_t * s2)
+{
+ register wchar_t *s = s1;
+
+ while (*s++);
+ --s;
+ while ((*s++ = *s2++) != 0);
+
+ return s1;
+}
+
+EXTERN_C_END
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyString.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,601 @@
+// Common/String.h
+
+#ifndef __COMMON_STRING_H
+#define __COMMON_STRING_H
+
+#include <string.h>
+// #include <wchar.h>
+
+#include "MyVector.h"
+
+LPSTR WINAPI CharNextA( LPCSTR ptr );
+LPSTR WINAPI CharPrevA( LPCSTR start, LPCSTR ptr );
+
+template <class T>
+inline int MyStringLen(const T *s)
+{
+ int i;
+ for (i = 0; s[i] != '\0'; i++);
+ return i;
+}
+
+template <class T>
+inline T * MyStringCopy(T *dest, const T *src)
+{
+ T *destStart = dest;
+ while ((*dest++ = *src++) != 0);
+ return destStart;
+}
+
+inline wchar_t* MyStringGetNextCharPointer(wchar_t *p)
+ { return (p + 1); }
+inline const wchar_t* MyStringGetNextCharPointer(const wchar_t *p)
+ { return (p + 1); }
+inline wchar_t* MyStringGetPrevCharPointer(const wchar_t *, wchar_t *p)
+ { return (p - 1); }
+inline const wchar_t* MyStringGetPrevCharPointer(const wchar_t *, const wchar_t *p)
+ { return (p - 1); }
+
+wchar_t MyCharUpper(wchar_t c);
+char * MyStringUpper(char *s);
+wchar_t * MyStringUpper(wchar_t *s);
+
+char MyCharLower(char c);
+char * MyStringLower(char *s);
+wchar_t MyCharLower(wchar_t c);
+wchar_t * MyStringLower(wchar_t *s);
+
+
+inline char* MyStringGetPrevCharPointer(char *base, char *p)
+ { return CharPrevA(base, p); }
+inline const char* MyStringGetPrevCharPointer(const char *base, const char *p)
+ { return CharPrevA(base, p); }
+inline char* MyStringGetNextCharPointer(char *p)
+ { return CharNextA(p); }
+inline const char* MyStringGetNextCharPointer(const char *p)
+ { return CharNextA(p); }
+
+//////////////////////////////////////
+// Compare
+
+/*
+#ifndef _WIN32_WCE
+int MyStringCollate(const char *s1, const char *s2);
+int MyStringCollateNoCase(const char *s1, const char *s2);
+#endif
+int MyStringCollate(const wchar_t *s1, const wchar_t *s2);
+int MyStringCollateNoCase(const wchar_t *s1, const wchar_t *s2);
+*/
+
+int MyStringCompare(const char *s1, const char *s2);
+int MyStringCompare(const wchar_t *s1, const wchar_t *s2);
+
+// int MyStringCompareNoCase(const char *s1, const char *s2);
+int MyStringCompareNoCase(const wchar_t *s1, const wchar_t *s2);
+
+template <class T>
+class CStringBase
+{
+ void TrimLeftWithCharSet(const CStringBase &charSet)
+ {
+ const T *p = _chars;
+ while (charSet.Find(*p) >= 0 && (*p != 0))
+ p = GetNextCharPointer(p);
+ Delete(0, (int)(p - _chars));
+ }
+ void TrimRightWithCharSet(const CStringBase &charSet)
+ {
+ const T *p = _chars;
+ const T *pLast = NULL;
+ while (*p != 0)
+ {
+ if (charSet.Find(*p) >= 0)
+ {
+ if (pLast == NULL)
+ pLast = p;
+ }
+ else
+ pLast = NULL;
+ p = GetNextCharPointer(p);
+ }
+ if (pLast != NULL)
+ {
+ int i = (int)(pLast - _chars);
+ Delete(i, _length - i);
+ }
+
+ }
+ void MoveItems(int destIndex, int srcIndex)
+ {
+ memmove(_chars + destIndex, _chars + srcIndex,
+ sizeof(T) * (_length - srcIndex + 1));
+ }
+
+ void InsertSpace(int &index, int size)
+ {
+ CorrectIndex(index);
+ GrowLength(size);
+ MoveItems(index + size, index);
+ }
+
+ static T *GetNextCharPointer(T *p)
+ { return MyStringGetNextCharPointer(p); }
+ static const T *GetNextCharPointer(const T *p)
+ { return MyStringGetNextCharPointer(p); }
+ static T *GetPrevCharPointer(T *base, T *p)
+ { return MyStringGetPrevCharPointer(base, p); }
+ static const T *GetPrevCharPointer(const T *base, const T *p)
+ { return MyStringGetPrevCharPointer(base, p); }
+protected:
+ T *_chars;
+ int _length;
+ int _capacity;
+
+ void SetCapacity(int newCapacity)
+ {
+ int realCapacity = newCapacity + 1;
+ if (realCapacity == _capacity)
+ return;
+ /*
+ const int kMaxStringSize = 0x20000000;
+ #ifndef _WIN32_WCE
+ if (newCapacity > kMaxStringSize || newCapacity < _length)
+ throw 1052337;
+ #endif
+ */
+ T *newBuffer = new T[realCapacity];
+ if (_capacity > 0)
+ {
+ for (int i = 0; i < _length; i++)
+ newBuffer[i] = _chars[i];
+ delete []_chars;
+ }
+ _chars = newBuffer;
+ _chars[_length] = 0;
+ _capacity = realCapacity;
+ }
+
+ void GrowLength(int n)
+ {
+ int freeSize = _capacity - _length - 1;
+ if (n <= freeSize)
+ return;
+ int delta;
+ if (_capacity > 64)
+ delta = _capacity / 2;
+ else if (_capacity > 8)
+ delta = 16;
+ else
+ delta = 4;
+ if (freeSize + delta < n)
+ delta = n - freeSize;
+ SetCapacity(_capacity + delta);
+ }
+
+ void CorrectIndex(int &index) const
+ {
+ if (index > _length)
+ index = _length;
+ }
+
+public:
+ CStringBase(): _chars(0), _length(0), _capacity(0) { SetCapacity(3); }
+ CStringBase(T c): _chars(0), _length(0), _capacity(0)
+ {
+ SetCapacity(1);
+ _chars[0] = c;
+ _chars[1] = 0;
+ _length = 1;
+ }
+ CStringBase(const T *chars): _chars(0), _length(0), _capacity(0)
+ {
+ int length = MyStringLen(chars);
+ SetCapacity(length);
+ MyStringCopy(_chars, chars); // can be optimized by memove()
+ _length = length;
+ }
+ CStringBase(const CStringBase &s): _chars(0), _length(0), _capacity(0)
+ {
+ SetCapacity(s._length);
+ MyStringCopy(_chars, s._chars);
+ _length = s._length;
+ }
+ ~CStringBase() { delete []_chars; }
+
+ operator const T*() const { return _chars;}
+
+ T Back() const { return _chars[_length - 1]; }
+
+ // The minimum size of the character buffer in characters.
+ // This value does not include space for a null terminator.
+ T* GetBuffer(int minBufLength)
+ {
+ if (minBufLength >= _capacity)
+ SetCapacity(minBufLength);
+ return _chars;
+ }
+ void ReleaseBuffer() { ReleaseBuffer(MyStringLen(_chars)); }
+ void ReleaseBuffer(int newLength)
+ {
+ /*
+ #ifndef _WIN32_WCE
+ if (newLength >= _capacity)
+ throw 282217;
+ #endif
+ */
+ _chars[newLength] = 0;
+ _length = newLength;
+ }
+
+ CStringBase& operator=(T c)
+ {
+ Empty();
+ SetCapacity(1);
+ _chars[0] = c;
+ _chars[1] = 0;
+ _length = 1;
+ return *this;
+ }
+ CStringBase& operator=(const T *chars)
+ {
+ Empty();
+ int length = MyStringLen(chars);
+ SetCapacity(length);
+ MyStringCopy(_chars, chars);
+ _length = length;
+ return *this;
+ }
+ CStringBase& operator=(const CStringBase& s)
+ {
+ if (&s == this)
+ return *this;
+ Empty();
+ SetCapacity(s._length);
+ MyStringCopy(_chars, s._chars);
+ _length = s._length;
+ return *this;
+ }
+
+ CStringBase& operator+=(T c)
+ {
+ GrowLength(1);
+ _chars[_length] = c;
+ _chars[++_length] = 0;
+ return *this;
+ }
+ CStringBase& operator+=(const T *s)
+ {
+ int len = MyStringLen(s);
+ GrowLength(len);
+ MyStringCopy(_chars + _length, s);
+ _length += len;
+ return *this;
+ }
+ CStringBase& operator+=(const CStringBase &s)
+ {
+ GrowLength(s._length);
+ MyStringCopy(_chars + _length, s._chars);
+ _length += s._length;
+ return *this;
+ }
+ void Empty()
+ {
+ _length = 0;
+ _chars[0] = 0;
+ }
+ int Length() const { return _length; }
+ bool IsEmpty() const { return (_length == 0); }
+
+ CStringBase Mid(int startIndex) const
+ { return Mid(startIndex, _length - startIndex); }
+ CStringBase Mid(int startIndex, int count ) const
+ {
+ if (startIndex + count > _length)
+ count = _length - startIndex;
+
+ if (startIndex == 0 && startIndex + count == _length)
+ return *this;
+
+ CStringBase<T> result;
+ result.SetCapacity(count);
+ // MyStringNCopy(result._chars, _chars + startIndex, count);
+ for (int i = 0; i < count; i++)
+ result._chars[i] = _chars[startIndex + i];
+ result._chars[count] = 0;
+ result._length = count;
+ return result;
+ }
+ CStringBase Left(int count) const
+ { return Mid(0, count); }
+ CStringBase Right(int count) const
+ {
+ if (count > _length)
+ count = _length;
+ return Mid(_length - count, count);
+ }
+
+ void MakeUpper()
+ { MyStringUpper(_chars); }
+ void MakeLower()
+ { MyStringLower(_chars); }
+
+ int Compare(const CStringBase& s) const
+ { return MyStringCompare(_chars, s._chars); }
+
+ int Compare(const T *s) const
+ { return MyStringCompare(_chars, s); }
+
+ int CompareNoCase(const CStringBase& s) const
+ { return MyStringCompareNoCase(_chars, s._chars); }
+
+ int CompareNoCase(const T *s) const
+ { return MyStringCompareNoCase(_chars, s); }
+
+ /*
+ int Collate(const CStringBase& s) const
+ { return MyStringCollate(_chars, s._chars); }
+ int CollateNoCase(const CStringBase& s) const
+ { return MyStringCollateNoCase(_chars, s._chars); }
+ */
+
+ int Find(T c) const { return Find(c, 0); }
+ int Find(T c, int startIndex) const
+ {
+ T *p = _chars + startIndex;
+ for (;;)
+ {
+ if (*p == c)
+ return (int)(p - _chars);
+ if (*p == 0)
+ return -1;
+ p = GetNextCharPointer(p);
+ }
+ }
+ int Find(const CStringBase &s) const { return Find(s, 0); }
+ int Find(const CStringBase &s, int startIndex) const
+ {
+ if (s.IsEmpty())
+ return startIndex;
+ for (; startIndex < _length; startIndex++)
+ {
+ int j;
+ for (j = 0; j < s._length && startIndex + j < _length; j++)
+ if (_chars[startIndex+j] != s._chars[j])
+ break;
+ if (j == s._length)
+ return startIndex;
+ }
+ return -1;
+ }
+ int ReverseFind(T c) const
+ {
+ if (_length == 0)
+ return -1;
+ T *p = _chars + _length - 1;
+ for (;;)
+ {
+ if (*p == c)
+ return (int)(p - _chars);
+ if (p == _chars)
+ return -1;
+ p = GetPrevCharPointer(_chars, p);
+ }
+ }
+ int FindOneOf(const CStringBase &s) const
+ {
+ for (int i = 0; i < _length; i++)
+ if (s.Find(_chars[i]) >= 0)
+ return i;
+ return -1;
+ }
+
+ void TrimLeft(T c)
+ {
+ const T *p = _chars;
+ while (c == *p)
+ p = GetNextCharPointer(p);
+ Delete(0, p - _chars);
+ }
+ private:
+ CStringBase GetTrimDefaultCharSet()
+ {
+ CStringBase<T> charSet;
+ charSet += (T)' ';
+ charSet += (T)'\n';
+ charSet += (T)'\t';
+ return charSet;
+ }
+ public:
+
+ void TrimLeft()
+ {
+ TrimLeftWithCharSet(GetTrimDefaultCharSet());
+ }
+ void TrimRight()
+ {
+ TrimRightWithCharSet(GetTrimDefaultCharSet());
+ }
+ void TrimRight(T c)
+ {
+ const T *p = _chars;
+ const T *pLast = NULL;
+ while (*p != 0)
+ {
+ if (*p == c)
+ {
+ if (pLast == NULL)
+ pLast = p;
+ }
+ else
+ pLast = NULL;
+ p = GetNextCharPointer(p);
+ }
+ if (pLast != NULL)
+ {
+ int i = pLast - _chars;
+ Delete(i, _length - i);
+ }
+ }
+ void Trim()
+ {
+ TrimRight();
+ TrimLeft();
+ }
+
+ int Insert(int index, T c)
+ {
+ InsertSpace(index, 1);
+ _chars[index] = c;
+ _length++;
+ return _length;
+ }
+ int Insert(int index, const CStringBase &s)
+ {
+ CorrectIndex(index);
+ if (s.IsEmpty())
+ return _length;
+ int numInsertChars = s.Length();
+ InsertSpace(index, numInsertChars);
+ for (int i = 0; i < numInsertChars; i++)
+ _chars[index + i] = s[i];
+ _length += numInsertChars;
+ return _length;
+ }
+
+ // !!!!!!!!!!!!!!! test it if newChar = '\0'
+ int Replace(T oldChar, T newChar)
+ {
+ if (oldChar == newChar)
+ return 0;
+ int number = 0;
+ int pos = 0;
+ while (pos < Length())
+ {
+ pos = Find(oldChar, pos);
+ if (pos < 0)
+ break;
+ _chars[pos] = newChar;
+ pos++;
+ number++;
+ }
+ return number;
+ }
+ int Replace(const CStringBase &oldString, const CStringBase &newString)
+ {
+ if (oldString.IsEmpty())
+ return 0;
+ if (oldString == newString)
+ return 0;
+ int oldStringLength = oldString.Length();
+ int newStringLength = newString.Length();
+ int number = 0;
+ int pos = 0;
+ while (pos < _length)
+ {
+ pos = Find(oldString, pos);
+ if (pos < 0)
+ break;
+ Delete(pos, oldStringLength);
+ Insert(pos, newString);
+ pos += newStringLength;
+ number++;
+ }
+ return number;
+ }
+ int Delete(int index, int count = 1 )
+ {
+ if (index + count > _length)
+ count = _length - index;
+ if (count > 0)
+ {
+ MoveItems(index, index + count);
+ _length -= count;
+ }
+ return _length;
+ }
+ void DeleteBack() { Delete(_length - 1); }
+};
+
+template <class T>
+CStringBase<T> operator+(const CStringBase<T>& s1, const CStringBase<T>& s2)
+{
+ CStringBase<T> result(s1);
+ result += s2;
+ return result;
+}
+
+template <class T>
+CStringBase<T> operator+(const CStringBase<T>& s, T c)
+{
+ CStringBase<T> result(s);
+ result += c;
+ return result;
+}
+
+template <class T>
+CStringBase<T> operator+(T c, const CStringBase<T>& s)
+{
+ CStringBase<T> result(c);
+ result += s;
+ return result;
+}
+
+template <class T>
+CStringBase<T> operator+(const CStringBase<T>& s, const T * chars)
+{
+ CStringBase<T> result(s);
+ result += chars;
+ return result;
+}
+
+template <class T>
+CStringBase<T> operator+(const T * chars, const CStringBase<T>& s)
+{
+ CStringBase<T> result(chars);
+ result += s;
+ return result;
+}
+
+template <class T>
+bool operator==(const CStringBase<T>& s1, const CStringBase<T>& s2)
+ { return (s1.Compare(s2) == 0); }
+
+template <class T>
+bool operator<(const CStringBase<T>& s1, const CStringBase<T>& s2)
+ { return (s1.Compare(s2) < 0); }
+
+template <class T>
+bool operator==(const T *s1, const CStringBase<T>& s2)
+ { return (s2.Compare(s1) == 0); }
+
+template <class T>
+bool operator==(const CStringBase<T>& s1, const T *s2)
+ { return (s1.Compare(s2) == 0); }
+
+template <class T>
+bool operator!=(const CStringBase<T>& s1, const CStringBase<T>& s2)
+ { return (s1.Compare(s2) != 0); }
+
+template <class T>
+bool operator!=(const T *s1, const CStringBase<T>& s2)
+ { return (s2.Compare(s1) != 0); }
+
+template <class T>
+bool operator!=(const CStringBase<T>& s1, const T *s2)
+ { return (s1.Compare(s2) != 0); }
+
+typedef CStringBase<char> AString;
+typedef CStringBase<wchar_t> UString;
+
+typedef CObjectVector<AString> AStringVector;
+typedef CObjectVector<UString> UStringVector;
+
+#ifdef _UNICODE
+ typedef UString CSysString;
+#else
+ typedef AString CSysString;
+#endif
+
+typedef CObjectVector<CSysString> CSysStringVector;
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyUnknown.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyUnknown.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyUnknown.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyUnknown.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,13 @@
+// MyUnknown.h
+
+#ifndef __MY_UNKNOWN_H
+#define __MY_UNKNOWN_H
+
+#ifdef _WIN32
+#include <basetyps.h>
+#include <unknwn.h>
+#else
+#include "MyWindows.h"
+#endif
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,87 @@
+// Common/MyVector.cpp
+
+#include "StdAfx.h"
+
+#include <string.h>
+
+#include "MyVector.h"
+
+CBaseRecordVector::~CBaseRecordVector() { ClearAndFree(); }
+
+void CBaseRecordVector::ClearAndFree()
+{
+ Clear();
+ delete []((unsigned char *)_items);
+ _capacity = 0;
+ _size = 0;
+ _items = 0;
+}
+
+void CBaseRecordVector::Clear() { DeleteFrom(0); }
+void CBaseRecordVector::DeleteBack() { Delete(_size - 1); }
+void CBaseRecordVector::DeleteFrom(int index) { Delete(index, _size - index); }
+
+void CBaseRecordVector::ReserveOnePosition()
+{
+ if (_size != _capacity)
+ return;
+ unsigned delta = 1;
+ if (_capacity >= 64)
+ delta = (unsigned)_capacity / 4;
+ else if (_capacity >= 8)
+ delta = 8;
+ Reserve(_capacity + (int)delta);
+}
+
+void CBaseRecordVector::Reserve(int newCapacity)
+{
+ // if (newCapacity <= _capacity)
+ if (newCapacity == _capacity)
+ return;
+ if ((unsigned)newCapacity >= ((unsigned)1 << (sizeof(unsigned) * 8 - 1)))
+ throw 1052353;
+ size_t newSize = (size_t)(unsigned)newCapacity * _itemSize;
+ if (newSize / _itemSize != (size_t)(unsigned)newCapacity)
+ throw 1052354;
+ unsigned char *p = NULL;
+ if (newSize > 0)
+ {
+ p = new unsigned char[newSize];
+ if (p == 0)
+ throw 1052355;
+ int numRecordsToMove = (_size < newCapacity ? _size : newCapacity);
+ memcpy(p, _items, _itemSize * numRecordsToMove);
+ }
+ delete [](unsigned char *)_items;
+ _items = p;
+ _capacity = newCapacity;
+}
+
+void CBaseRecordVector::ReserveDown()
+{
+ Reserve(_size);
+}
+
+void CBaseRecordVector::MoveItems(int destIndex, int srcIndex)
+{
+ memmove(((unsigned char *)_items) + destIndex * _itemSize,
+ ((unsigned char *)_items) + srcIndex * _itemSize,
+ _itemSize * (_size - srcIndex));
+}
+
+void CBaseRecordVector::InsertOneItem(int index)
+{
+ ReserveOnePosition();
+ MoveItems(index + 1, index);
+ _size++;
+}
+
+void CBaseRecordVector::Delete(int index, int num)
+{
+ TestIndexAndCorrectNum(index, num);
+ if (num > 0)
+ {
+ MoveItems(index, index + num);
+ _size -= num;
+ }
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyVector.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,266 @@
+// Common/Vector.h
+
+#ifndef __COMMON_VECTOR_H
+#define __COMMON_VECTOR_H
+
+#include "Defs.h"
+
+class CBaseRecordVector
+{
+ void MoveItems(int destIndex, int srcIndex);
+protected:
+ int _capacity;
+ int _size;
+ void *_items;
+ size_t _itemSize;
+
+ void ReserveOnePosition();
+ void InsertOneItem(int index);
+ void TestIndexAndCorrectNum(int index, int &num) const
+ { if (index + num > _size) num = _size - index; }
+public:
+ CBaseRecordVector(size_t itemSize): _capacity(0), _size(0), _items(0), _itemSize(itemSize) {}
+ virtual ~CBaseRecordVector();
+ void ClearAndFree();
+ int Size() const { return _size; }
+ bool IsEmpty() const { return (_size == 0); }
+ void Reserve(int newCapacity);
+ void ReserveDown();
+ virtual void Delete(int index, int num = 1);
+ void Clear();
+ void DeleteFrom(int index);
+ void DeleteBack();
+};
+
+template <class T>
+class CRecordVector: public CBaseRecordVector
+{
+public:
+ CRecordVector(): CBaseRecordVector(sizeof(T)){};
+ CRecordVector(const CRecordVector &v): CBaseRecordVector(sizeof(T)) { *this = v; }
+ CRecordVector& operator=(const CRecordVector &v)
+ {
+ Clear();
+ return (*this += v);
+ }
+ CRecordVector& operator+=(const CRecordVector &v)
+ {
+ int size = v.Size();
+ Reserve(Size() + size);
+ for (int i = 0; i < size; i++)
+ Add(v[i]);
+ return *this;
+ }
+ int Add(T item)
+ {
+ ReserveOnePosition();
+ ((T *)_items)[_size] = item;
+ return _size++;
+ }
+ void Insert(int index, T item)
+ {
+ InsertOneItem(index);
+ ((T *)_items)[index] = item;
+ }
+ // T* GetPointer() const { return (T*)_items; }
+ // operator const T *() const { return _items; };
+ const T& operator[](int index) const { return ((T *)_items)[index]; }
+ T& operator[](int index) { return ((T *)_items)[index]; }
+ const T& Front() const { return operator[](0); }
+ T& Front() { return operator[](0); }
+ const T& Back() const { return operator[](_size - 1); }
+ T& Back() { return operator[](_size - 1); }
+
+ void Swap(int i, int j)
+ {
+ T temp = operator[](i);
+ operator[](i) = operator[](j);
+ operator[](j) = temp;
+ }
+
+ int FindInSorted(const T& item, int left, int right) const
+ {
+ while (left != right)
+ {
+ int mid = (left + right) / 2;
+ const T& midValue = (*this)[mid];
+ if (item == midValue)
+ return mid;
+ if (item < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ return -1;
+ }
+
+ int FindInSorted(const T& item) const
+ {
+ int left = 0, right = Size();
+ while (left != right)
+ {
+ int mid = (left + right) / 2;
+ const T& midValue = (*this)[mid];
+ if (item == midValue)
+ return mid;
+ if (item < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ return -1;
+ }
+
+ int AddToUniqueSorted(const T& item)
+ {
+ int left = 0, right = Size();
+ while (left != right)
+ {
+ int mid = (left + right) / 2;
+ const T& midValue = (*this)[mid];
+ if (item == midValue)
+ return mid;
+ if (item < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ Insert(right, item);
+ return right;
+ }
+
+ static void SortRefDown(T* p, int k, int size, int (*compare)(const T*, const T*, void *), void *param)
+ {
+ T temp = p[k];
+ for (;;)
+ {
+ int s = (k << 1);
+ if (s > size)
+ break;
+ if (s < size && compare(p + s + 1, p + s, param) > 0)
+ s++;
+ if (compare(&temp, p + s, param) >= 0)
+ break;
+ p[k] = p[s];
+ k = s;
+ }
+ p[k] = temp;
+ }
+
+ void Sort(int (*compare)(const T*, const T*, void *), void *param)
+ {
+ int size = _size;
+ if (size <= 1)
+ return;
+ T* p = (&Front()) - 1;
+ {
+ int i = size / 2;
+ do
+ SortRefDown(p, i, size, compare, param);
+ while (--i != 0);
+ }
+ do
+ {
+ T temp = p[size];
+ p[size--] = p[1];
+ p[1] = temp;
+ SortRefDown(p, 1, size, compare, param);
+ }
+ while (size > 1);
+ }
+};
+
+typedef CRecordVector<int> CIntVector;
+typedef CRecordVector<unsigned int> CUIntVector;
+typedef CRecordVector<bool> CBoolVector;
+typedef CRecordVector<unsigned char> CByteVector;
+typedef CRecordVector<void *> CPointerVector;
+
+template <class T>
+class CObjectVector: public CPointerVector
+{
+public:
+ CObjectVector() {};
+ ~CObjectVector() { Clear(); };
+ CObjectVector(const CObjectVector &v): CPointerVector() { *this = v; }
+ CObjectVector& operator=(const CObjectVector &v)
+ {
+ Clear();
+ return (*this += v);
+ }
+ CObjectVector& operator+=(const CObjectVector &v)
+ {
+ int size = v.Size();
+ Reserve(Size() + size);
+ for (int i = 0; i < size; i++)
+ Add(v[i]);
+ return *this;
+ }
+ const T& operator[](int index) const { return *((T *)CPointerVector::operator[](index)); }
+ T& operator[](int index) { return *((T *)CPointerVector::operator[](index)); }
+ T& Front() { return operator[](0); }
+ const T& Front() const { return operator[](0); }
+ T& Back() { return operator[](_size - 1); }
+ const T& Back() const { return operator[](_size - 1); }
+ int Add(const T& item) { return CPointerVector::Add(new T(item)); }
+ void Insert(int index, const T& item) { CPointerVector::Insert(index, new T(item)); }
+ virtual void Delete(int index, int num = 1)
+ {
+ TestIndexAndCorrectNum(index, num);
+ for (int i = 0; i < num; i++)
+ delete (T *)(((void **)_items)[index + i]);
+ CPointerVector::Delete(index, num);
+ }
+ int Find(const T& item) const
+ {
+ for (int i = 0; i < Size(); i++)
+ if (item == (*this)[i])
+ return i;
+ return -1;
+ }
+ int FindInSorted(const T& item) const
+ {
+ int left = 0, right = Size();
+ while (left != right)
+ {
+ int mid = (left + right) / 2;
+ const T& midValue = (*this)[mid];
+ if (item == midValue)
+ return mid;
+ if (item < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ return -1;
+ }
+ int AddToSorted(const T& item)
+ {
+ int left = 0, right = Size();
+ while (left != right)
+ {
+ int mid = (left + right) / 2;
+ const T& midValue = (*this)[mid];
+ if (item == midValue)
+ {
+ right = mid + 1;
+ break;
+ }
+ if (item < midValue)
+ right = mid;
+ else
+ left = mid + 1;
+ }
+ Insert(right, item);
+ return right;
+ }
+
+ void Sort(int (*compare)(void *const *, void *const *, void *), void *param)
+ { CPointerVector::Sort(compare, param); }
+
+ static int CompareObjectItems(void *const *a1, void *const *a2, void * /* param */)
+ { return MyCompare(*(*((const T **)a1)), *(*((const T **)a2))); }
+ void Sort() { CPointerVector::Sort(CompareObjectItems, 0); }
+};
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,111 @@
+// MyWindows.cpp
+
+#include "StdAfx.h"
+
+#ifndef _WIN32
+
+#include "MyWindows.h"
+#include "Types.h"
+#include <stdlib.h> /* FIXED <malloc.h> */
+
+static inline void *AllocateForBSTR(size_t cb) { return ::malloc(cb); }
+static inline void FreeForBSTR(void *pv) { ::free(pv);}
+
+static UINT MyStringLen(const wchar_t *s)
+{
+ UINT i;
+ for (i = 0; s[i] != '\0'; i++);
+ return i;
+}
+
+BSTR SysAllocStringByteLen(LPCSTR psz, UINT len)
+{
+ // FIXED int realLen = len + sizeof(UINT) + 3;
+ const int LEN_ADDON = sizeof(wchar_t) - 1;
+ int realLen = len + sizeof(UINT) + sizeof(wchar_t) + LEN_ADDON;
+ void *p = AllocateForBSTR(realLen);
+ if (p == 0)
+ return 0;
+ *(UINT *)p = len;
+ // "void *" instead of "BSTR" to avoid unaligned copy of "wchar_t" because of optimizer on Solaris
+ void * bstr = (void *)((UINT *)p + 1);
+ if (psz) memmove(bstr, psz, len); // psz does not always have "wchar_t" alignment.
+ void *pb = (void *)(((Byte *)bstr) + len);
+ memset(pb,0,sizeof(wchar_t) + LEN_ADDON);
+ return (BSTR)bstr;
+}
+
+BSTR SysAllocString(const OLECHAR *sz)
+{
+ if (sz == 0)
+ return 0;
+ UINT strLen = MyStringLen(sz);
+ UINT len = (strLen + 1) * sizeof(OLECHAR);
+ void *p = AllocateForBSTR(len + sizeof(UINT));
+ if (p == 0)
+ return 0;
+ *(UINT *)p = strLen * sizeof(OLECHAR); // FIXED
+ void * bstr = (void *)((UINT *)p + 1);
+ memmove(bstr, sz, len); // sz does not always have "wchar_t" alignment.
+ return (BSTR)bstr;
+}
+
+void SysFreeString(BSTR bstr)
+{
+ if (bstr != 0)
+ FreeForBSTR((UINT *)bstr - 1);
+}
+
+UINT SysStringByteLen(BSTR bstr)
+{
+ if (bstr == 0)
+ return 0;
+ return *((UINT *)bstr - 1);
+
+}
+
+UINT SysStringLen(BSTR bstr)
+{
+ return SysStringByteLen(bstr) / sizeof(OLECHAR);
+}
+
+HRESULT VariantClear(VARIANTARG *prop)
+{
+ if (prop->vt == VT_BSTR)
+ SysFreeString(prop->bstrVal);
+ prop->vt = VT_EMPTY;
+ return S_OK;
+}
+
+HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src)
+{
+ HRESULT res = ::VariantClear(dest);
+ if (res != S_OK)
+ return res;
+ if (src->vt == VT_BSTR)
+ {
+ dest->bstrVal = SysAllocStringByteLen((LPCSTR)src->bstrVal,
+ SysStringByteLen(src->bstrVal));
+ if (dest->bstrVal == 0)
+ return E_OUTOFMEMORY;
+ dest->vt = VT_BSTR;
+ }
+ else
+ *dest = *src;
+ return S_OK;
+}
+
+LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2)
+{
+ if(ft1->dwHighDateTime < ft2->dwHighDateTime)
+ return -1;
+ if(ft1->dwHighDateTime > ft2->dwHighDateTime)
+ return 1;
+ if(ft1->dwLowDateTime < ft2->dwLowDateTime)
+ return -1;
+ if(ft1->dwLowDateTime > ft2->dwLowDateTime)
+ return 1;
+ return 0;
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyWindows.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,218 @@
+// MyWindows.h
+
+#ifndef __MYWINDOWS_H
+#define __MYWINDOWS_H
+
+#ifdef _WIN32
+
+#include <windows.h>
+
+#else
+
+#include <stddef.h> // for wchar_t
+#include <string.h>
+
+#include "MyGuidDef.h"
+
+typedef char CHAR;
+typedef unsigned char UCHAR;
+
+#undef BYTE
+typedef unsigned char BYTE;
+
+typedef short SHORT;
+typedef unsigned short USHORT;
+
+#undef WORD
+typedef unsigned short WORD;
+typedef short VARIANT_BOOL;
+
+typedef int INT;
+typedef Int32 INT32;
+typedef unsigned int UINT;
+typedef UInt32 UINT32;
+typedef INT32 LONG; // LONG, ULONG and DWORD must be 32-bit
+typedef UINT32 ULONG;
+
+#undef DWORD
+typedef UINT32 DWORD;
+
+typedef Int64 LONGLONG;
+typedef UInt64 ULONGLONG;
+
+typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
+typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
+
+typedef const CHAR *LPCSTR;
+
+typedef wchar_t WCHAR;
+
+#ifdef _UNICODE
+typedef WCHAR TCHAR;
+#define lstrcpy wcscpy
+#define lstrcat wcscat
+#define lstrlen wcslen
+#else
+typedef CHAR TCHAR;
+#define lstrcpy strcpy
+#define lstrcat strcat
+#define lstrlen strlen
+#endif
+#define _wcsicmp(str1,str2) MyStringCompareNoCase(str1,str2)
+
+typedef const TCHAR *LPCTSTR;
+typedef WCHAR OLECHAR;
+typedef const WCHAR *LPCWSTR;
+typedef OLECHAR *BSTR;
+typedef const OLECHAR *LPCOLESTR;
+typedef OLECHAR *LPOLESTR;
+
+typedef struct _FILETIME
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+}FILETIME;
+
+#define HRESULT LONG
+#define FAILED(Status) ((HRESULT)(Status)<0)
+typedef ULONG PROPID;
+typedef LONG SCODE;
+
+#define S_OK ((HRESULT)0x00000000L)
+#define S_FALSE ((HRESULT)0x00000001L)
+#define E_NOTIMPL ((HRESULT)0x80004001L)
+#define E_NOINTERFACE ((HRESULT)0x80004002L)
+#define E_ABORT ((HRESULT)0x80004004L)
+#define E_FAIL ((HRESULT)0x80004005L)
+#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
+#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
+#define E_INVALIDARG ((HRESULT)0x80070057L)
+
+#ifdef _MSC_VER
+#define STDMETHODCALLTYPE __stdcall
+#else
+#define STDMETHODCALLTYPE
+#endif
+
+#define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
+#define STDMETHOD(f) STDMETHOD_(HRESULT, f)
+#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
+#define STDMETHODIMP STDMETHODIMP_(HRESULT)
+
+#define PURE = 0
+
+#define MIDL_INTERFACE(x) struct
+
+#ifdef __cplusplus
+
+DEFINE_GUID(IID_IUnknown,
+0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
+struct IUnknown
+{
+ STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
+ STDMETHOD_(ULONG, AddRef)() PURE;
+ STDMETHOD_(ULONG, Release)() PURE;
+ #ifndef _WIN32
+ virtual ~IUnknown() {}
+ #endif
+};
+
+typedef IUnknown *LPUNKNOWN;
+
+#endif
+
+#define VARIANT_TRUE ((VARIANT_BOOL)-1)
+#define VARIANT_FALSE ((VARIANT_BOOL)0)
+
+enum VARENUM
+{
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_FILETIME = 64
+};
+
+typedef unsigned short VARTYPE;
+typedef WORD PROPVAR_PAD1;
+typedef WORD PROPVAR_PAD2;
+typedef WORD PROPVAR_PAD3;
+
+#ifdef __cplusplus
+
+typedef struct tagPROPVARIANT
+{
+ VARTYPE vt;
+ PROPVAR_PAD1 wReserved1;
+ PROPVAR_PAD2 wReserved2;
+ PROPVAR_PAD3 wReserved3;
+ union
+ {
+ CHAR cVal;
+ UCHAR bVal;
+ SHORT iVal;
+ USHORT uiVal;
+ LONG lVal;
+ ULONG ulVal;
+ INT intVal;
+ UINT uintVal;
+ LARGE_INTEGER hVal;
+ ULARGE_INTEGER uhVal;
+ VARIANT_BOOL boolVal;
+ SCODE scode;
+ FILETIME filetime;
+ BSTR bstrVal;
+ };
+} PROPVARIANT;
+
+typedef PROPVARIANT tagVARIANT;
+typedef tagVARIANT VARIANT;
+typedef VARIANT VARIANTARG;
+
+MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
+MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
+
+#endif
+
+MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
+MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
+MY_EXTERN_C void SysFreeString(BSTR bstr);
+MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
+MY_EXTERN_C UINT SysStringLen(BSTR bstr);
+
+/* MY_EXTERN_C DWORD GetLastError(); */
+MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
+
+#define CP_ACP 0
+#define CP_OEMCP 1
+
+typedef enum tagSTREAM_SEEK
+{
+ STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2
+} STREAM_SEEK;
+
+#endif
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,209 @@
+// MyXml.cpp
+
+#include "StdAfx.h"
+
+#include "MyXml.h"
+
+static bool IsValidChar(char c)
+{
+ return
+ c >= 'a' && c <= 'z' ||
+ c >= 'A' && c <= 'Z' ||
+ c >= '0' && c <= '9' ||
+ c == '-';
+}
+
+static bool IsSpaceChar(char c)
+{
+ return (c == ' ' || c == '\t' || c == 0x0D || c == 0x0A);
+}
+
+#define SKIP_SPACES(s, pos) while (IsSpaceChar(s[pos])) pos++;
+
+static bool ReadProperty(const AString &s, int &pos, CXmlProp &prop)
+{
+ prop.Name.Empty();
+ prop.Value.Empty();
+ for (; pos < s.Length(); pos++)
+ {
+ char c = s[pos];
+ if (!IsValidChar(c))
+ break;
+ prop.Name += c;
+ }
+
+ if (prop.Name.IsEmpty())
+ return false;
+
+ SKIP_SPACES(s, pos);
+ if (s[pos++] != '=')
+ return false;
+
+ SKIP_SPACES(s, pos);
+ if (s[pos++] != '\"')
+ return false;
+
+ while (pos < s.Length())
+ {
+ char c = s[pos++];
+ if (c == '\"')
+ return true;
+ prop.Value += c;
+ }
+ return false;
+}
+
+int CXmlItem::FindProperty(const AString &propName) const
+{
+ for (int i = 0; i < Props.Size(); i++)
+ if (Props[i].Name == propName)
+ return i;
+ return -1;
+}
+
+AString CXmlItem::GetPropertyValue(const AString &propName) const
+{
+ int index = FindProperty(propName);
+ if (index >= 0)
+ return Props[index].Value;
+ return AString();
+}
+
+bool CXmlItem::IsTagged(const AString &tag) const
+{
+ return (IsTag && Name == tag);
+}
+
+int CXmlItem::FindSubTag(const AString &tag) const
+{
+ for (int i = 0; i < SubItems.Size(); i++)
+ if (SubItems[i].IsTagged(tag))
+ return i;
+ return -1;
+}
+
+AString CXmlItem::GetSubString() const
+{
+ if (SubItems.Size() == 1)
+ {
+ const CXmlItem &item = SubItems[0];
+ if (!item.IsTag)
+ return item.Name;
+ }
+ return AString();
+}
+
+AString CXmlItem::GetSubStringForTag(const AString &tag) const
+{
+ int index = FindSubTag(tag);
+ if (index >= 0)
+ return SubItems[index].GetSubString();
+ return AString();
+}
+
+bool CXmlItem::ParseItems(const AString &s, int &pos, int numAllowedLevels)
+{
+ if (numAllowedLevels == 0)
+ return false;
+ SubItems.Clear();
+ AString finishString = "</";
+ for (;;)
+ {
+ SKIP_SPACES(s, pos);
+
+ if (s.Mid(pos, finishString.Length()) == finishString)
+ return true;
+
+ CXmlItem item;
+ if (!item.ParseItem(s, pos, numAllowedLevels - 1))
+ return false;
+ SubItems.Add(item);
+ }
+}
+
+bool CXmlItem::ParseItem(const AString &s, int &pos, int numAllowedLevels)
+{
+ SKIP_SPACES(s, pos);
+
+ int pos2 = s.Find('<', pos);
+ if (pos2 < 0)
+ return false;
+ if (pos2 != pos)
+ {
+ IsTag = false;
+ Name += s.Mid(pos, pos2 - pos);
+ pos = pos2;
+ return true;
+ }
+ IsTag = true;
+
+ pos++;
+ SKIP_SPACES(s, pos);
+
+ for (; pos < s.Length(); pos++)
+ {
+ char c = s[pos];
+ if (!IsValidChar(c))
+ break;
+ Name += c;
+ }
+ if (Name.IsEmpty() || pos == s.Length())
+ return false;
+
+ int posTemp = pos;
+ for (;;)
+ {
+ SKIP_SPACES(s, pos);
+ if (s[pos] == '/')
+ {
+ pos++;
+ // SKIP_SPACES(s, pos);
+ return (s[pos++] == '>');
+ }
+ if (s[pos] == '>')
+ {
+ if (!ParseItems(s, ++pos, numAllowedLevels))
+ return false;
+ AString finishString = AString("</") + Name + AString(">");
+ if (s.Mid(pos, finishString.Length()) != finishString)
+ return false;
+ pos += finishString.Length();
+ return true;
+ }
+ if (posTemp == pos)
+ return false;
+
+ CXmlProp prop;
+ if (!ReadProperty(s, pos, prop))
+ return false;
+ Props.Add(prop);
+ posTemp = pos;
+ }
+}
+
+static bool SkipHeader(const AString &s, int &pos, const AString &startString, const AString &endString)
+{
+ SKIP_SPACES(s, pos);
+ if (s.Mid(pos, startString.Length()) == startString)
+ {
+ pos = s.Find(endString, pos);
+ if (pos < 0)
+ return false;
+ pos += endString.Length();
+ SKIP_SPACES(s, pos);
+ }
+ return true;
+}
+
+bool CXml::Parse(const AString &s)
+{
+ int pos = 0;
+ if (!SkipHeader(s, pos, "<?xml", "?>"))
+ return false;
+ if (!SkipHeader(s, pos, "<!DOCTYPE", ">"))
+ return false;
+ if (!Root.ParseItem(s, pos, 1000))
+ return false;
+ SKIP_SPACES(s, pos);
+ return (pos == s.Length() && Root.IsTag);
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/MyXml.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,40 @@
+// MyXml.h
+
+#ifndef __MYXML_H
+#define __MYXML_H
+
+#include "MyString.h"
+
+struct CXmlProp
+{
+ AString Name;
+ AString Value;
+};
+
+class CXmlItem
+{
+ bool ParseItems(const AString &s, int &pos, int numAllowedLevels);
+
+public:
+ AString Name;
+ bool IsTag;
+ CObjectVector<CXmlProp> Props;
+ CObjectVector<CXmlItem> SubItems;
+
+ bool ParseItem(const AString &s, int &pos, int numAllowedLevels);
+
+ bool IsTagged(const AString &tag) const;
+ int FindProperty(const AString &propName) const;
+ AString GetPropertyValue(const AString &propName) const;
+ AString GetSubString() const;
+ int FindSubTag(const AString &tag) const;
+ AString GetSubStringForTag(const AString &tag) const;
+};
+
+struct CXml
+{
+ CXmlItem Root;
+ bool Parse(const AString &s);
+};
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/NewHandler.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/NewHandler.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/NewHandler.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/NewHandler.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,16 @@
+// Common/NewHandler.h
+
+#ifndef __COMMON_NEWHANDLER_H
+#define __COMMON_NEWHANDLER_H
+
+class CNewException {};
+
+#ifdef _WIN32
+void
+#ifdef _MSC_VER
+__cdecl
+#endif
+operator delete(void *p) throw();
+#endif
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,100 @@
+// Common/StdInStream.cpp
+
+#include "StdAfx.h"
+
+#include <tchar.h>
+#include "StdInStream.h"
+
+#ifdef _MSC_VER
+// "was declared deprecated" disabling
+#pragma warning(disable : 4996 )
+#endif
+
+#ifdef _UNICODE
+#include "Common/StringConvert.h"
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+#endif
+
+static const char kIllegalChar = '\0';
+static const char kNewLineChar = '\n';
+
+static const char *kEOFMessage = "Unexpected end of input stream";
+static const char *kReadErrorMessage ="Error reading input stream";
+static const char *kIllegalCharMessage = "Illegal character in input stream";
+
+static const char * kFileOpenMode = "r";
+
+CStdInStream g_StdIn(stdin);
+
+bool CStdInStream::Open(LPCTSTR fileName)
+{
+ Close();
+#ifdef _UNICODE
+ AString aStr = UnicodeStringToMultiByte(fileName, CP_ACP); // FIXME
+ const char * name = nameWindowToUnix(aStr);
+#else
+ const char * name = nameWindowToUnix(fileName);
+#endif
+ _stream = fopen(name, kFileOpenMode);
+ _streamIsOpen = (_stream != 0);
+ return _streamIsOpen;
+}
+
+bool CStdInStream::Close()
+{
+ if (!_streamIsOpen)
+ return true;
+ _streamIsOpen = (fclose(_stream) != 0);
+ return !_streamIsOpen;
+}
+
+CStdInStream::~CStdInStream()
+{
+ Close();
+}
+
+AString CStdInStream::ScanStringUntilNewLine(bool allowEOF)
+{
+ AString s;
+ for (;;)
+ {
+ int intChar = GetChar();
+ if (intChar == EOF)
+ {
+ if (allowEOF)
+ break;
+ throw kEOFMessage;
+ }
+ char c = char(intChar);
+ if (c == kIllegalChar)
+ throw kIllegalCharMessage;
+ if (c == kNewLineChar)
+ break;
+ s += c;
+ }
+ return s;
+}
+
+void CStdInStream::ReadToString(AString &resultString)
+{
+ resultString.Empty();
+ int c;
+ while ((c = GetChar()) != EOF)
+ resultString += char(c);
+}
+
+bool CStdInStream::Eof()
+{
+ return (feof(_stream) != 0);
+}
+
+int CStdInStream::GetChar()
+{
+ int c = fgetc(_stream); // getc() doesn't work in BeOS?
+ if (c == EOF && !Eof())
+ throw kReadErrorMessage;
+ return c;
+}
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdInStream.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,32 @@
+// Common/StdInStream.h
+
+#ifndef __COMMON_STDINSTREAM_H
+#define __COMMON_STDINSTREAM_H
+
+#include <stdio.h>
+
+#include "MyString.h"
+#include "Types.h"
+
+class CStdInStream
+{
+ bool _streamIsOpen;
+ FILE *_stream;
+public:
+ CStdInStream(): _streamIsOpen(false) {};
+ CStdInStream(FILE *stream): _streamIsOpen(false), _stream(stream) {};
+ ~CStdInStream();
+ bool Open(LPCTSTR fileName);
+ bool Close();
+
+ AString ScanStringUntilNewLine(bool allowEOF = false);
+ void ReadToString(AString &resultString);
+ UString ScanUStringUntilNewLine();
+
+ bool Eof();
+ int GetChar();
+};
+
+extern CStdInStream g_StdIn;
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,93 @@
+// Common/StdOutStream.cpp
+
+#include "StdAfx.h"
+
+#include <tchar.h>
+
+#include "StdOutStream.h"
+#include "IntToString.h"
+#include "StringConvert.h"
+
+#ifdef _MSC_VER
+// "was declared deprecated" disabling
+#pragma warning(disable : 4996 )
+#endif
+
+static const char kNewLineChar = '\n';
+
+static const char *kFileOpenMode = "wt";
+
+CStdOutStream g_StdOut(stdout);
+CStdOutStream g_StdErr(stderr);
+
+bool CStdOutStream::Open(const char *fileName)
+{
+ Close();
+ _stream = fopen(fileName, kFileOpenMode);
+ _streamIsOpen = (_stream != 0);
+ return _streamIsOpen;
+}
+
+bool CStdOutStream::Close()
+{
+ if (!_streamIsOpen)
+ return true;
+ if (fclose(_stream) != 0)
+ return false;
+ _stream = 0;
+ _streamIsOpen = false;
+ return true;
+}
+
+bool CStdOutStream::Flush()
+{
+ return (fflush(_stream) == 0);
+}
+
+CStdOutStream::~CStdOutStream ()
+{
+ Close();
+}
+
+CStdOutStream & CStdOutStream::operator<<(CStdOutStream & (*aFunction)(CStdOutStream &))
+{
+ (*aFunction)(*this);
+ return *this;
+}
+
+CStdOutStream & endl(CStdOutStream & outStream)
+{
+ return outStream << kNewLineChar;
+}
+
+CStdOutStream & CStdOutStream::operator<<(const char *string)
+{
+ fputs(string, _stream);
+ return *this;
+}
+
+CStdOutStream & CStdOutStream::operator<<(const wchar_t *string)
+{
+ *this << (const char *)UnicodeStringToMultiByte(string, CP_OEMCP);
+ return *this;
+}
+
+CStdOutStream & CStdOutStream::operator<<(char c)
+{
+ fputc(c, _stream);
+ return *this;
+}
+
+CStdOutStream & CStdOutStream::operator<<(int number)
+{
+ char textString[32];
+ ConvertInt64ToString(number, textString);
+ return operator<<(textString);
+}
+
+CStdOutStream & CStdOutStream::operator<<(UInt64 number)
+{
+ char textString[32];
+ ConvertUInt64ToString(number, textString);
+ return operator<<(textString);
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StdOutStream.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,35 @@
+// Common/StdOutStream.h
+
+#ifndef __COMMON_STDOUTSTREAM_H
+#define __COMMON_STDOUTSTREAM_H
+
+#include <stdio.h>
+
+#include "Types.h"
+
+class CStdOutStream
+{
+ bool _streamIsOpen;
+ FILE *_stream;
+public:
+ CStdOutStream (): _streamIsOpen(false), _stream(0) {};
+ CStdOutStream (FILE *stream): _streamIsOpen(false), _stream(stream) {};
+ ~CStdOutStream ();
+ operator FILE *() { return _stream; }
+ bool Open(const char *fileName);
+ bool Close();
+ bool Flush();
+ CStdOutStream & operator<<(CStdOutStream & (* aFunction)(CStdOutStream &));
+ CStdOutStream & operator<<(const char *string);
+ CStdOutStream & operator<<(const wchar_t *string);
+ CStdOutStream & operator<<(char c);
+ CStdOutStream & operator<<(int number);
+ CStdOutStream & operator<<(UInt64 number);
+};
+
+CStdOutStream & endl(CStdOutStream & outStream);
+
+extern CStdOutStream g_StdOut;
+extern CStdOutStream g_StdErr;
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,181 @@
+// Common/StringConvert.cpp
+
+#include "StdAfx.h"
+#include <stdlib.h>
+
+#include "StringConvert.h"
+extern "C"
+{
+int global_use_utf16_conversion = 0;
+}
+
+
+#ifdef LOCALE_IS_UTF8
+
+#ifdef __APPLE_CC__
+#define UInt32 macUIn32
+#include <CoreFoundation/CoreFoundation.h>
+#undef UInt32
+
+UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
+{
+ if (!srcString.IsEmpty())
+ {
+ UString resultString;
+ const char * path = &srcString[0];
+
+// FIXME size_t n = strlen(path);
+
+ CFStringRef cfpath = CFStringCreateWithCString(NULL,path,kCFStringEncodingUTF8);
+
+ if (cfpath)
+ {
+
+ CFMutableStringRef cfpath2 = CFStringCreateMutableCopy(NULL,0,cfpath);
+ CFRelease(cfpath);
+ CFStringNormalize(cfpath2,kCFStringNormalizationFormC);
+
+ size_t n = CFStringGetLength(cfpath2);
+ for(size_t i = 0 ; i< n ;i++) {
+ resultString += CFStringGetCharacterAtIndex(cfpath2,i);
+ }
+
+ CFRelease(cfpath2);
+
+ return resultString;
+ }
+ }
+
+ UString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ resultString += wchar_t(srcString[i] & 255);
+
+ return resultString;
+}
+
+AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
+{
+ if (!srcString.IsEmpty())
+ {
+ const wchar_t * wcs = &srcString[0];
+ char utf8[4096];
+ UniChar unipath[4096];
+
+ size_t n = wcslen(wcs);
+
+ for(size_t i = 0 ; i<= n ;i++) {
+ unipath[i] = wcs[i];
+ }
+
+ CFStringRef cfpath = CFStringCreateWithCharacters(NULL,unipath,n);
+
+ CFMutableStringRef cfpath2 = CFStringCreateMutableCopy(NULL,0,cfpath);
+ CFRelease(cfpath);
+ CFStringNormalize(cfpath2,kCFStringNormalizationFormD);
+
+ CFStringGetCString(cfpath2,(char *)utf8,4096,kCFStringEncodingUTF8);
+
+ CFRelease(cfpath2);
+
+ return AString(utf8);
+ }
+
+ AString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ {
+ if (srcString[i] >= 256) resultString += '?';
+ else resultString += char(srcString[i]);
+ }
+ return resultString;
+}
+
+#else /* __APPLE_CC__ */
+
+
+#include "UTFConvert.h"
+
+UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
+{
+ if ((global_use_utf16_conversion) && (!srcString.IsEmpty()))
+ {
+ UString resultString;
+ bool bret = ConvertUTF8ToUnicode(srcString,resultString);
+ if (bret) return resultString;
+ }
+
+ UString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ resultString += wchar_t(srcString[i] & 255);
+
+ return resultString;
+}
+
+AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
+{
+ if ((global_use_utf16_conversion) && (!srcString.IsEmpty()))
+ {
+ AString resultString;
+ bool bret = ConvertUnicodeToUTF8(srcString,resultString);
+ if (bret) return resultString;
+ }
+
+ AString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ {
+ if (srcString[i] >= 256) resultString += '?';
+ else resultString += char(srcString[i]);
+ }
+ return resultString;
+}
+
+#endif /* __APPLE_CC__ */
+
+#else /* LOCALE_IS_UTF8 */
+
+UString MultiByteToUnicodeString(const AString &srcString, UINT /* codePage */ )
+{
+#ifdef ENV_HAVE_MBSTOWCS
+ if ((global_use_utf16_conversion) && (!srcString.IsEmpty()))
+ {
+ UString resultString;
+ int numChars = mbstowcs(resultString.GetBuffer(srcString.Length()),srcString,srcString.Length()+1);
+ if (numChars >= 0) {
+ resultString.ReleaseBuffer(numChars);
+ return resultString;
+ }
+ }
+#endif
+
+ UString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ resultString += wchar_t(srcString[i] & 255);
+
+ return resultString;
+}
+
+AString UnicodeStringToMultiByte(const UString &srcString, UINT /* codePage */ )
+{
+#ifdef ENV_HAVE_WCSTOMBS
+ if ((global_use_utf16_conversion) && (!srcString.IsEmpty()))
+ {
+ AString resultString;
+ int numRequiredBytes = srcString.Length() * 6+1;
+ int numChars = wcstombs(resultString.GetBuffer(numRequiredBytes),srcString,numRequiredBytes);
+ if (numChars >= 0) {
+ resultString.ReleaseBuffer(numChars);
+ return resultString;
+ }
+ }
+#endif
+
+ AString resultString;
+ for (int i = 0; i < srcString.Length(); i++)
+ {
+ if (srcString[i] >= 256) resultString += '?';
+ else resultString += char(srcString[i]);
+ }
+ return resultString;
+}
+
+#endif /* LOCALE_IS_UTF8 */
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringConvert.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,73 @@
+// Common/StringConvert.h
+
+#ifndef __COMMON_STRING_CONVERT_H
+#define __COMMON_STRING_CONVERT_H
+
+#include "MyWindows.h"
+#include "MyString.h"
+#include "Types.h"
+
+UString MultiByteToUnicodeString(const AString &srcString, UINT codePage = CP_ACP);
+AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage, char defaultChar, bool &defaultCharWasUsed);
+AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage = CP_ACP);
+
+
+inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString)
+ { return unicodeString; }
+inline const UString& GetUnicodeString(const UString &unicodeString)
+ { return unicodeString; }
+inline UString GetUnicodeString(const AString &ansiString)
+ { return MultiByteToUnicodeString(ansiString); }
+inline UString GetUnicodeString(const AString &multiByteString, UINT codePage)
+ { return MultiByteToUnicodeString(multiByteString, codePage); }
+inline const wchar_t* GetUnicodeString(const wchar_t* unicodeString, UINT)
+ { return unicodeString; }
+inline const UString& GetUnicodeString(const UString &unicodeString, UINT)
+ { return unicodeString; }
+
+inline const char* GetAnsiString(const char* ansiString)
+ { return ansiString; }
+inline const AString& GetAnsiString(const AString &ansiString)
+ { return ansiString; }
+inline AString GetAnsiString(const UString &unicodeString)
+ { return UnicodeStringToMultiByte(unicodeString); }
+
+inline const char* GetOemString(const char* oemString)
+ { return oemString; }
+inline const AString& GetOemString(const AString &oemString)
+ { return oemString; }
+inline AString GetOemString(const UString &unicodeString)
+ { return UnicodeStringToMultiByte(unicodeString, CP_OEMCP); }
+
+
+#ifdef _UNICODE
+ inline const wchar_t* GetSystemString(const wchar_t* unicodeString)
+ { return unicodeString;}
+ inline const UString& GetSystemString(const UString &unicodeString)
+ { return unicodeString;}
+ inline const wchar_t* GetSystemString(const wchar_t* unicodeString, UINT /* codePage */)
+ { return unicodeString;}
+ inline const UString& GetSystemString(const UString &unicodeString, UINT /* codePage */)
+ { return unicodeString;}
+ inline UString GetSystemString(const AString &multiByteString, UINT codePage)
+ { return MultiByteToUnicodeString(multiByteString, codePage);}
+ inline UString GetSystemString(const AString &multiByteString)
+ { return MultiByteToUnicodeString(multiByteString);}
+#else
+ inline const char* GetSystemString(const char *ansiString)
+ { return ansiString; }
+ inline const AString& GetSystemString(const AString &multiByteString, UINT)
+ { return multiByteString; }
+ inline const char * GetSystemString(const char *multiByteString, UINT)
+ { return multiByteString; }
+ inline AString GetSystemString(const UString &unicodeString)
+ { return UnicodeStringToMultiByte(unicodeString); }
+ inline AString GetSystemString(const UString &unicodeString, UINT codePage)
+ { return UnicodeStringToMultiByte(unicodeString, codePage); }
+#endif
+
+#ifndef UNDER_CE
+AString SystemStringToOemString(const CSysString &srcString);
+#endif
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,90 @@
+// Common/StringToInt.cpp
+
+#include "StdAfx.h"
+
+#include "StringToInt.h"
+
+UInt64 ConvertStringToUInt64(const char *s, const char **end)
+{
+ UInt64 result = 0;
+ for (;;)
+ {
+ char c = *s;
+ if (c < '0' || c > '9')
+ {
+ if (end != NULL)
+ *end = s;
+ return result;
+ }
+ result *= 10;
+ result += (c - '0');
+ s++;
+ }
+}
+
+UInt64 ConvertOctStringToUInt64(const char *s, const char **end)
+{
+ UInt64 result = 0;
+ for (;;)
+ {
+ char c = *s;
+ if (c < '0' || c > '7')
+ {
+ if (end != NULL)
+ *end = s;
+ return result;
+ }
+ result <<= 3;
+ result += (c - '0');
+ s++;
+ }
+}
+
+UInt64 ConvertHexStringToUInt64(const char *s, const char **end)
+{
+ UInt64 result = 0;
+ for (;;)
+ {
+ char c = *s;
+ UInt32 v;
+ if (c >= '0' && c <= '9') v = (c - '0');
+ else if (c >= 'A' && c <= 'F') v = 10 + (c - 'A');
+ else if (c >= 'a' && c <= 'f') v = 10 + (c - 'a');
+ else
+ {
+ if (end != NULL)
+ *end = s;
+ return result;
+ }
+ result <<= 4;
+ result |= v;
+ s++;
+ }
+}
+
+
+UInt64 ConvertStringToUInt64(const wchar_t *s, const wchar_t **end)
+{
+ UInt64 result = 0;
+ for (;;)
+ {
+ wchar_t c = *s;
+ if (c < '0' || c > '9')
+ {
+ if (end != NULL)
+ *end = s;
+ return result;
+ }
+ result *= 10;
+ result += (c - '0');
+ s++;
+ }
+}
+
+
+Int64 ConvertStringToInt64(const char *s, const char **end)
+{
+ if (*s == '-')
+ return -(Int64)ConvertStringToUInt64(s + 1, end);
+ return ConvertStringToUInt64(s, end);
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/StringToInt.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,18 @@
+// Common/StringToInt.h
+
+#ifndef __COMMON_STRINGTOINT_H
+#define __COMMON_STRINGTOINT_H
+
+#include <string.h>
+#include "Types.h"
+
+UInt64 ConvertStringToUInt64(const char *s, const char **end);
+UInt64 ConvertOctStringToUInt64(const char *s, const char **end);
+UInt64 ConvertHexStringToUInt64(const char *s, const char **end);
+UInt64 ConvertStringToUInt64(const wchar_t *s, const wchar_t **end);
+
+Int64 ConvertStringToInt64(const char *s, const char **end);
+
+#endif
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,138 @@
+// Common/TextConfig.cpp
+
+#include "StdAfx.h"
+
+#include "TextConfig.h"
+
+#include "Defs.h"
+#include "UTFConvert.h"
+
+static bool IsDelimitChar(char c)
+{
+ return (c == ' ' || c == 0x0A || c == 0x0D ||
+ c == '\0' || c == '\t');
+}
+
+static AString GetIDString(const char *string, int &finishPos)
+{
+ AString result;
+ for (finishPos = 0; ; finishPos++)
+ {
+ char c = string[finishPos];
+ if (IsDelimitChar(c) || c == '=')
+ break;
+ result += c;
+ }
+ return result;
+}
+
+static bool WaitNextLine(const AString &string, int &pos)
+{
+ for (;pos < string.Length(); pos++)
+ if (string[pos] == 0x0A)
+ return true;
+ return false;
+}
+
+static bool SkipSpaces(const AString &string, int &pos)
+{
+ for (;pos < string.Length(); pos++)
+ {
+ char c = string[pos];
+ if (!IsDelimitChar(c))
+ {
+ if (c != ';')
+ return true;
+ if (!WaitNextLine(string, pos))
+ return false;
+ }
+ }
+ return false;
+}
+
+bool GetTextConfig(const AString &string, CObjectVector<CTextConfigPair> &pairs)
+{
+ pairs.Clear();
+ int pos = 0;
+
+ /////////////////////
+ // read strings
+
+ for (;;)
+ {
+ if (!SkipSpaces(string, pos))
+ break;
+ CTextConfigPair pair;
+ int finishPos;
+ AString temp = GetIDString(((const char *)string) + pos, finishPos);
+ if (!ConvertUTF8ToUnicode(temp, pair.ID))
+ return false;
+ if (finishPos == 0)
+ return false;
+ pos += finishPos;
+ if (!SkipSpaces(string, pos))
+ return false;
+ if (string[pos] != '=')
+ return false;
+ pos++;
+ if (!SkipSpaces(string, pos))
+ return false;
+ if (string[pos] != '\"')
+ return false;
+ pos++;
+ AString message;
+ for (;;)
+ {
+ if (pos >= string.Length())
+ return false;
+ char c = string[pos++];
+ if (c == '\"')
+ break;
+ if (c == '\\') // FIXME ?
+ {
+ char c = string[pos++];
+ switch(c)
+ {
+ case 'n':
+ message += '\n';
+ break;
+ case 't':
+ message += '\t';
+ break;
+ case '\\': // FIXME ?
+ message += '\\';
+ break;
+ case '\"':
+ message += '\"';
+ break;
+ default:
+ message += '\\'; // FIXME ?
+ message += c;
+ break;
+ }
+ }
+ else
+ message += c;
+ }
+ if (!ConvertUTF8ToUnicode(message, pair.String))
+ return false;
+ pairs.Add(pair);
+ }
+ return true;
+}
+
+int FindTextConfigItem(const CObjectVector<CTextConfigPair> &pairs, const UString &id)
+{
+ for (int i = 0; i < pairs.Size(); i++)
+ if (pairs[i].ID.Compare(id) == 0)
+ return i;
+ return -1;
+}
+
+UString GetTextConfigValue(const CObjectVector<CTextConfigPair> &pairs, const UString &id)
+{
+ int index = FindTextConfigItem(pairs, id);
+ if (index < 0)
+ return UString();
+ return pairs[index].String;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/TextConfig.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,22 @@
+// Common/TextConfig.h
+
+#ifndef __COMMON_TEXTCONFIG_H
+#define __COMMON_TEXTCONFIG_H
+
+#include "MyVector.h"
+#include "MyString.h"
+
+struct CTextConfigPair
+{
+ UString ID;
+ UString String;
+};
+
+bool GetTextConfig(const AString &text, CObjectVector<CTextConfigPair> &pairs);
+
+int FindTextConfigItem(const CObjectVector<CTextConfigPair> &pairs, const UString &id);
+UString GetTextConfigValue(const CObjectVector<CTextConfigPair> &pairs, const UString &id);
+
+#endif
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Types.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Types.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Types.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Types.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,11 @@
+// Common/Types.h
+
+#ifndef __COMMON_TYPES_H
+#define __COMMON_TYPES_H
+
+#include "../../C/Types.h"
+
+typedef int HRes;
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,145 @@
+// UTFConvert.cpp
+
+#include "StdAfx.h"
+
+#include "UTFConvert.h"
+#include "Types.h"
+
+static const Byte kUtf8Limits[5] = { 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
+
+static Bool Utf8_To_Utf16(wchar_t *dest, size_t *destLen, const char *src, size_t srcLen)
+{
+ size_t destPos = 0, srcPos = 0;
+ for (;;)
+ {
+ Byte c;
+ int numAdds;
+ if (srcPos == srcLen)
+ {
+ *destLen = destPos;
+ return True;
+ }
+ c = (Byte)src[srcPos++];
+
+ if (c < 0x80)
+ {
+ if (dest)
+ dest[destPos] = (wchar_t)c;
+ destPos++;
+ continue;
+ }
+ if (c < 0xC0)
+ break;
+ for (numAdds = 1; numAdds < 5; numAdds++)
+ if (c < kUtf8Limits[numAdds])
+ break;
+ UInt32 value = (c - kUtf8Limits[numAdds - 1]);
+
+ do
+ {
+ Byte c2;
+ if (srcPos == srcLen)
+ break;
+ c2 = (Byte)src[srcPos++];
+ if (c2 < 0x80 || c2 >= 0xC0)
+ break;
+ value <<= 6;
+ value |= (c2 - 0x80);
+ }
+ while (--numAdds != 0);
+
+ if (value < 0x10000)
+ {
+ if (dest)
+ dest[destPos] = (wchar_t)value;
+ destPos++;
+ }
+ else
+ {
+ value -= 0x10000;
+ if (value >= 0x100000)
+ break;
+ if (dest)
+ {
+ dest[destPos + 0] = (wchar_t)(0xD800 + (value >> 10));
+ dest[destPos + 1] = (wchar_t)(0xDC00 + (value & 0x3FF));
+ }
+ destPos += 2;
+ }
+ }
+ *destLen = destPos;
+ return False;
+}
+
+static Bool Utf16_To_Utf8(char *dest, size_t *destLen, const wchar_t *src, size_t srcLen)
+{
+ size_t destPos = 0, srcPos = 0;
+ for (;;)
+ {
+ unsigned numAdds;
+ UInt32 value;
+ if (srcPos == srcLen)
+ {
+ *destLen = destPos;
+ return True;
+ }
+ value = src[srcPos++];
+ if (value < 0x80)
+ {
+ if (dest)
+ dest[destPos] = (char)value;
+ destPos++;
+ continue;
+ }
+ if (value >= 0xD800 && value < 0xE000)
+ {
+ UInt32 c2;
+ if (value >= 0xDC00 || srcPos == srcLen)
+ break;
+ c2 = src[srcPos++];
+ if (c2 < 0xDC00 || c2 >= 0xE000)
+ break;
+ value = (((value - 0xD800) << 10) | (c2 - 0xDC00)) + 0x10000;
+ }
+ for (numAdds = 1; numAdds < 5; numAdds++)
+ if (value < (((UInt32)1) << (numAdds * 5 + 6)))
+ break;
+ if (dest)
+ dest[destPos] = (char)(kUtf8Limits[numAdds - 1] + (value >> (6 * numAdds)));
+ destPos++;
+ do
+ {
+ numAdds--;
+ if (dest)
+ dest[destPos] = (char)(0x80 + ((value >> (6 * numAdds)) & 0x3F));
+ destPos++;
+ }
+ while (numAdds != 0);
+ }
+ *destLen = destPos;
+ return False;
+}
+
+bool ConvertUTF8ToUnicode(const AString &src, UString &dest)
+{
+ dest.Empty();
+ size_t destLen = 0;
+ Utf8_To_Utf16(NULL, &destLen, src, src.Length());
+ wchar_t *p = dest.GetBuffer((int)destLen);
+ Bool res = Utf8_To_Utf16(p, &destLen, src, src.Length());
+ p[destLen] = 0;
+ dest.ReleaseBuffer();
+ return res ? true : false;
+}
+
+bool ConvertUnicodeToUTF8(const UString &src, AString &dest)
+{
+ dest.Empty();
+ size_t destLen = 0;
+ Utf16_To_Utf8(NULL, &destLen, src, src.Length());
+ char *p = dest.GetBuffer((int)destLen);
+ Bool res = Utf16_To_Utf8(p, &destLen, src, src.Length());
+ p[destLen] = 0;
+ dest.ReleaseBuffer();
+ return res ? true : false;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/UTFConvert.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,11 @@
+// Common/UTFConvert.h
+
+#ifndef __COMMON_UTFCONVERT_H
+#define __COMMON_UTFCONVERT_H
+
+#include "MyString.h"
+
+bool ConvertUTF8ToUnicode(const AString &utfString, UString &resultString);
+bool ConvertUnicodeToUTF8(const UString &unicodeString, AString &resultString);
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,462 @@
+// Common/Wildcard.cpp
+
+#include "StdAfx.h"
+
+#include "../../C/Types.h"
+
+#include "Wildcard.h"
+
+bool g_CaseSensitive =
+ #ifdef _WIN32
+ false;
+ #else
+ true;
+ #endif
+
+static const wchar_t kAnyCharsChar = L'*';
+static const wchar_t kAnyCharChar = L'?';
+
+#ifdef _WIN32
+static const wchar_t kDirDelimiter1 = L'\\';
+#endif
+static const wchar_t kDirDelimiter2 = L'/';
+
+static const UString kWildCardCharSet = L"?*";
+
+static const UString kIllegalWildCardFileNameChars=
+ L"\x1\x2\x3\x4\x5\x6\x7\x8\x9\xA\xB\xC\xD\xE\xF"
+ L"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
+ L"\"/:<>\\|";
+
+
+static inline bool IsCharDirLimiter(wchar_t c)
+{
+ return (
+ #ifdef _WIN32
+ c == kDirDelimiter1 ||
+ #endif
+ c == kDirDelimiter2);
+}
+
+int CompareFileNames(const UString &s1, const UString &s2)
+{
+ if (g_CaseSensitive)
+ return s1.Compare(s2);
+ return s1.CompareNoCase(s2);
+}
+
+// -----------------------------------------
+// this function compares name with mask
+// ? - any char
+// * - any char or empty
+
+static bool EnhancedMaskTest(const wchar_t *mask, const wchar_t *name)
+{
+ for (;;)
+ {
+ wchar_t m = *mask;
+ wchar_t c = *name;
+ if (m == 0)
+ return (c == 0);
+ if (m == kAnyCharsChar)
+ {
+ if (EnhancedMaskTest(mask + 1, name))
+ return true;
+ if (c == 0)
+ return false;
+ }
+ else
+ {
+ if (m == kAnyCharChar)
+ {
+ if (c == 0)
+ return false;
+ }
+ else if (m != c)
+ if (g_CaseSensitive || MyCharUpper(m) != MyCharUpper(c))
+ return false;
+ mask++;
+ }
+ name++;
+ }
+}
+
+// --------------------------------------------------
+// Splits path to strings
+
+void SplitPathToParts(const UString &path, UStringVector &pathParts)
+{
+ pathParts.Clear();
+ UString name;
+ int len = path.Length();
+ if (len == 0)
+ return;
+ for (int i = 0; i < len; i++)
+ {
+ wchar_t c = path[i];
+ if (IsCharDirLimiter(c))
+ {
+ pathParts.Add(name);
+ name.Empty();
+ }
+ else
+ name += c;
+ }
+ pathParts.Add(name);
+}
+
+void SplitPathToParts(const UString &path, UString &dirPrefix, UString &name)
+{
+ int i;
+ for (i = path.Length() - 1; i >= 0; i--)
+ if (IsCharDirLimiter(path[i]))
+ break;
+ dirPrefix = path.Left(i + 1);
+ name = path.Mid(i + 1);
+}
+
+UString ExtractDirPrefixFromPath(const UString &path)
+{
+ int i;
+ for (i = path.Length() - 1; i >= 0; i--)
+ if (IsCharDirLimiter(path[i]))
+ break;
+ return path.Left(i + 1);
+}
+
+UString ExtractFileNameFromPath(const UString &path)
+{
+ int i;
+ for (i = path.Length() - 1; i >= 0; i--)
+ if (IsCharDirLimiter(path[i]))
+ break;
+ return path.Mid(i + 1);
+}
+
+
+bool CompareWildCardWithName(const UString &mask, const UString &name)
+{
+ return EnhancedMaskTest(mask, name);
+}
+
+bool DoesNameContainWildCard(const UString &path)
+{
+ return (path.FindOneOf(kWildCardCharSet) >= 0);
+}
+
+
+// ----------------------------------------------------------'
+// NWildcard
+
+namespace NWildcard {
+
+
+/*
+M = MaskParts.Size();
+N = TestNameParts.Size();
+
+ File Dir
+ForFile req M<=N [N-M, N) -
+ nonreq M=N [0, M) -
+
+ForDir req M<N [0, M) ... [N-M-1, N-1) same as ForBoth-File
+ nonreq [0, M) same as ForBoth-File
+
+ForBoth req m<=N [0, M) ... [N-M, N) same as ForBoth-File
+ nonreq [0, M) same as ForBoth-File
+
+*/
+
+bool CItem::CheckPath(const UStringVector &pathParts, bool isFile) const
+{
+ if (!isFile && !ForDir)
+ return false;
+ int delta = (int)pathParts.Size() - (int)PathParts.Size();
+ if (delta < 0)
+ return false;
+ int start = 0;
+ int finish = 0;
+ if (isFile)
+ {
+ if (!ForDir && !Recursive && delta !=0)
+ return false;
+ if (!ForFile && delta == 0)
+ return false;
+ if (!ForDir && Recursive)
+ start = delta;
+ }
+ if (Recursive)
+ {
+ finish = delta;
+ if (isFile && !ForFile)
+ finish = delta - 1;
+ }
+ for (int d = start; d <= finish; d++)
+ {
+ int i;
+ for (i = 0; i < PathParts.Size(); i++)
+ if (!CompareWildCardWithName(PathParts[i], pathParts[i + d]))
+ break;
+ if (i == PathParts.Size())
+ return true;
+ }
+ return false;
+}
+
+int CCensorNode::FindSubNode(const UString &name) const
+{
+ for (int i = 0; i < SubNodes.Size(); i++)
+ if (CompareFileNames(SubNodes[i].Name, name) == 0)
+ return i;
+ return -1;
+}
+
+void CCensorNode::AddItemSimple(bool include, CItem &item)
+{
+ if (include)
+ IncludeItems.Add(item);
+ else
+ ExcludeItems.Add(item);
+}
+
+void CCensorNode::AddItem(bool include, CItem &item)
+{
+ if (item.PathParts.Size() <= 1)
+ {
+ AddItemSimple(include, item);
+ return;
+ }
+ const UString &front = item.PathParts.Front();
+ if (DoesNameContainWildCard(front))
+ {
+ AddItemSimple(include, item);
+ return;
+ }
+ int index = FindSubNode(front);
+ if (index < 0)
+ index = SubNodes.Add(CCensorNode(front, this));
+ item.PathParts.Delete(0);
+ SubNodes[index].AddItem(include, item);
+}
+
+void CCensorNode::AddItem(bool include, const UString &path, bool recursive, bool forFile, bool forDir)
+{
+ CItem item;
+ SplitPathToParts(path, item.PathParts);
+ item.Recursive = recursive;
+ item.ForFile = forFile;
+ item.ForDir = forDir;
+ AddItem(include, item);
+}
+
+bool CCensorNode::NeedCheckSubDirs() const
+{
+ for (int i = 0; i < IncludeItems.Size(); i++)
+ {
+ const CItem &item = IncludeItems[i];
+ if (item.Recursive || item.PathParts.Size() > 1)
+ return true;
+ }
+ return false;
+}
+
+bool CCensorNode::AreThereIncludeItems() const
+{
+ if (IncludeItems.Size() > 0)
+ return true;
+ for (int i = 0; i < SubNodes.Size(); i++)
+ if (SubNodes[i].AreThereIncludeItems())
+ return true;
+ return false;
+}
+
+bool CCensorNode::CheckPathCurrent(bool include, const UStringVector &pathParts, bool isFile) const
+{
+ const CObjectVector<CItem> &items = include ? IncludeItems : ExcludeItems;
+ for (int i = 0; i < items.Size(); i++)
+ if (items[i].CheckPath(pathParts, isFile))
+ return true;
+ return false;
+}
+
+bool CCensorNode::CheckPath(UStringVector &pathParts, bool isFile, bool &include) const
+{
+ if (CheckPathCurrent(false, pathParts, isFile))
+ {
+ include = false;
+ return true;
+ }
+ include = true;
+ bool finded = CheckPathCurrent(true, pathParts, isFile);
+ if (pathParts.Size() == 1)
+ return finded;
+ int index = FindSubNode(pathParts.Front());
+ if (index >= 0)
+ {
+ UStringVector pathParts2 = pathParts;
+ pathParts2.Delete(0);
+ if (SubNodes[index].CheckPath(pathParts2, isFile, include))
+ return true;
+ }
+ return finded;
+}
+
+bool CCensorNode::CheckPath(const UString &path, bool isFile, bool &include) const
+{
+ UStringVector pathParts;
+ SplitPathToParts(path, pathParts);
+ return CheckPath(pathParts, isFile, include);
+}
+
+bool CCensorNode::CheckPath(const UString &path, bool isFile) const
+{
+ bool include;
+ if (CheckPath(path, isFile, include))
+ return include;
+ return false;
+}
+
+bool CCensorNode::CheckPathToRoot(bool include, UStringVector &pathParts, bool isFile) const
+{
+ if (CheckPathCurrent(include, pathParts, isFile))
+ return true;
+ if (Parent == 0)
+ return false;
+ pathParts.Insert(0, Name);
+ return Parent->CheckPathToRoot(include, pathParts, isFile);
+}
+
+/*
+bool CCensorNode::CheckPathToRoot(bool include, const UString &path, bool isFile) const
+{
+ UStringVector pathParts;
+ SplitPathToParts(path, pathParts);
+ return CheckPathToRoot(include, pathParts, isFile);
+}
+*/
+
+void CCensorNode::AddItem2(bool include, const UString &path, bool recursive)
+{
+ if (path.IsEmpty())
+ return;
+ bool forFile = true;
+ bool forFolder = true;
+ UString path2 = path;
+ if (IsCharDirLimiter(path[path.Length() - 1]))
+ {
+ path2.Delete(path.Length() - 1);
+ forFile = false;
+ }
+ AddItem(include, path2, recursive, forFile, forFolder);
+}
+
+void CCensorNode::ExtendExclude(const CCensorNode &fromNodes)
+{
+ ExcludeItems += fromNodes.ExcludeItems;
+ for (int i = 0; i < fromNodes.SubNodes.Size(); i++)
+ {
+ const CCensorNode &node = fromNodes.SubNodes[i];
+ int subNodeIndex = FindSubNode(node.Name);
+ if (subNodeIndex < 0)
+ subNodeIndex = SubNodes.Add(CCensorNode(node.Name, this));
+ SubNodes[subNodeIndex].ExtendExclude(node);
+ }
+}
+
+int CCensor::FindPrefix(const UString &prefix) const
+{
+ for (int i = 0; i < Pairs.Size(); i++)
+ if (CompareFileNames(Pairs[i].Prefix, prefix) == 0)
+ return i;
+ return -1;
+}
+
+void CCensor::AddItem(bool include, const UString &path, bool recursive)
+{
+ UStringVector pathParts;
+ if (path.IsEmpty())
+ throw "Empty file path";
+ SplitPathToParts(path, pathParts);
+ bool forFile = true;
+ if (pathParts.Back().IsEmpty())
+ {
+ forFile = false;
+ pathParts.DeleteBack();
+ }
+ const UString &front = pathParts.Front();
+ bool isAbs = false;
+ if (front.IsEmpty())
+ isAbs = true;
+ else if (front.Length() == 2 && front[1] == L':')
+ isAbs = true;
+ else
+ {
+ for (int i = 0; i < pathParts.Size(); i++)
+ {
+ const UString &part = pathParts[i];
+ if (part == L".." || part == L".")
+ {
+ isAbs = true;
+ break;
+ }
+ }
+ }
+ int numAbsParts = 0;
+ if (isAbs)
+ if (pathParts.Size() > 1)
+ numAbsParts = pathParts.Size() - 1;
+ else
+ numAbsParts = 1;
+ UString prefix;
+ for (int i = 0; i < numAbsParts; i++)
+ {
+ const UString &front = pathParts.Front();
+ if (DoesNameContainWildCard(front))
+ break;
+ prefix += front;
+ prefix += WCHAR_PATH_SEPARATOR;
+ pathParts.Delete(0);
+ }
+ int index = FindPrefix(prefix);
+ if (index < 0)
+ index = Pairs.Add(CPair(prefix));
+
+ CItem item;
+ item.PathParts = pathParts;
+ item.ForDir = true;
+ item.ForFile = forFile;
+ item.Recursive = recursive;
+ Pairs[index].Head.AddItem(include, item);
+}
+
+bool CCensor::CheckPath(const UString &path, bool isFile) const
+{
+ bool finded = false;
+ for (int i = 0; i < Pairs.Size(); i++)
+ {
+ bool include;
+ if (Pairs[i].Head.CheckPath(path, isFile, include))
+ {
+ if (!include)
+ return false;
+ finded = true;
+ }
+ }
+ return finded;
+}
+
+void CCensor::ExtendExclude()
+{
+ int i;
+ for (i = 0; i < Pairs.Size(); i++)
+ if (Pairs[i].Prefix.IsEmpty())
+ break;
+ if (i == Pairs.Size())
+ return;
+ int index = i;
+ for (i = 0; i < Pairs.Size(); i++)
+ if (index != i)
+ Pairs[i].Head.ExtendExclude(Pairs[index].Head);
+}
+
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Common/Wildcard.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,80 @@
+// Common/Wildcard.h
+
+#ifndef __COMMON_WILDCARD_H
+#define __COMMON_WILDCARD_H
+
+#include "MyString.h"
+
+int CompareFileNames(const UString &s1, const UString &s2);
+
+void SplitPathToParts(const UString &path, UStringVector &pathParts);
+void SplitPathToParts(const UString &path, UString &dirPrefix, UString &name);
+UString ExtractDirPrefixFromPath(const UString &path);
+UString ExtractFileNameFromPath(const UString &path);
+bool DoesNameContainWildCard(const UString &path);
+bool CompareWildCardWithName(const UString &mask, const UString &name);
+
+namespace NWildcard {
+
+struct CItem
+{
+ UStringVector PathParts;
+ bool Recursive;
+ bool ForFile;
+ bool ForDir;
+ bool CheckPath(const UStringVector &pathParts, bool isFile) const;
+};
+
+class CCensorNode
+{
+ CCensorNode *Parent;
+ bool CheckPathCurrent(bool include, const UStringVector &pathParts, bool isFile) const;
+ void AddItemSimple(bool include, CItem &item);
+ bool CheckPath(UStringVector &pathParts, bool isFile, bool &include) const;
+public:
+ CCensorNode(): Parent(0) { };
+ CCensorNode(const UString &name, CCensorNode *parent): Name(name), Parent(parent) { };
+ UString Name;
+ CObjectVector<CCensorNode> SubNodes;
+ CObjectVector<CItem> IncludeItems;
+ CObjectVector<CItem> ExcludeItems;
+
+ int FindSubNode(const UString &path) const;
+
+ void AddItem(bool include, CItem &item);
+ void AddItem(bool include, const UString &path, bool recursive, bool forFile, bool forDir);
+ void AddItem2(bool include, const UString &path, bool recursive);
+
+ bool NeedCheckSubDirs() const;
+ bool AreThereIncludeItems() const;
+
+ bool CheckPath(const UString &path, bool isFile, bool &include) const;
+ bool CheckPath(const UString &path, bool isFile) const;
+
+ bool CheckPathToRoot(bool include, UStringVector &pathParts, bool isFile) const;
+ // bool CheckPathToRoot(const UString &path, bool isFile, bool include) const;
+ void ExtendExclude(const CCensorNode &fromNodes);
+};
+
+struct CPair
+{
+ UString Prefix;
+ CCensorNode Head;
+ CPair(const UString &prefix): Prefix(prefix) { };
+};
+
+class CCensor
+{
+ int FindPrefix(const UString &prefix) const;
+public:
+ CObjectVector<CPair> Pairs;
+ bool AllAreRelative() const
+ { return (Pairs.Size() == 1 && Pairs.Front().Prefix.IsEmpty()); }
+ void AddItem(bool include, const UString &path, bool recursive);
+ bool CheckPath(const UString &path, bool isFile) const;
+ void ExtendExclude();
+};
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,37 @@
+// Windows/COM.cpp
+
+#include "StdAfx.h"
+
+#include "Windows/COM.h"
+#include "Common/StringConvert.h"
+
+namespace NWindows {
+namespace NCOM {
+
+// CoInitialize (NULL); must be called!
+
+UString GUIDToStringW(REFGUID guid)
+{
+ UString string;
+ const int kStringSize = 48;
+ StringFromGUID2(guid, string.GetBuffer(kStringSize), kStringSize);
+ string.ReleaseBuffer();
+ return string;
+}
+
+AString GUIDToStringA(REFGUID guid)
+{
+ return UnicodeStringToMultiByte(GUIDToStringW(guid));
+}
+
+HRESULT StringToGUIDW(const wchar_t *string, GUID &classID)
+{
+ return CLSIDFromString((wchar_t *)string, &classID);
+}
+
+HRESULT StringToGUIDA(const char *string, GUID &classID)
+{
+ return StringToGUIDW(MultiByteToUnicodeString(string), classID);
+}
+
+}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/COM.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,69 @@
+// Windows/COM.h
+
+#ifndef __WINDOWS_COM_H
+#define __WINDOWS_COM_H
+
+#include "Common/MyString.h"
+
+namespace NWindows {
+namespace NCOM {
+
+#ifdef _WIN32
+
+class CComInitializer
+{
+public:
+ CComInitializer()
+ {
+ #ifdef UNDER_CE
+ CoInitializeEx(NULL, COINIT_MULTITHREADED);
+ #else
+ // it's single thread. Do we need multithread?
+ CoInitialize(NULL);
+ #endif
+ };
+ ~CComInitializer() { CoUninitialize(); };
+};
+
+class CStgMedium
+{
+ STGMEDIUM _object;
+public:
+ bool _mustBeReleased;
+ CStgMedium(): _mustBeReleased(false) {}
+ ~CStgMedium() { Free(); }
+ void Free()
+ {
+ if (_mustBeReleased)
+ ReleaseStgMedium(&_object);
+ _mustBeReleased = false;
+ }
+ const STGMEDIUM* operator->() const { return &_object;}
+ STGMEDIUM* operator->() { return &_object;}
+ STGMEDIUM* operator&() { return &_object; }
+};
+
+#endif
+
+//////////////////////////////////
+// GUID <--> String Conversions
+UString GUIDToStringW(REFGUID guid);
+AString GUIDToStringA(REFGUID guid);
+#ifdef UNICODE
+ #define GUIDToString GUIDToStringW
+#else
+ #define GUIDToString GUIDToStringA
+#endif
+
+HRESULT StringToGUIDW(const wchar_t *string, GUID &classID);
+HRESULT StringToGUIDA(const char *string, GUID &classID);
+#ifdef UNICODE
+ #define StringToGUID StringToGUIDW
+#else
+ #define StringToGUID StringToGUIDA
+#endif
+
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,160 @@
+// Windows/Clipboard.cpp
+
+#include "StdAfx.h"
+
+
+#include "Windows/Clipboard.h"
+#include "Windows/Defs.h"
+#ifdef _WIN32
+#include "Windows/Memory.h"
+#include "Windows/Shell.h"
+#include "Windows/Memory.h"
+#else
+#include <wx/clipbrd.h>
+#include <wx/dataobj.h>
+#undef _WIN32
+#endif
+
+#include "Common/StringConvert.h"
+
+namespace NWindows {
+
+bool CClipboard::Open(HWND wndNewOwner)
+{
+#ifdef _WIN32
+ m_Open = BOOLToBool(::OpenClipboard(wndNewOwner));
+#else
+ m_Open = wxTheClipboard->Open();
+#endif
+ return m_Open;
+}
+
+CClipboard::~CClipboard()
+{
+ Close();
+}
+
+bool CClipboard::Close()
+{
+ if (!m_Open)
+ return true;
+#ifdef _WIN32
+ m_Open = !BOOLToBool(CloseClipboard());
+#else
+ wxTheClipboard->Close();
+ m_Open = false;
+#endif
+ return !m_Open;
+}
+
+#ifdef _WIN32
+bool ClipboardIsFormatAvailableHDROP()
+{
+ return BOOLToBool(IsClipboardFormatAvailable(CF_HDROP));
+}
+#endif
+
+/*
+bool ClipboardGetTextString(AString &s)
+{
+ s.Empty();
+ if (!IsClipboardFormatAvailable(CF_TEXT))
+ return false;
+ CClipboard clipboard;
+
+ if (!clipboard.Open(NULL))
+ return false;
+
+ HGLOBAL h = ::GetClipboardData(CF_TEXT);
+ if (h != NULL)
+ {
+ NMemory::CGlobalLock globalLock(h);
+ const char *p = (const char *)globalLock.GetPointer();
+ if (p != NULL)
+ {
+ s = p;
+ return true;
+ }
+ }
+ return false;
+}
+*/
+
+/*
+bool ClipboardGetFileNames(UStringVector &names)
+{
+ names.Clear();
+ if (!IsClipboardFormatAvailable(CF_HDROP))
+ return false;
+ CClipboard clipboard;
+
+ if (!clipboard.Open(NULL))
+ return false;
+
+ HGLOBAL h = ::GetClipboardData(CF_HDROP);
+ if (h != NULL)
+ {
+ NMemory::CGlobalLock globalLock(h);
+ void *p = (void *)globalLock.GetPointer();
+ if (p != NULL)
+ {
+ NShell::CDrop drop(false);
+ drop.Attach((HDROP)p);
+ drop.QueryFileNames(names);
+ return true;
+ }
+ }
+ return false;
+}
+*/
+
+#ifdef _WIN32
+static bool ClipboardSetData(UINT uFormat, const void *data, size_t size)
+{
+ NMemory::CGlobal global;
+ if (!global.Alloc(GMEM_DDESHARE | GMEM_MOVEABLE, size))
+ return false;
+ {
+ NMemory::CGlobalLock globalLock(global);
+ LPVOID p = globalLock.GetPointer();
+ if (p == NULL)
+ return false;
+ memcpy(p, data, size);
+ }
+ if (::SetClipboardData(uFormat, global) == NULL)
+ return false;
+ global.Detach();
+ return true;
+}
+#endif
+
+bool ClipboardSetText(HWND owner, const UString &s)
+{
+ CClipboard clipboard;
+ if (!clipboard.Open(owner))
+ return false;
+#ifdef _WIN32
+ if (!::EmptyClipboard())
+ return false;
+
+ bool res;
+ res = ClipboardSetData(CF_UNICODETEXT, (const wchar_t *)s, (s.Length() + 1) * sizeof(wchar_t));
+ #ifndef _UNICODE
+ AString a;
+ a = UnicodeStringToMultiByte(s, CP_ACP);
+ res |= ClipboardSetData(CF_TEXT, (const char *)a, (a.Length() + 1) * sizeof(char));
+ a = UnicodeStringToMultiByte(s, CP_OEMCP);
+ res |= ClipboardSetData(CF_OEMTEXT, (const char *)a, (a.Length() + 1) * sizeof(char));
+ #endif
+ return res;
+#else
+ wxTheClipboard->Clear();
+ // This data objects are held by the clipboard,
+ // so do not delete them in the app.
+ wxString ws(s);
+ wxTheClipboard->SetData( new wxTextDataObject(ws) );
+ return true;
+#endif
+}
+
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Clipboard.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,28 @@
+// Windows/Clipboard.h
+
+#ifndef __CLIPBOARD_H
+#define __CLIPBOARD_H
+
+#include "Common/MyString.h"
+
+namespace NWindows {
+
+class CClipboard
+{
+ bool m_Open;
+public:
+ CClipboard(): m_Open(false) {};
+ ~CClipboard();
+ bool Open(HWND wndNewOwner);
+ bool Close();
+};
+
+bool ClipboardIsFormatAvailableHDROP();
+
+// bool ClipboardGetFileNames(UStringVector &names);
+// bool ClipboardGetTextString(AString &s);
+bool ClipboardSetText(HWND owner, const UString &s);
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/CommonDialog.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/CommonDialog.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/CommonDialog.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/CommonDialog.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,19 @@
+// Windows/CommonDialog.h
+
+#ifndef __WINDOWS_COMMON_DIALOG_H
+#define __WINDOWS_COMMON_DIALOG_H
+
+#include "Common/MyString.h"
+
+namespace NWindows{
+
+bool MyGetOpenFileName(HWND hwnd, LPCWSTR title, LPCWSTR fullFileName,
+ LPCWSTR s, UString &resPath
+ #ifdef UNDER_CE
+ , bool openFolder = false
+ #endif
+);
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ComboBox.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ComboBox.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ComboBox.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ComboBox.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,82 @@
+// Windows/Control/ComboBox.h
+
+#ifndef __WINDOWS_WX_CONTROL_COMBOBOX_H
+#define __WINDOWS_WX_CONTROL_COMBOBOX_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+
+#include "Windows/Control/Window2.h" // NMHDR
+
+#ifndef _WIN32
+#define CB_ERR (-1) // wxNOT_FOUND
+#endif
+
+typedef struct
+{
+ NMHDR hdr;
+#define CBENF_ESCAPE 1
+#define CBENF_RETURN 2
+ int iWhy;
+} NMCBEENDEDITW;
+
+typedef NMCBEENDEDITW * PNMCBEENDEDITW;
+
+
+class wxComboBox;
+
+namespace NWindows {
+ namespace NControl {
+
+ class CComboBox // : public CWindow
+ {
+ wxComboBox* _choice;
+ public:
+ CComboBox() : _choice(0) {}
+
+ void Attach(wxWindow * newWindow);
+ wxWindow * Detach();
+ operator HWND() const;
+
+ int AddString(const TCHAR * txt);
+
+ void SetText(LPCTSTR s);
+
+ void GetText(CSysString &s);
+
+ int GetCount() const ;
+ void GetLBText(int index, CSysString &s);
+
+ void SetCurSel(int index);
+ int GetCurSel();
+
+ void SetItemData(int index, int val);
+
+ int GetItemData(int index);
+
+ void Enable(bool state);
+
+ void ResetContent();
+ };
+
+ class CComboBoxEx : public CComboBox // : public CWindow
+ {
+ public:
+ /* FIXME
+ LRESULT DeleteItem(int index)
+ { return SendMessage(CBEM_DELETEITEM, index, 0); }
+ LRESULT InsertItem(COMBOBOXEXITEM *item)
+ { return SendMessage(CBEM_INSERTITEM, 0, (LPARAM)item); }
+ DWORD SetExtendedStyle(DWORD exMask, DWORD exStyle)
+ { return (DWORD)SendMessage(CBEM_SETEXTENDEDSTYLE, exMask, exStyle); }
+ HWND GetEditControl()
+ { return (HWND)SendMessage(CBEM_GETEDITCONTROL, 0, 0); }
+ */
+ };
+
+
+ }
+}
+
+#endif // __WINDOWS_WX_CONTROL_COMBOBOX_H
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Controls.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Controls.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Controls.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Controls.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,515 @@
+// Dialog.cpp
+
+#include "StdAfx.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWidgets headers)
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+ #include "wx/imaglist.h"
+ #include "wx/listctrl.h"
+#endif
+
+#undef _WIN32
+
+#include "Windows/Control/Dialog.h"
+
+void verify_main_thread(void);
+
+class LockGUI
+{
+ bool _IsMain;
+ public:
+ LockGUI() {
+ verify_main_thread();
+ _IsMain = wxThread::IsMain();
+ if (!_IsMain) {
+ // DEBUG
+ printf("GuiEnter-Controls(0x%lx)\n",wxThread::GetCurrentId());
+ abort(); // FIXME wxMutexGuiEnter();
+ }
+ }
+ ~LockGUI() {
+ if (!_IsMain) {
+ wxMutexGuiLeave();
+ // DEBUG printf("GuiLeave(0x%lx)\n",wxThread::GetCurrentId());
+ }
+ }
+};
+/////////////////////////
+
+static const wxString CLASS_NAME_wxStaticText = wxT("wxStaticText");
+static const wxString CLASS_NAME_wxTextCtrl = wxT("wxTextCtrl");
+
+namespace NWindows {
+ namespace NControl {
+
+ void CDialogChildControl::SetText(LPCWSTR s)
+ {
+ LockGUI lock;
+ const wxChar * class_name = _window->GetClassInfo()->GetClassName ();
+
+ if ( CLASS_NAME_wxStaticText == class_name) {
+ ((wxStaticText *)_window)->SetLabel(s);
+ } else if ( CLASS_NAME_wxTextCtrl == class_name) {
+ ((wxTextCtrl *)_window)->SetLabel(s);
+ } else {
+ // ((wxControl *)_window)->SetValue(s); // FIXME
+ printf("INTERNAL ERROR - CDialogChildControl::SetText(class=%ls) not implemented\n",class_name);
+ exit(-1);
+ }
+ }
+
+ bool CDialogChildControl::GetText(CSysString &s)
+ {
+ wxString str;
+ {
+ LockGUI lock;
+ const wxChar * class_name = _window->GetClassInfo()->GetClassName ();
+ if ( CLASS_NAME_wxStaticText == class_name) {
+ str = ((wxStaticText *)_window)->GetLabel();
+ } else if ( CLASS_NAME_wxTextCtrl == class_name) {
+ str = ((wxTextCtrl *)_window)->GetLabel();
+ } else {
+ // FIXME str = ((wxTextCtrl *)_window)->GetValue();
+ printf("INTERNAL ERROR - CDialogChildControl::GetText(class=%ls) not implemented\n",class_name);
+ exit(-1);
+ }
+ }
+ s = str;
+ return true;
+ }
+ }
+}
+
+///////////////////////// Windows/Control/ComboBox.cpp
+#include "Windows/Control/ComboBox.h"
+
+namespace NWindows {
+ namespace NControl {
+
+ void CComboBox::Attach(wxWindow * newWindow) { _choice = (wxComboBox*)newWindow; }
+
+ wxWindow * CComboBox::Detach()
+ {
+ wxWindow * window = _choice;
+ _choice = NULL;
+ return window;
+ }
+
+ CComboBox::operator HWND() const { return (HWND)_choice; }
+
+
+ int CComboBox::AddString(const TCHAR * txt) {
+ LockGUI lock;
+ wxString item(txt);
+ return _choice->Append(item);
+ }
+
+ void CComboBox::SetText(LPCTSTR s) {
+ LockGUI lock;
+ wxString str(s);
+ _choice->SetValue(str);
+ }
+
+ void CComboBox::GetText(CSysString &s) {
+ LockGUI lock;
+ wxString str = _choice->GetValue();
+ s = str;
+ }
+
+ int CComboBox::GetCount() const {
+ LockGUI lock;
+ return _choice->GetCount();
+ }
+
+ void CComboBox::GetLBText(int index, CSysString &s) {
+ LockGUI lock;
+ wxString str = _choice->GetString(index);
+ s = str;
+ }
+
+ void CComboBox::SetCurSel(int index) {
+ LockGUI lock;
+ _choice->SetSelection(index);
+ }
+
+ int CComboBox::GetCurSel() {
+ LockGUI lock;
+ return _choice->GetSelection();
+ }
+
+ void CComboBox::SetItemData(int index, int val) {
+ LockGUI lock;
+ _choice->SetClientData( index, (void *)(((char *)0) + val));
+ }
+
+ int CComboBox::GetItemData(int index)
+ {
+ LockGUI lock;
+ void * data = _choice->GetClientData(index);
+ int ret = (int)(((char *)data) - ((char *)0));
+ return ret;
+ }
+
+ void CComboBox::Enable(bool state) {
+ LockGUI lock;
+ _choice->Enable(state);
+ }
+
+ void CComboBox::ResetContent() {
+ LockGUI lock;
+ _choice->Clear();
+ }
+ }
+}
+
+///////////////////////// Windows/Control/Edit.cpp
+#include "Windows/Control/Edit.h"
+
+namespace NWindows {
+ namespace NControl {
+
+ void CEdit::SetPasswordChar(WPARAM c) // Warning : does not work for wxMSW
+ {
+ LockGUI lock;
+ long style = _window->GetWindowStyle();
+ if ( c == 0 ) style &= ~(wxTE_PASSWORD);
+ else style |= wxTE_PASSWORD;
+ _window->SetWindowStyle(style);
+ _window->Refresh();
+ }
+
+
+ void CEdit::Show(int cmdShow)
+ {
+ LockGUI lock;
+ // FIXME _window->Show(cmdShow != SW_HIDE);
+ _window->Enable(cmdShow != SW_HIDE);
+ }
+
+ void CEdit::SetText(LPCWSTR s)
+ {
+ LockGUI lock;
+ ((wxTextCtrl *)_window)->SetValue(s);
+ }
+
+ bool CEdit::GetText(CSysString &s)
+ {
+ wxString str;
+ {
+ LockGUI lock;
+ str = ((wxTextCtrl *)_window)->GetValue();
+ }
+ s = str;
+ return true;
+ }
+
+ }
+}
+
+///////////////////////// Windows/Control/ProgressBar.cpp
+#include "Windows/Control/ProgressBar.h"
+
+namespace NWindows {
+ namespace NControl {
+
+ CProgressBar::CProgressBar(wxWindow* newWindow):
+ _window((wxGauge *)newWindow) , _minValue(0), _range(0) { }
+
+ void CProgressBar::Attach(wxWindow* newWindow) {
+ _window = (wxGauge *)newWindow;
+ _minValue = 0;
+ _range = 0;
+ }
+
+ void CProgressBar::SetRange32(int minValue, int maxValue) {
+ int range = maxValue - minValue;
+ if (range >= 1)
+ {
+ LockGUI lock;
+ _minValue = minValue;
+ _range = range;
+ _window->SetRange(_range);
+ }
+ }
+
+ void CProgressBar::SetPos(int pos) {
+ if (_range >= 1)
+ {
+ LockGUI lock;
+ int value = pos - _minValue;
+ if ((value >= 0) && (value <= _range)) _window->SetValue(value);
+ }
+ }
+
+ }
+}
+
+///////////////////////// Windows/Control/StatusBar.cpp
+#include "Windows/Control/StatusBar.h"
+
+namespace NWindows {
+ namespace NControl {
+
+ void CStatusBar::Attach(wxWindow * newWindow) { _statusBar = (wxStatusBar*)newWindow; }
+
+ wxWindow * CStatusBar::Detach()
+ {
+ wxWindow * window = _statusBar;
+ _statusBar = NULL;
+ return window;
+ }
+
+ void CStatusBar::SetText(int index, LPCTSTR text)
+ {
+ _statusBar->SetStatusText(text,index);
+ }
+
+ }
+
+}
+
+///////////////////////// Windows/Control/ListView.cpp
+#include "Windows/Control/ListView.h"
+
+namespace NWindows {
+namespace NControl {
+
+ void CListView::Attach(wxWindow * newWindow) {
+ _list = (wxListCtrl *)newWindow;
+ }
+
+ CListView::operator HWND() const { return (HWND)_list; }
+
+ int CListView::GetItemCount() const {return _list->GetItemCount(); }
+
+ int CListView::InsertItem(int index, LPCTSTR text) {
+ return _list->InsertItem(index, text);
+ }
+ int CListView::InsertItem(const LVITEM* item) {
+ /*
+ int col = item->iSubItem;
+ wxString text;
+ if (item->mask & LVIF_TEXT) text = item->pszText;
+
+ // printf("%p->InsertItem(id=%d,%ls)\n",_list,item->iItem, (const wchar_t *)text);
+ return _list->InsertItem(item->iItem, text);
+ */
+ wxListItem info;
+ long mask = 0;
+ info.SetId(item->iItem);
+ if (item->mask & LVIF_TEXT)
+ {
+ info.SetText(item->pszText);
+ mask |= wxLIST_MASK_TEXT;
+ }
+ if (item->mask & LVIF_PARAM)
+ {
+ info.SetData(item->lParam);
+ mask |= wxLIST_MASK_DATA;
+ }
+ if (item->mask & LVIF_STATE)
+ {
+ info.SetState(item->state);
+ mask |= wxLIST_MASK_STATE;
+ }
+ // FIXME if (item->mask & LVIF_IMAGE)
+
+ info.SetMask(mask);
+
+ return _list->InsertItem(info);
+ }
+
+ void CListView::SetItem(const LVITEM* item) {
+ int col = item->iSubItem;
+ wxString text;
+ if (item->mask & LVIF_TEXT) text = item->pszText;
+ // printf("%p->SetItem(id=%d,col=%d,%ls)\n",_list,item->iItem, col,(const wchar_t *)text);
+ _list->SetItem(item->iItem, col, text);
+ }
+
+ int CListView::SetSubItem(int index, int subIndex, LPCTSTR text)
+ {
+ return _list->SetItem(index, subIndex, text);
+ }
+
+ void SetUnicodeFormat(bool fUnicode) { return ; }
+
+ void CListView::InsertColumn(int columnIndex, LPCTSTR text, int width)
+ {
+ _list->InsertColumn(columnIndex, text, wxLIST_FORMAT_LEFT, width);
+ }
+
+ void CListView::InsertColumn(int columnIndex, const LVCOLUMNW *columnInfo)
+ {
+ wxString text;
+ int format = wxLIST_FORMAT_LEFT;
+ int width = -1;
+ if (columnInfo->mask & LVCF_FMT)
+ {
+ if (columnInfo->fmt == LVCFMT_LEFT) format = wxLIST_FORMAT_LEFT;
+ if (columnInfo->fmt == LVCFMT_RIGHT) format = wxLIST_FORMAT_RIGHT;
+ }
+ if (columnInfo->mask & LVCF_TEXT) text = columnInfo->pszText;
+ if (columnInfo->mask & LVCF_WIDTH) width = columnInfo->cx;
+ // FIXME LVCF_SUBITEM
+ // printf("%p->InsertColumn(%d,%ls)\n",_list,columnIndex,(const wchar_t *)heading);
+ _list->InsertColumn(columnIndex, text, format, width);
+ }
+
+ void CListView::DeleteAllItems() {
+ _list->DeleteAllItems();
+ printf("%p->DeleteAllItems()\n",_list);
+ }
+
+ void CListView::SetRedraw(bool b) {
+ if (b) _list->Thaw();
+ else _list->Freeze();
+ printf(" %p->SetRedraw()\n",_list);
+ }
+
+ void CListView::SetItemCount(int count) {
+ // ONLY IF VIRTUAL REPORT -- _list->SetItemCount(count);
+ printf(" %p->SetItemCount(%d)\n",_list,count);
+ }
+
+ void CListView::InvalidateRect(void *, bool) {
+ printf("FIXME %p->InvalidateRect()\n",_list);/* FIXME */
+ }
+
+ int CListView::GetSelectedCount() const {
+ int nb = _list->GetSelectedItemCount();
+ printf(" %p->GetSelectedCount()=>%d\n",_list,nb);
+ return nb;
+ }
+
+ void /* bool */ CListView::EnsureVisible(int index, bool partialOK) {
+
+ printf(" %p->EnsureVisible(%d)\n",_list,index);
+
+ if (index == -1) index = 0;
+ _list->EnsureVisible(index);
+
+ // return true;
+ }
+
+ void CListView::SetItemState(int index, UINT state, UINT mask) {
+ // don't work _list->SetItemState(index, state, mask); !?
+ // try SetItem ...
+ /*
+ wxListItem info;
+
+ info.m_mask = wxLIST_MASK_STATE;
+ info.m_itemId = index;
+ info.m_col = 0;
+ info.m_state = state;
+ info.m_mask = mask;
+
+ _list->SetItem(info);
+ */
+
+ printf(" %p->EnsureVisible(%d)\n",_list,index);
+
+ if (index == -1) return;
+
+ if (mask & LVIS_FOCUSED) {
+ _list->SetItemState(index, state & LVIS_FOCUSED, mask & LVIS_FOCUSED);
+ }
+
+ if (mask & LVIS_SELECTED) {
+ _list->SetItemState(index, state & LVIS_SELECTED, mask & LVIS_SELECTED);
+ }
+
+ }
+
+ UINT CListView::GetItemState(int index, UINT mask) const
+ {
+ UINT state = _list->GetItemState(index, mask);
+ printf("FIXME %p->GetItemState(index=%d,mask=0x%x)=0x%x\n",_list,index,(unsigned)mask,(unsigned)state); /* FIXME */
+
+ return state;
+ }
+
+ void /* bool */ CListView::Update() {
+ printf("FIXME %p->Update()\n",_list); /* FIXME */
+ }
+
+ bool CListView::DeleteColumn(int columnIndex) {
+ // printf("%p->DeleteColumn()\n",_list);
+ if (_list->GetColumnCount() < 1) return false;
+ return _list->DeleteColumn(columnIndex); // always return true !?
+ }
+
+ bool CListView::GetItemParam(int itemIndex, LPARAM ¶m) const
+ {
+ param = _list->GetItemData(itemIndex);
+
+ // printf(" %p->GetItemParam(%d) => %ld\n",_list,itemIndex,(long)param);
+
+ return true;
+ }
+
+ int CListView::GetNextItem(int startIndex, UINT flags) const
+ {
+ int item = _list->GetNextItem(startIndex, wxLIST_NEXT_ALL, flags);
+ printf(" %p->GetNextItem(%d) => %d\n",_list,startIndex,item);
+ return item;
+
+ }
+
+ int CListView::GetFocusedItem() const
+ {
+ int item = _list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED);
+ printf(" %p->GetFocusedItem() => %d\n",_list,item);
+ return item;
+ }
+
+ void CListView::RedrawAllItems()
+ {
+ printf("FIXME %p->RedrawAllItems()\n",_list);
+ }
+
+ // FIXME added
+ int CListView::GetColumnCount()
+ {
+ return _list->GetColumnCount();
+ }
+
+ void CListView::SetFocus() { /* FIXME */ }
+
+ void CListView::RedrawItem(int item) { /* FIXME */ }
+
+ bool CListView::SortItems(PFNLVCOMPARE compareFunction, LPARAM dataParam) {
+ printf(" %p->SortItems()\n",_list);
+ return _list->SortItems(compareFunction, dataParam);
+ }
+
+ bool CListView::GetColumn(int columnIndex, LVCOLUMN* columnInfo)
+ {
+ columnInfo->cx = _list->GetColumnWidth(columnIndex);// FIXME
+
+ bool ret = false;
+
+ if (columnInfo->cx >= 1) ret = true;
+
+ // printf("CListView::GetColumn(%d) cx=%d\n",columnIndex,(int)columnInfo->cx);
+
+ return ret;
+ }
+
+ // HWND EditLabel(int itemIndex)
+ void CListView::EditLabel(int itemIndex)
+ {
+ /* FIXME */
+ }
+
+}}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,560 @@
+// Dialog.cpp
+
+#include "StdAfx.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWidgets headers)
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#include <wx/filename.h>
+
+
+#undef _WIN32
+
+#include "Windows/Control/DialogImpl.h"
+#include "Windows/Synchronization.h"
+
+
+// FIXME
+class MyApp : public wxApp
+{
+public:
+ virtual bool OnInit();
+};
+
+DECLARE_APP(MyApp)
+
+// #include "../GUI/p7zip_32.xpm"
+extern const char * p7zip_32_xpm[];
+
+const TCHAR * nameWindowToUnix(const TCHAR * lpFileName) {
+ if ((lpFileName[0] == wxT('c')) && (lpFileName[1] == wxT(':'))) return lpFileName+2;
+ return lpFileName;
+}
+
+
+extern time_t g_T0; // FIXME
+
+#define DIALOG_ID_MESSAGEBOX 8100
+#define DIALOG_ID_DIR_DIALOG 8101
+#define DIALOG_ID_FILE_DIALOG 8102
+#define DIALOG_ID_POST_DIALOG 8190
+#define DIALOG_ID_END_DIALOG 8199
+
+static struct
+{
+ bool busy;
+
+ int id;
+ wxWindow *parentWindow;
+
+ // CreateDialog
+ NWindows::NControl::CModalDialog * dialog;
+
+ // EndModal
+ int value;
+ NWindows::NControl::CModalDialogImpl * window;
+
+ // MessageBox
+ const TCHAR * msg;
+ const TCHAR * title;
+ int flag;
+
+ //
+ LPCWSTR initialFolderOrFile;
+
+ wxSemaphore * sem;
+ int ret;
+
+ UString resultPath;
+
+#define MAX_CREATE 16
+} g_tabCreate[MAX_CREATE];
+
+static int myCreateHandle2(int n);
+
+static int findFreeInd()
+{
+static NWindows::NSynchronization::CCriticalSection g_CriticalSection;
+
+ g_CriticalSection.Enter();
+ int ind = 0;
+ while (ind < MAX_CREATE)
+ {
+ if (g_tabCreate[ind].busy == false)
+ {
+ g_tabCreate[ind].busy = true;
+ break;
+ }
+ ind++;
+ }
+ g_CriticalSection.Leave();
+
+ return ind;
+}
+
+static int WaitInd(wxWindow * destWindow, int ind,int id,wxWindow * parent,UString &resultPath)
+{
+ int ret = 0;
+
+ g_tabCreate[ind].id = id;
+ g_tabCreate[ind].parentWindow = parent;
+ g_tabCreate[ind].ret = 0;
+ g_tabCreate[ind].resultPath = wxEmptyString;
+
+ if (wxThread::IsMain())
+ {
+ ret = myCreateHandle2(ind);
+ resultPath = g_tabCreate[ind].resultPath;
+ }
+ else
+ {
+ if (destWindow == 0) {
+ extern wxWindow * g_window;
+ if (g_window == 0)
+ {
+ printf("INTERNAL ERROR : g_window and destWindow == NULL\n"); abort();
+ }
+ destWindow = g_window;
+ }
+ g_tabCreate[ind].sem = new wxSemaphore(0);
+
+ // create any type of command event here
+ wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, WORKER_EVENT );
+ event.SetInt( ind );
+
+ // send in a thread-safe way
+ // DEBUG printf("T=0x%lx - %d : WaitInd(%d,%p): BEGIN\n", wxThread::GetCurrentId(),time(0)-g_T0,g_tabCreate[ind].id,g_tabCreate[ind].parentWindow);
+ wxPostEvent( destWindow, event );
+
+ g_tabCreate[ind].sem->Wait();
+
+ ret = g_tabCreate[ind].ret;
+ resultPath = g_tabCreate[ind].resultPath;
+ // DEBUG printf("T=0x%lx - %d : WaitInd(%d,%p): ret=%d\n", wxThread::GetCurrentId(),time(0)-g_T0,g_tabCreate[ind].id,g_tabCreate[ind].parentWindow,ret);
+ delete g_tabCreate[ind].sem;
+ g_tabCreate[ind].sem = 0;
+ }
+
+ g_tabCreate[ind].busy = false;
+
+ return ret;
+}
+
+static int WaitInd(wxWindow * destWindow,int ind,int id,wxWindow * parent)
+{
+ UString resultPath;
+ return WaitInd(destWindow,ind,id,parent,resultPath);
+}
+
+void verify_main_thread(void);
+
+class LockGUI
+{
+ bool _IsMain;
+ public:
+ LockGUI() {
+
+ verify_main_thread();
+
+ _IsMain = wxThread::IsMain();
+ if (!_IsMain) {
+ // DEBUG
+ printf("GuiEnter-Dialog(0x%lx)\n",wxThread::GetCurrentId());
+ abort(); // FIXME wxMutexGuiEnter();
+ }
+ }
+ ~LockGUI() {
+ if (!_IsMain) {
+ wxMutexGuiLeave();
+ // DEBUG printf("GuiLeave(0x%lx)\n",wxThread::GetCurrentId());
+ }
+ }
+};
+
+static const unsigned int kNumDialogsMax = 32;
+static unsigned int g_NumDialogs = 0;
+static const CDialogInfo *g_Dialogs[kNumDialogsMax];
+
+void RegisterDialog(const CDialogInfo *dialogInfo)
+{
+ // DEBUG printf("RegisterDialog : %d\n",dialogInfo->id);
+ if (g_NumDialogs < kNumDialogsMax)
+ g_Dialogs[g_NumDialogs++] = dialogInfo;
+}
+
+namespace NWindows {
+
+ CSysString MyLoadString(unsigned int resourceID)
+ {
+ for(unsigned i=0; i < g_NumDialogs; i++) {
+ if (g_Dialogs[i]->stringTable) {
+ int j = 0;
+ while(g_Dialogs[i]->stringTable[j].str) {
+ if (resourceID == g_Dialogs[i]->stringTable[j].id) {
+ return g_Dialogs[i]->stringTable[j].str;
+ }
+
+ j++;
+ }
+ }
+ }
+ return L"FIXME-MyLoadStringW-";
+ }
+
+ namespace NControl {
+
+/////////////////////////////////////////// CModalDialog //////////////////////////////////
+
+ bool CModalDialog::CheckButton(int buttonID, UINT checkState)
+ {
+ LockGUI lock;
+ wxCheckBox* w = (wxCheckBox*)_window->FindWindow(buttonID);
+ if (w)
+ {
+ w->SetValue(checkState == BST_CHECKED);
+ return true;
+ }
+ return false;
+ }
+
+ UINT CModalDialog::IsButtonChecked(int buttonID) const
+ {
+ LockGUI lock;
+ wxCheckBox* w = (wxCheckBox*)_window->FindWindow(buttonID);
+ if (w)
+ {
+ bool bret = w->GetValue();
+ if (bret) return BST_CHECKED;
+ }
+ return BST_UNCHECKED;
+ }
+
+ void CModalDialog::EnableItem(int id, bool state)
+ {
+ LockGUI lock;
+ wxWindow* w = _window->FindWindow(id);
+ if (w) w->Enable(state);
+ }
+
+ void CModalDialog::SetItemText(int id, const TCHAR *txt)
+ {
+ LockGUI lock;
+ wxWindow* w = _window->FindWindow(id);
+ if (w)
+ {
+ wxString label(txt);
+ w->SetLabel(label);
+ }
+ }
+
+ wxWindow * CModalDialog::GetItem(long id) const
+ {
+ LockGUI lock;
+ return _window->FindWindow(id);
+ }
+
+ void CModalDialog::ShowItem(int itemID, int cmdShow) const
+ {
+ LockGUI lock;
+ // cmdShow = SW_HIDE or SW_SHOW (sometimes false or true !)
+ wxWindow* w = _window->FindWindow(itemID);
+ if (w)
+ {
+// FIXME w->Show(cmdShow != SW_HIDE);
+ w->Enable(cmdShow != SW_HIDE);
+ }
+ }
+
+ UINT_PTR CModalDialog::SetTimer(UINT_PTR idEvent , unsigned milliseconds)
+ {
+ LockGUI lock;
+ return _window->SetTimer(idEvent , milliseconds);
+ }
+
+ void CModalDialog::KillTimer(UINT_PTR idEvent)
+ {
+ LockGUI lock;
+ _window->KillTimer(idEvent);
+ }
+
+ void CModalDialog::SetText(const TCHAR *_title) {
+ LockGUI lock;
+ _window->SetTitle(_title);
+ }
+
+
+ bool CModalDialog::GetText(CSysString &s) {
+ wxString str;
+ {
+ LockGUI lock;
+ str = _window->GetTitle();
+ }
+ s = str;
+ return true;
+ }
+
+ INT_PTR CModalDialog::Create(int id , HWND parentWindow)
+ {
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].dialog = this;
+
+ return WaitInd(0, ind,id,parentWindow);
+ }
+
+ void CModalDialog::End(int result)
+ {
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].window = _window;
+ g_tabCreate[ind].value = result;
+
+ WaitInd(this->_window,ind,DIALOG_ID_END_DIALOG,0);
+ }
+
+ void CModalDialog::PostMessage(UINT message)
+ {
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].dialog = this;
+ g_tabCreate[ind].value = message;
+
+ WaitInd(this->_window,ind,DIALOG_ID_POST_DIALOG,0);
+ }
+
+/////////////////////////////////////////// CModalDialogImpl ///////////////////////////////////////
+
+ CModalDialogImpl::CModalDialogImpl(CDialog *dialog, wxWindow* parent, wxWindowID id,
+ const wxString& title, const wxPoint& pos,
+ const wxSize& size, long style) :
+ wxDialog(parent, id, title , pos , size, style /* | wxDIALOG_NO_PARENT */ ) ,
+ _timer(this, TIMER_ID_IMPL), _dialog(dialog)
+ {
+ // set the frame icon
+ this->SetIcon(wxICON(p7zip_32));
+ }
+
+ void CModalDialogImpl::OnAnyButton(wxCommandEvent& event)
+ {
+ int id = event.GetId();
+ if (id == wxID_OK)
+ {
+ if (_dialog) _dialog->OnOK();
+ // event.Skip(true);
+ }
+ else if (id == wxID_CANCEL)
+ {
+ if (_dialog) _dialog->OnCancel();
+ // event.Skip(true);
+ }
+ else if (id == wxID_HELP)
+ {
+ if (_dialog) _dialog->OnHelp();
+ }
+ else
+ {
+ if (_dialog)
+ {
+ /* bool bret = */ _dialog->OnButtonClicked(id, FindWindow(id) );
+ }
+ }
+ }
+
+ void CModalDialogImpl::OnAnyChoice(wxCommandEvent &event)
+ {
+ int itemID = event.GetId();
+ if (_dialog) _dialog->OnCommand(CBN_SELCHANGE, itemID, 0);
+ }
+
+ void CModalDialogImpl::OnAnyTimer(wxTimerEvent &event)
+ {
+ int timerID = event.GetId();
+ if (_dialog) _dialog->OnTimer(timerID , 0);
+ }
+ }
+}
+
+///////////////////////// myCreateHandle
+
+
+static int myCreateHandle2(int n)
+{
+ unsigned int id = g_tabCreate[n].id;
+ wxWindow * parentWindow = g_tabCreate[n].parentWindow;
+ NWindows::NControl::CModalDialogImpl * window = 0;
+
+ // DEBUG printf("T=0x%lx - %d : myCreateHandle(%d): BEGIN\n", wxThread::GetCurrentId(),time(0)-g_T0,n);
+
+ if (id == DIALOG_ID_END_DIALOG)
+ {
+ /* FIXME : the dialog must be shown before ending it ?
+ while (!g_tabCreate[n].window->IsShownOnScreen()) Sleep(200);
+ Sleep(200);
+ */
+ g_tabCreate[n].window->EndModal(g_tabCreate[n].value);
+ return 0;
+ }
+
+ if (id == DIALOG_ID_POST_DIALOG)
+ {
+ g_tabCreate[n].dialog->OnMessage(g_tabCreate[n].value, 0, 0);
+ return 0;
+ }
+
+ if (id == DIALOG_ID_MESSAGEBOX)
+ {
+ long style = g_tabCreate[n].flag;
+ long decorated_style = style;
+ if ( ( style & ( wxICON_EXCLAMATION | wxICON_HAND | wxICON_INFORMATION |
+ wxICON_QUESTION ) ) == 0 )
+ {
+ decorated_style |= ( style & wxYES ) ? wxICON_QUESTION : wxICON_INFORMATION ;
+ }
+ wxMessageDialog dialog(parentWindow, g_tabCreate[n].msg, g_tabCreate[n].title, decorated_style);
+ dialog.SetIcon(wxICON(p7zip_32));
+ int ret = dialog.ShowModal();
+
+ return ret;
+ }
+
+ if (id == DIALOG_ID_DIR_DIALOG)
+ {
+ wxString defaultDir = g_tabCreate[n].initialFolderOrFile;
+ wxDirDialog dirDialog(g_tabCreate[n].parentWindow,
+ g_tabCreate[n].title, defaultDir);
+ dirDialog.SetIcon(wxICON(p7zip_32));
+ int ret = dirDialog.ShowModal();
+ if (ret == wxID_OK) g_tabCreate[n].resultPath = dirDialog.GetPath();
+ return ret;
+ }
+
+ if (id == DIALOG_ID_FILE_DIALOG)
+ {
+ wxString defaultFilename = g_tabCreate[n].initialFolderOrFile;
+
+ wxFileName filename(defaultFilename);
+
+ wxString dir = filename.GetPath();
+ wxString name = filename.GetFullName();
+
+
+ // printf("DIALOG_ID_FILE_DIALOG = '%ls' => '%ls' '%ls'\n",&defaultFilename[0],&dir[0],&name[0]);
+
+
+ wxFileDialog fileDialog(g_tabCreate[n].parentWindow, g_tabCreate[n].title,
+ dir, name, wxT("All Files (*.*)|*.*"), wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
+ fileDialog.SetIcon(wxICON(p7zip_32));
+ int ret = fileDialog.ShowModal();
+ if (ret == wxID_OK) g_tabCreate[n].resultPath = fileDialog.GetPath();
+ return ret;
+ }
+
+ for(unsigned i=0; i < g_NumDialogs; i++) {
+ if (id == g_Dialogs[i]->id) {
+ // DEBUG printf("%d : Create(%d,%p): CreateDialog-1\n",time(0)-g_T0,id,parentWindow);
+ window = (g_Dialogs[i]->createDialog)(g_tabCreate[n].dialog,g_tabCreate[n].parentWindow);
+ // DEBUG printf("%d : Create(%d,%p): CreateDialog-2\n",time(0)-g_T0,id,parentWindow);
+ break;
+ }
+ }
+
+ if (window) {
+
+ // DEBUG printf("%d : Create(%d,%p): %p->ShowModal()\n",time(0)-g_T0,id,parentWindow,window);
+
+ // window->Show(true);
+ // wxGetApp().ProcessPendingEvents();
+
+ INT_PTR ret = window->ShowModal();
+
+ // DEBUG printf("%d : Create(%d,%p): %p->ShowModal() - ret=%d\n",time(0)-g_T0,id,parentWindow,window,ret);
+ window->Detach();
+ window->Destroy();
+
+ // DEBUG printf("%d : Create(%d,%p): END\n",time(0)-g_T0,id,parentWindow,window);
+
+ return ret;
+ }
+
+ // FIXME
+ printf("INTERNAL ERROR : cannot find dialog %d\n",id);
+
+ return 0;
+}
+
+void myCreateHandle(int n)
+{
+ int ret = myCreateHandle2(n);
+ g_tabCreate[n].ret = ret;
+ g_tabCreate[n].sem->Post();
+}
+
+int MessageBoxW(wxWindow * parent, const TCHAR * msg, const TCHAR * title,int flag)
+{
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].msg = msg;
+ g_tabCreate[ind].title = title;
+ g_tabCreate[ind].flag = flag;
+
+ return WaitInd(parent,ind,DIALOG_ID_MESSAGEBOX,parent); // FIXME
+}
+
+
+
+// FIXME : should be in Windows/Shell.cpp
+
+namespace NWindows{
+namespace NShell{
+
+bool BrowseForFolder(HWND owner, LPCWSTR title, LPCWSTR initialFolder, UString &resultPath)
+{
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].title = title;
+ g_tabCreate[ind].initialFolderOrFile = nameWindowToUnix(initialFolder);
+
+ UString resTmp;
+ int ret = WaitInd(0,ind,DIALOG_ID_DIR_DIALOG,owner,resTmp); // FIXME
+ if(ret == wxID_OK)
+ {
+ resultPath = resTmp;
+ return true;
+ }
+ return false;
+}
+
+}}
+
+/////////////////////////// CPP/Windows/CommonDialog.cpp
+namespace NWindows
+{
+
+ bool MyGetOpenFileName(HWND hwnd, LPCWSTR title, LPCWSTR fullFileName, LPCWSTR s, UString &resPath)
+ {
+ int ind = findFreeInd();
+
+ g_tabCreate[ind].title = title;
+ g_tabCreate[ind].initialFolderOrFile = nameWindowToUnix(fullFileName);
+
+ UString resTmp;
+ int ret = WaitInd(0,ind,DIALOG_ID_FILE_DIALOG,hwnd,resTmp); // FIXME
+ if(ret == wxID_OK)
+ {
+ resPath = resTmp;
+ return true;
+ }
+ return false;
+ }
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Dialog.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,179 @@
+// Windows/Control/Dialog.h
+
+#ifndef __WINDOWS_CONTROL_DIALOG_H
+#define __WINDOWS_CONTROL_DIALOG_H
+
+#include "Windows/Window.h"
+
+#ifndef _WIN32
+#define SW_HIDE 0
+#define SW_SHOW 5
+
+#define WM_SETTEXT (6000) // wxID_HIGHEST + 1
+#define WM_USER (6999) // wxID_HIGHEST + 1000
+
+#endif
+
+#ifndef _WIN32
+#define CBN_SELCHANGE 1
+#endif
+
+// FIXME
+#define IDCLOSE (5001) // wxID_CLOSE
+#define IDEXIT (5006) // wxID_EXIT
+#define IDOK (5100) // wxID_OK
+#define IDCANCEL (5101) // wxID_CANCEL
+#define IDABORT (5115) // wxID_ABORT
+#define IDYES (5103) // wxID_YES
+#define IDNO (5104) // wxID_NO
+#define IDHELP (5009) // wxID_HELP
+
+#define BST_CHECKED 1
+#define BST_UNCHECKED 0
+// #define BST_INDETERMINATE 0x0002
+
+#define wsprintf(a,b,c,d,e) swprintf(a,9999,b,c,d,e) // FIXME
+
+namespace NWindows {
+ namespace NControl {
+
+ class CModalDialogImpl;
+
+ class CDialog
+ {
+ protected:
+ CModalDialogImpl * _window;
+ public:
+ operator HWND() const { return HWND(_window); }
+
+ bool OnInit(CModalDialogImpl * window) {
+ _window = window;
+ return OnInit();
+ }
+ virtual bool OnInit() { return false; }
+ virtual void OnOK() {}
+ virtual void OnCancel() {}
+ virtual void OnHelp() {}
+ virtual bool OnButtonClicked(int buttonID, wxWindow * buttonHWND) { return false; }
+ virtual bool OnMessage(UINT message, WPARAM wParam, LPARAM lParam) { return false; }
+ virtual bool OnCommand(int code, int itemID, LPARAM lParam) { return false; }
+ virtual bool OnTimer(WPARAM /* timerID */, LPARAM /* callback */) { return false; }
+
+ void NormalizeSize(bool fullNormalize = false) { /* FIXME */ }
+ void NormalizePosition() { /* FIXME */ }
+ };
+
+ class CModalDialog : public CDialog
+ {
+ public:
+
+
+ ////////////////// COMPATIBILITY
+
+ bool CheckRadioButton(int firstButtonID, int lastButtonID, int checkButtonID)
+ {
+/*
+ for(int id = firstButtonID; id <= lastButtonID; id++)
+ {
+ CheckButton(id,id == checkButtonID);
+ }
+*/
+ this->CheckButton(checkButtonID,true);
+
+ return true;
+ }
+
+
+ bool CheckButton(int buttonID, UINT checkState);
+ bool CheckButton(int buttonID, bool checkState)
+ {
+ return CheckButton(buttonID, UINT(checkState ? BST_CHECKED : BST_UNCHECKED));
+ }
+
+
+ UINT IsButtonChecked(int buttonID) const;
+
+ bool IsButtonCheckedBool(long buttonID) const
+ { return (IsButtonChecked(buttonID) == BST_CHECKED); }
+
+ void EnableItem(int id, bool state);
+
+ void SetItemText(int id, const TCHAR *txt);
+
+ wxWindow * GetItem(long id) const ;
+
+ void ShowItem(int itemID, int cmdShow) const;
+
+ void HideItem(int itemID) const { ShowItem(itemID, SW_HIDE); }
+
+ void End(int result);
+
+ void SetText(const TCHAR *_title); // { _dialog->SetTitle(_title); }
+
+ bool GetText(CSysString &s);
+
+ INT_PTR Create(int id , HWND parentWindow);
+
+ void PostMessage(UINT message);
+
+ virtual void OnHelp() {}
+
+ UINT_PTR SetTimer(UINT_PTR idEvent , unsigned milliseconds);
+
+ void KillTimer(UINT_PTR idEvent);
+
+ virtual void OnOK() { End(IDOK); }
+ virtual void OnCancel() { End(IDCANCEL); }
+ };
+
+class CDialogChildControl : public NWindows::CWindow
+{
+public:
+ CDialogChildControl() {}
+
+ int m_ID;
+ void Init(const NWindows::NControl::CModalDialog &parentDialog, int id)
+ {
+ m_ID = id;
+ this->Attach(parentDialog.GetItem(id));
+ }
+ virtual void SetText(LPCWSTR s);
+ virtual bool GetText(CSysString &s);
+};
+
+}
+}
+
+struct CStringTable
+{
+ unsigned int id;
+ const wchar_t *str;
+};
+
+struct CDialogInfo
+{
+ unsigned int id;
+ NWindows::NControl::CModalDialogImpl * (*createDialog)(NWindows::NControl::CModalDialog * dialog, HWND parentWindow);
+ CStringTable * stringTable;
+};
+
+void RegisterDialog(const CDialogInfo *dialogInfo);
+
+#define REGISTER_DIALOG_NAME(x) CRegister ## x
+
+#define REGISTER_DIALOG(id,x,stringTable) \
+ static NWindows::NControl::CModalDialogImpl * myCreate##x(NWindows::NControl::CModalDialog * dialog,HWND parentWindow) \
+ { return new x##Impl(dialog,parentWindow,id); } \
+ static struct CDialogInfo g_DialogInfo = { id , myCreate##x, stringTable }; \
+ struct REGISTER_DIALOG_NAME(x) { \
+ REGISTER_DIALOG_NAME(x)() { RegisterDialog(&g_DialogInfo); }}; \
+ static REGISTER_DIALOG_NAME(x) g_RegisterDialog;
+
+#define REGISTER_STRINGTABLE(stringTable) \
+ static struct CDialogInfo g_DialogInfo = { -1 , 0 , stringTable }; \
+ struct REGISTER_DIALOG_NAME(x) { \
+ REGISTER_DIALOG_NAME(x)() { RegisterDialog(&g_DialogInfo); }}; \
+ static REGISTER_DIALOG_NAME(x) g_RegisterDialog;
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/DialogImpl.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/DialogImpl.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/DialogImpl.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/DialogImpl.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,73 @@
+// Windows/Control/DialogImpl.h
+
+#ifndef __WINDOWS_CONTROL_DIALOGIMPL_H
+#define __WINDOWS_CONTROL_DIALOGIMPL_H
+
+#include "Windows/Window.h"
+#include "Windows/Control/Dialog.h"
+
+void myCreateHandle(int n); // FIXME - duplicate
+
+enum {
+ WORKER_EVENT=100 // this one gets sent from the worker thread
+};
+
+namespace NWindows {
+ namespace NControl {
+
+#define TIMER_ID_IMPL (1234)
+
+ class CModalDialogImpl : public wxDialog
+ {
+ wxTimer _timer;
+
+ CDialog *_dialog;
+ public:
+ CModalDialogImpl(CDialog *dialog, wxWindow* parent, wxWindowID id, const wxString& title,
+ const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+ long style = wxDEFAULT_DIALOG_STYLE );
+
+ CDialog * Detach()
+ {
+ CDialog * oldDialog = _dialog;
+ _dialog = NULL;
+ return oldDialog;
+ }
+
+ void OnInit()
+ {
+ if (_dialog) _dialog->OnInit(this);
+ }
+
+ void OnAnyButton(wxCommandEvent& event);
+ void OnAnyChoice(wxCommandEvent &event);
+ void OnAnyTimer(wxTimerEvent &event);
+
+/* FIXME virtual void SetLabel(const wxString &title)
+ {
+ // Why we must do this "alias" ?
+ this->SetTitle(title);
+ }
+*/
+ //////////////////
+ UINT_PTR SetTimer(UINT_PTR /* FIXME idEvent */, unsigned milliseconds)
+ {
+ _timer.Start(milliseconds);
+ return TIMER_ID_IMPL;
+ }
+ void KillTimer(UINT_PTR idEvent)
+ {
+ if (idEvent == TIMER_ID_IMPL) _timer.Stop();
+ }
+ void OnWorkerEvent(wxCommandEvent& event)
+ {
+ int n = event.GetInt();
+ // printf("CModalDialogImpl::OnWorkerEvent(n=%d)\n",n);
+ myCreateHandle(n);
+ }
+ };
+}
+}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Edit.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Edit.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Edit.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Edit.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,24 @@
+// Windows/Control/Edit.h
+
+#ifndef __WINDOWS_CONTROL_EDIT_H
+#define __WINDOWS_CONTROL_EDIT_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+namespace NWindows {
+namespace NControl {
+
+class CEdit: public CWindow
+{
+public:
+ void SetPasswordChar(WPARAM c);
+ void Show(int cmdShow);
+ virtual void SetText(LPCWSTR s);
+ virtual bool GetText(CSysString &s);
+};
+
+}}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ListView.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ListView.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ListView.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ListView.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,164 @@
+// Windows/Control/ListView.h
+
+#ifndef __WINDOWS_CONTROL_LISTVIEW_H
+#define __WINDOWS_CONTROL_LISTVIEW_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+/*
+#include <commctrl.h>
+*/
+
+#ifndef _WIN32
+
+#define LVCF_FMT 0x0001
+#define LVCF_WIDTH 0x0002
+#define LVCF_TEXT 0x0004
+#define LVCF_SUBITEM 0x0008
+#define LVCF_IMAGE 0x0010
+#define LVCF_ORDER 0x0020
+
+#define LVCFMT_LEFT 0x0000
+#define LVCFMT_RIGHT 0x0001
+#define LVCFMT_CENTER 0x0002
+#define LVCFMT_JUSTIFYMASK 0x0003
+
+
+// state
+#define LVIS_FOCUSED 0x0002 /* wxLIST_STATE_FOCUSED */
+#define LVIS_SELECTED 0x0004 /* wxLIST_STATE_SELECTED */
+
+#define LVNI_SELECTED 0x0004 /* wxLIST_STATE_SELECTED */
+
+typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
+
+typedef struct tagLVCOLUMNW
+{
+ UINT mask;
+ int fmt;
+ int cx;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+ int iOrder; // FIXME
+} LVCOLUMNW;
+
+#define LVCOLUMN LVCOLUMNW
+#define LV_COLUMNW LVCOLUMNW /* FIXME */
+
+
+
+typedef struct tagLVITEMW
+{
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+ int iIndent;
+#endif
+#if (_WIN32_WINNT >= 0x501)
+ int iGroupId;
+ UINT cColumns; // tile view columns
+ PUINT puColumns;
+#endif
+} LVITEMW;
+
+#define LVITEM LVITEMW
+
+#define LVIF_TEXT 0x0001
+// FIXME - mask
+#define LVIF_PARAM 2
+#define LVIF_IMAGE 4
+#define LVIF_STATE 8
+
+#endif
+
+class wxListCtrl;
+
+namespace NWindows {
+namespace NControl {
+
+class CListView // : public NWindows::CWindow
+{
+ wxListCtrl *_list;
+public:
+ CListView() : _list(0) {}
+ void Attach(wxWindow * newWindow);
+
+ operator HWND() const;
+
+ int GetItemCount() const;
+
+ int InsertItem(int index, LPCTSTR text);
+ int InsertItem(const LVITEM* item);
+
+ void SetItem(const LVITEM* item);
+
+ int SetSubItem(int index, int subIndex, LPCTSTR text);
+
+ void SetUnicodeFormat(bool fUnicode) { return ; }
+
+ void InsertColumn(int columnIndex, LPCTSTR text, int width);
+
+ void InsertColumn(int columnIndex, const LVCOLUMNW *columnInfo);
+
+ void DeleteAllItems();
+
+ void SetRedraw(bool);
+
+ void SetItemCount(int );
+
+ void InvalidateRect(void *, bool);
+
+ int GetSelectedCount() const;
+
+ void /* bool */ EnsureVisible(int index, bool partialOK);
+
+ void SetItemState(int index, UINT state, UINT mask);
+
+ void SetItemState_FocusedSelected(int index) { SetItemState(index, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); }
+
+ UINT GetItemState(int index, UINT mask) const;
+
+ void /* bool */ Update();
+
+ bool DeleteColumn(int columnIndex);
+
+ bool GetItemParam(int itemIndex, LPARAM ¶m) const;
+
+ int GetNextItem(int startIndex, UINT flags) const;
+
+ int GetFocusedItem() const;
+
+ void RedrawAllItems();
+ // FIXME added
+ int GetColumnCount();
+
+ void SetFocus();
+
+ void RedrawItem(int item);
+
+ bool SortItems(PFNLVCOMPARE compareFunction, LPARAM dataParam);
+
+ bool GetColumn(int columnIndex, LVCOLUMN* columnInfo);
+
+ // HWND EditLabel(int itemIndex)
+ void EditLabel(int itemIndex);
+
+ bool SetColumnWidthAuto(int iCol) {
+ return true; // FIXME SetColumnWidth(iCol, LVSCW_AUTOSIZE);
+ }
+
+
+};
+
+}}
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ProgressBar.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ProgressBar.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ProgressBar.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/ProgressBar.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,34 @@
+// Windows/Control/ProgressBar.h
+
+#ifndef __WINDOWS_CONTROL_PROGRESSBAR_H
+#define __WINDOWS_CONTROL_PROGRESSBAR_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+class wxGauge;
+
+namespace NWindows {
+namespace NControl {
+
+
+class CProgressBar : public CWindow
+{
+protected:
+ wxGauge* _window;
+ int _minValue;
+ int _range;
+public:
+ CProgressBar(wxWindow* newWindow = NULL);
+
+ void Attach(wxWindow* newWindow);
+
+ void SetRange32(int minValue, int maxValue);
+
+ void SetPos(int pos);
+};
+
+}}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Static.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Static.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Static.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Static.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,23 @@
+// Windows/Control/Static.h
+
+#ifndef __WINDOWS_CONTROL_STATIC_H
+#define __WINDOWS_CONTROL_STATIC_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+typedef void * HICON;
+
+namespace NWindows {
+namespace NControl {
+
+class CStatic : public CWindow
+{
+public:
+
+ HICON SetIcon(HICON icon) { return 0; } // FIXME
+};
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/StatusBar.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/StatusBar.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/StatusBar.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/StatusBar.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,56 @@
+// Windows/Control/StatusBar.h
+
+#ifndef __WINDOWS_CONTROL_STATUSBAR_H
+#define __WINDOWS_CONTROL_STATUSBAR_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+class wxStatusBar;
+
+namespace NWindows {
+namespace NControl {
+
+class CStatusBar // : public NWindows::CWindow
+{
+ wxStatusBar * _statusBar;
+public:
+ CStatusBar() : _statusBar(0) {}
+
+ void Attach(wxWindow * newWindow);
+ wxWindow * Detach();
+
+ void SetText(int index, LPCTSTR text);
+
+/* FIXME
+ bool Create(LONG style, LPCTSTR text, HWND hwndParent, UINT id)
+ { return (_window = ::CreateStatusWindow(style, text, hwndParent, id)) != 0; }
+ bool SetParts(int numParts, const int *edgePostions)
+ { return LRESULTToBool(SendMessage(SB_SETPARTS, numParts, (LPARAM)edgePostions)); }
+ bool SetText(LPCTSTR text)
+ { return CWindow::SetText(text); }
+
+ bool SetText(int index, LPCTSTR text, UINT type)
+ { return LRESULTToBool(SendMessage(SB_SETTEXT, index | type, (LPARAM)text)); }
+ bool SetText(int index, LPCTSTR text)
+ { return SetText(index, text, 0); }
+ void Simple(bool simple)
+ { SendMessage(SB_SIMPLE, BoolToBOOL(simple), 0); }
+
+ #ifndef _UNICODE
+ bool Create(LONG style, LPCWSTR text, HWND hwndParent, UINT id)
+ { return (_window = ::CreateStatusWindowW(style, text, hwndParent, id)) != 0; }
+ bool SetText(LPCWSTR text)
+ { return CWindow::SetText(text); }
+ bool SetText(int index, LPCWSTR text, UINT type)
+ { return LRESULTToBool(SendMessage(SB_SETTEXTW, index | type, (LPARAM)text)); }
+ bool SetText(int index, LPCWSTR text)
+ { return SetText(index, text, 0); }
+ #endif
+*/
+};
+
+}}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,211 @@
+// Windows/Control/Window2.cpp
+
+#include "StdAfx.h"
+
+#ifndef _UNICODE
+#include "Common/StringConvert.h"
+#endif
+#include "Windows/Control/Window2.h"
+
+// extern HINSTANCE g_hInstance;
+#ifndef _UNICODE
+extern bool g_IsNT;
+#endif
+
+namespace NWindows {
+
+#ifndef _UNICODE
+ATOM MyRegisterClass(CONST WNDCLASSW *wndClass);
+#endif
+
+namespace NControl {
+
+#ifdef _WIN32
+static LRESULT CALLBACK WindowProcedure(HWND aHWND, UINT message,
+ WPARAM wParam, LPARAM lParam)
+{
+ CWindow tempWindow(aHWND);
+ if (message == WM_NCCREATE)
+ tempWindow.SetUserDataLongPtr(
+ LONG_PTR(((LPCREATESTRUCT)lParam)->lpCreateParams));
+ CWindow2 *window = (CWindow2*)(tempWindow.GetUserDataLongPtr());
+ if (window != NULL && message == WM_NCCREATE)
+ window->Attach(aHWND);
+ if (window == 0)
+ {
+ #ifndef _UNICODE
+ if (g_IsNT)
+ return DefWindowProcW(aHWND, message, wParam, lParam);
+ else
+ #endif
+ return DefWindowProc(aHWND, message, wParam, lParam);
+ }
+ return window->OnMessage(message, wParam, lParam);
+}
+
+bool CWindow2::CreateEx(DWORD exStyle, LPCTSTR className,
+ LPCTSTR windowName, DWORD style,
+ int x, int y, int width, int height,
+ HWND parentWindow, HMENU idOrHMenu,
+ HINSTANCE instance)
+{
+ WNDCLASS windowClass;
+ if(!::GetClassInfo(instance, className, &windowClass))
+ {
+ // windowClass.style = CS_HREDRAW | CS_VREDRAW;
+ windowClass.style = 0;
+
+ windowClass.lpfnWndProc = WindowProcedure;
+ windowClass.cbClsExtra = NULL;
+ windowClass.cbWndExtra = NULL;
+ windowClass.hInstance = instance;
+ windowClass.hIcon = NULL;
+ windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
+ windowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
+ windowClass.lpszMenuName = NULL;
+ windowClass.lpszClassName = className;
+ if (::RegisterClass(&windowClass) == 0)
+ return false;
+ }
+ return CWindow::CreateEx(exStyle, className, windowName,
+ style, x, y, width, height, parentWindow,
+ idOrHMenu, instance, this);
+}
+
+#ifndef _UNICODE
+
+bool CWindow2::CreateEx(DWORD exStyle, LPCWSTR className,
+ LPCWSTR windowName, DWORD style,
+ int x, int y, int width, int height,
+ HWND parentWindow, HMENU idOrHMenu,
+ HINSTANCE instance)
+{
+ bool needRegister;
+ if(g_IsNT)
+ {
+ WNDCLASSW windowClass;
+ needRegister = ::GetClassInfoW(instance, className, &windowClass) == 0;
+ }
+ else
+ {
+ WNDCLASSA windowClassA;
+ AString classNameA;
+ LPCSTR classNameP;
+ if (IS_INTRESOURCE(className))
+ classNameP = (LPCSTR)className;
+ else
+ {
+ classNameA = GetSystemString(className);
+ classNameP = classNameA;
+ }
+ needRegister = ::GetClassInfoA(instance, classNameP, &windowClassA) == 0;
+ }
+ if (needRegister)
+ {
+ WNDCLASSW windowClass;
+ // windowClass.style = CS_HREDRAW | CS_VREDRAW;
+ windowClass.style = 0;
+ windowClass.lpfnWndProc = WindowProcedure;
+ windowClass.cbClsExtra = NULL;
+ windowClass.cbWndExtra = NULL;
+ windowClass.hInstance = instance;
+ windowClass.hIcon = NULL;
+ windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
+ windowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
+ windowClass.lpszMenuName = NULL;
+ windowClass.lpszClassName = className;
+ if (MyRegisterClass(&windowClass) == 0)
+ return false;
+ }
+ return CWindow::CreateEx(exStyle, className, windowName,
+ style, x, y, width, height, parentWindow,
+ idOrHMenu, instance, this);
+
+}
+#endif
+
+LRESULT CWindow2::DefProc(UINT message, WPARAM wParam, LPARAM lParam)
+{
+ #ifndef _UNICODE
+ if (g_IsNT)
+ return DefWindowProcW(_window, message, wParam, lParam);
+ else
+ #endif
+ return DefWindowProc(_window, message, wParam, lParam);
+}
+#endif
+
+LRESULT CWindow2::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)
+{
+ LRESULT result;
+ switch (message)
+ {
+ case WM_CREATE:
+ if (!OnCreate((CREATESTRUCT *)lParam))
+ return -1;
+ break;
+ case WM_COMMAND:
+ if (OnCommand(wParam, lParam, result))
+ return result;
+ break;
+ case WM_NOTIFY:
+ if (OnNotify((UINT)wParam, (LPNMHDR) lParam, result))
+ return result;
+ break;
+ case WM_DESTROY:
+ OnDestroy();
+ break;
+ case WM_CLOSE:
+ OnClose();
+ return 0;
+#ifdef _WIN32
+ case WM_SIZE:
+ if (OnSize(wParam, LOWORD(lParam), HIWORD(lParam)))
+ return 0;
+#endif
+ }
+#ifdef _WIN32
+ return DefProc(message, wParam, lParam);
+#else
+ return 0;
+#endif
+}
+
+bool CWindow2::OnCommand(WPARAM wParam, LPARAM lParam, LRESULT &result)
+{
+ return OnCommand(HIWORD(wParam), LOWORD(wParam), lParam, result);
+}
+
+bool CWindow2::OnCommand(int /* code */, int /* itemID */, LPARAM /* lParam */, LRESULT & /* result */)
+{
+ return false;
+ // return DefProc(message, wParam, lParam);
+ /*
+ if (code == BN_CLICKED)
+ return OnButtonClicked(itemID, (HWND)lParam);
+ */
+}
+
+/*
+bool CDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
+{
+ switch(aButtonID)
+ {
+ case IDOK:
+ OnOK();
+ break;
+ case IDCANCEL:
+ OnCancel();
+ break;
+ case IDHELP:
+ OnHelp();
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
+*/
+
+}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Control/Window2.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,111 @@
+// Windows/Control/Window2.h
+
+#ifndef __WINDOWS_CONTROL_WINDOW2_H
+#define __WINDOWS_CONTROL_WINDOW2_H
+
+#include "Windows/Window.h"
+#include "Windows/Defs.h"
+
+#ifndef _WIN32
+typedef void * WNDPROC;
+typedef void * CREATESTRUCT;
+typedef struct
+{
+ HWND hwndFrom;
+
+ UINT code;
+#define NM_DBLCLK 1
+#define LVN_ITEMCHANGED 2
+#define LVN_COLUMNCLICK 3
+#define CBEN_BEGINEDIT 10
+#define CBEN_ENDEDITW 11
+
+
+} NMHDR;
+typedef NMHDR * LPNMHDR;
+
+typedef struct tagNMLISTVIEW
+{
+ NMHDR hdr;
+ INT iItem;
+ INT iSubItem;
+ UINT uNewState;
+ UINT uOldState;
+ // UINT uChanged;
+ // POINT ptAction;
+ LPARAM lParam;
+} NMLISTVIEW, *LPNMLISTVIEW;
+
+typedef void * LPNMITEMACTIVATE;
+
+#define NM_RCLICK 1234 /* FIXME */
+
+// FIXME
+#define WM_CREATE 1
+#define WM_COMMAND 2
+#define WM_NOTIFY 3
+#define WM_DESTROY 4
+#define WM_CLOSE 5
+
+#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
+#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xFFFF))
+
+
+#endif
+
+namespace NWindows {
+namespace NControl {
+
+class CWindow2 // : public CWindow
+{
+ // LRESULT DefProc(UINT message, WPARAM wParam, LPARAM lParam);
+public:
+ // CWindow2(HWND newWindow = NULL): CWindow(newWindow){};
+ CWindow2() {}
+ virtual ~CWindow2() {}
+
+#ifdef _WIN32
+ bool CreateEx(DWORD exStyle, LPCTSTR className,
+ LPCTSTR windowName, DWORD style,
+ int x, int y, int width, int height,
+ HWND parentWindow, HMENU idOrHMenu,
+ HINSTANCE instance);
+
+ #ifndef _UNICODE
+ bool CreateEx(DWORD exStyle, LPCWSTR className,
+ LPCWSTR windowName, DWORD style,
+ int x, int y, int width, int height,
+ HWND parentWindow, HMENU idOrHMenu,
+ HINSTANCE instance);
+ #endif
+#endif
+
+ virtual LRESULT OnMessage(UINT message, WPARAM wParam, LPARAM lParam);
+ virtual bool OnCreate(CREATESTRUCT * /* createStruct */) { return true; }
+ // virtual LRESULT OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual bool OnCommand(WPARAM wParam, LPARAM lParam, LRESULT &result);
+ virtual bool OnCommand(int code, int itemID, LPARAM lParam, LRESULT &result);
+ virtual bool OnSize(WPARAM /* wParam */, int /* xSize */, int /* ySize */) { return false; }
+ virtual bool OnNotify(UINT /* controlID */, LPNMHDR /* lParam */, LRESULT & /* result */) { return false; }
+ virtual void OnDestroy() { /* FIXME PostQuitMessage(0); */ }
+ virtual void OnClose() { /* FIXME Destroy(); */ }
+ /*
+ virtual LRESULT OnHelp(LPHELPINFO helpInfo) { OnHelp(); };
+ virtual LRESULT OnHelp() {};
+ virtual bool OnButtonClicked(int buttonID, HWND buttonHWND);
+ virtual void OnOK() {};
+ virtual void OnCancel() {};
+ */
+
+#ifdef _WIN32
+ LONG_PTR SetMsgResult(LONG_PTR newLongPtr )
+ { return SetLongPtr(DWLP_MSGRESULT, newLongPtr); }
+ LONG_PTR GetMsgResult() const
+ { return GetLongPtr(DWLP_MSGRESULT); }
+#endif
+};
+
+}}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,193 @@
+// Windows/DLL.cpp
+
+#include "StdAfx.h"
+
+#ifdef __APPLE_CC__
+#include <mach-o/dyld.h>
+#elif ENV_BEOS
+#include <kernel/image.h>
+#include <Path.h>
+#else
+#define UINT64 DLL_UINT64 // HP-UX , dlfcn.h defines UINT64 but p7zip also defines UINT64
+#include <dlfcn.h> // dlopen ...
+#undef UINT64
+#endif
+
+#include "DLL.h"
+#include "Defs.h"
+#ifdef _UNICODE
+#include "../Common/StringConvert.h"
+#endif
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+
+// #define TRACEN(u) u;
+#define TRACEN(u) /* */
+
+namespace NWindows {
+namespace NDLL {
+
+CLibrary::~CLibrary()
+{
+ Free();
+}
+
+bool CLibrary::Free()
+{
+TRACEN((printf("CLibrary::Free(%p)\n",(void *)_module)))
+ if (_module == 0)
+ return true;
+
+#ifdef __APPLE_CC__
+ int ret = NSUnLinkModule ((NSModule)_module, 0);
+#elif ENV_BEOS
+ int ret = unload_add_on((image_id)_module);
+#else
+ int ret = dlclose(_module);
+#endif
+TRACEN((printf("CLibrary::Free dlclose(%p)=%d\n",(void *)_module,ret)))
+ if (ret != 0) return false;
+ _module = 0;
+ return true;
+}
+
+static FARPROC local_GetProcAddress(HMODULE module,LPCSTR lpProcName)
+{
+ void *ptr = 0;
+ TRACEN((printf("local_GetProcAddress(%p,%s)\n",(void *)module,lpProcName)))
+ if (module) {
+#ifdef __APPLE_CC__
+ char name[MAX_PATHNAME_LEN];
+ snprintf(name,sizeof(name),"_%s",lpProcName);
+ name[sizeof(name)-1] = 0;
+ TRACEN((printf("NSLookupSymbolInModule(%p,%s)\n",(void *)module,name)))
+ NSSymbol sym;
+ sym = NSLookupSymbolInModule((NSModule)module, name);
+ if (sym) {
+ ptr = NSAddressOfSymbol(sym);
+ } else {
+ ptr = 0;
+ }
+#elif ENV_BEOS
+ if (get_image_symbol((image_id)module, lpProcName, B_SYMBOL_TYPE_TEXT, &ptr) != B_OK)
+ ptr = 0;
+#else
+ ptr = dlsym (module, lpProcName);
+#endif
+ TRACEN((printf("CLibrary::GetProc : dlsym(%p,%s)=%p\n",(void *)module,lpProcName,ptr)))
+ }
+ return (FARPROC)ptr;
+}
+
+FARPROC CLibrary::GetProc(LPCSTR lpProcName) const
+{
+ TRACEN((printf("CLibrary::GetProc(%p,%s)\n",(void *)_module,lpProcName)))
+ return local_GetProcAddress(_module,lpProcName);
+}
+
+bool CLibrary::LoadOperations(HMODULE newModule)
+{
+ if (newModule == NULL)
+ return false;
+ if(!Free())
+ return false;
+ _module = newModule;
+ return true;
+}
+
+bool CLibrary::Load(LPCTSTR lpLibFileName)
+{
+ void *handler = 0;
+ char name[MAX_PATHNAME_LEN+1];
+#ifdef _UNICODE
+ AString name2 = UnicodeStringToMultiByte(lpLibFileName);
+ strcpy(name,nameWindowToUnix((const char *)name2));
+#else
+ strcpy(name,nameWindowToUnix(lpLibFileName));
+#endif
+
+ // replace ".dll" with ".so"
+ size_t len = strlen(name);
+ if ((len >=4) && (strcmp(name+len-4,".dll") == 0)) {
+ strcpy(name+len-4,".so");
+ }
+
+ TRACEN((printf("CLibrary::Load(%ls) => %s\n",lpLibFileName,name)))
+
+#ifdef __APPLE_CC__
+ NSObjectFileImage image;
+ NSObjectFileImageReturnCode nsret;
+
+ nsret = NSCreateObjectFileImageFromFile (name, &image);
+ if (nsret == NSObjectFileImageSuccess) {
+ TRACEN((printf("NSCreateObjectFileImageFromFile(%s) : OK\n",name)))
+ handler = (HMODULE)NSLinkModule(image,name,NSLINKMODULE_OPTION_RETURN_ON_ERROR
+ | NSLINKMODULE_OPTION_PRIVATE | NSLINKMODULE_OPTION_BINDNOW);
+ } else {
+ TRACEN((printf("NSCreateObjectFileImageFromFile(%s) : ERROR\n",name)))
+ }
+#elif ENV_BEOS
+ // normalize path (remove things like "./", "..", etc..), otherwise it won't work
+ BPath p(name, NULL, true);
+ status_t err = B_OK;
+ image_id image = load_add_on(p.Path());
+TRACEN((printf("load_add_on(%s)=%d\n",p.Path(),(int)image)))
+ if (image < 0) {
+ err = (image_id)handler;
+ handler = 0;
+ } else {
+ err = 0;
+ handler = (HMODULE)image;
+ }
+#else
+ int options_dlopen = 0;
+#ifdef RTLD_LOCAL
+ options_dlopen |= RTLD_LOCAL;
+#endif
+#ifdef RTLD_NOW
+ options_dlopen |= RTLD_NOW;
+#endif
+#ifdef RTLD_GROUP
+ #if ! (defined(hpux) || defined(__hpux))
+ options_dlopen |= RTLD_GROUP; // mainly for solaris but not for HPUX
+ #endif
+#endif
+ TRACEN((printf("CLibrary::Load - dlopen(%s,0x%d)\n",name,options_dlopen)))
+ handler = dlopen(name,options_dlopen);
+#endif // __APPLE_CC__
+ TRACEN((printf("CLibrary::Load(%s) => %p\n",name,handler)))
+ if (handler) {
+
+ // Call DllMain() like in Windows : useless now
+
+ // Propagate the value of global_use_utf16_conversion into the plugins
+ int *tmp = (int *)local_GetProcAddress(handler,"global_use_utf16_conversion");
+ if (tmp) *tmp = global_use_utf16_conversion;
+
+ tmp = (int *)local_GetProcAddress(handler,"global_use_lstat");
+ if (tmp) *tmp = global_use_lstat;
+
+ // test construtors calls
+ void (*fctTest)(void) = (void (*)(void))local_GetProcAddress(handler,"sync_TestConstructor");
+ if (fctTest) fctTest();
+
+ } else {
+#ifdef __APPLE_CC__
+ NSLinkEditErrors c;
+ int num_err;
+ const char *file,*err;
+ NSLinkEditError(&c,&num_err,&file,&err);
+ printf("Can't load '%ls' (%s)\n", lpLibFileName,err);
+#elif ENV_BEOS
+ printf("Can't load '%ls' (%s)\n", lpLibFileName,strerror(err));
+#else
+ printf("Can't load '%ls' (%s)\n", lpLibFileName,dlerror());
+#endif
+ }
+
+ return LoadOperations(handler);
+}
+
+}}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/DLL.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,48 @@
+// Windows/DLL.h
+
+#ifndef __WINDOWS_DLL_H
+#define __WINDOWS_DLL_H
+
+#include "../Common/MyString.h"
+
+typedef void * HMODULE;
+
+typedef int (*FARPROC)();
+
+namespace NWindows {
+namespace NDLL {
+
+class CLibrary
+{
+ bool LoadOperations(HMODULE newModule);
+ HMODULE _module;
+public:
+ operator HMODULE() const { return _module; }
+ HMODULE* operator&() { return &_module; }
+
+
+ CLibrary():_module(NULL) {};
+ ~CLibrary();
+
+ bool Free();
+
+ void Attach(HMODULE m)
+ {
+ Free();
+ _module = m;
+ }
+ HMODULE Detach()
+ {
+ HMODULE m = _module;
+ _module = NULL;
+ return m;
+ }
+
+
+ bool Load(LPCTSTR fileName);
+ FARPROC GetProc(LPCSTR procName) const;
+};
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Defs.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Defs.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Defs.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Defs.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,17 @@
+// Windows/Defs.h
+
+#ifndef __WINDOWS_DEFS_H
+#define __WINDOWS_DEFS_H
+
+#include "../Common/MyWindows.h"
+
+// #ifdef _WIN32
+inline bool LRESULTToBool(LRESULT v) { return (v != FALSE); }
+inline bool BOOLToBool(BOOL v) { return (v != FALSE); }
+inline BOOL BoolToBOOL(bool v) { return (v ? TRUE: FALSE); }
+// #endif
+
+inline VARIANT_BOOL BoolToVARIANT_BOOL(bool v) { return (v ? VARIANT_TRUE: VARIANT_FALSE); }
+inline bool VARIANT_BOOLToBool(VARIANT_BOOL v) { return (v != VARIANT_FALSE); }
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,58 @@
+// Windows/Error.h
+
+#include "StdAfx.h"
+
+#include "Windows/Error.h"
+#include "Common/StringConvert.h"
+
+namespace NWindows {
+namespace NError {
+
+bool MyFormatMessage(DWORD messageID, CSysString &message)
+{
+ const char * txt = 0;
+ AString msg;
+
+ switch(messageID) {
+ case ERROR_NO_MORE_FILES : txt = "No more files"; break ;
+ case E_NOTIMPL : txt = "E_NOTIMPL"; break ;
+ case E_NOINTERFACE : txt = "E_NOINTERFACE"; break ;
+ case E_ABORT : txt = "E_ABORT"; break ;
+ case E_FAIL : txt = "E_FAIL"; break ;
+ case STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ;
+ case E_OUTOFMEMORY : txt = "E_OUTOFMEMORY"; break ;
+ case E_INVALIDARG : txt = "E_INVALIDARG"; break ;
+ default:
+ txt = strerror(messageID);
+ }
+ if (txt) {
+ msg = txt;
+ } else {
+ char msgBuf[256];
+ snprintf(msgBuf,sizeof(msgBuf),"error #%x",(unsigned)messageID);
+ msgBuf[sizeof(msgBuf)-1] = 0;
+ msg = msgBuf;
+ }
+
+ msg += " ";
+
+#ifdef _UNICODE
+ message = MultiByteToUnicodeString(msg);
+#else
+ message = msg;
+#endif
+ return true;
+}
+
+#ifndef _UNICODE
+bool MyFormatMessage(DWORD messageID, UString &message)
+{
+ CSysString messageSys;
+ bool result = MyFormatMessage(messageID, messageSys);
+ message = GetUnicodeString(messageSys);
+ return result;
+}
+#endif
+
+}}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Error.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,33 @@
+// Windows/Error.h
+
+#ifndef __WINDOWS_ERROR_H
+#define __WINDOWS_ERROR_H
+
+#include "Common/MyString.h"
+
+namespace NWindows {
+namespace NError {
+
+bool MyFormatMessage(DWORD messageID, CSysString &message);
+inline CSysString MyFormatMessage(DWORD messageID)
+{
+ CSysString message;
+ MyFormatMessage(messageID, message);
+ return message;
+}
+#ifdef _UNICODE
+inline UString MyFormatMessageW(DWORD messageID)
+ { return MyFormatMessage(messageID); }
+#else
+bool MyFormatMessage(DWORD messageID, UString &message);
+inline UString MyFormatMessageW(DWORD messageID)
+{
+ UString message;
+ MyFormatMessage(messageID, message);
+ return message;
+}
+#endif
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,927 @@
+// Windows/FileDir.cpp
+
+#include "StdAfx.h"
+
+#include "FileDir.h"
+#include "FileName.h"
+#include "FileFind.h"
+#include "Defs.h"
+#include "../Common/StringConvert.h"
+#include "../Common/IntToString.h"
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+#include "Windows/Synchronization.h"
+
+#include <unistd.h> // rmdir
+#include <errno.h>
+
+#include <sys/stat.h> // mkdir
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include <utime.h>
+
+// #define TRACEN(u) u;
+#define TRACEN(u) /* */
+
+class Umask
+{
+ public:
+ mode_t current_umask;
+ mode_t mask;
+ Umask() {
+ current_umask = umask (0); /* get and set the umask */
+ umask(current_umask); /* restore the umask */
+ mask = 0777 & (~current_umask);
+ }
+};
+
+static Umask gbl_umask;
+
+#ifdef _UNICODE
+AString nameWindowToUnix2(LPCWSTR name) // FIXME : optimization ?
+{
+ AString astr = UnicodeStringToMultiByte(name);
+ return AString(nameWindowToUnix((const char *)astr));
+}
+#endif
+
+extern BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *Time, DWORD *Seconds );
+
+#ifdef _UNICODE
+DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *lastpart ) { // FIXME
+ if (name == 0) return 0;
+
+ DWORD name_len = lstrlen(name);
+
+ if (name[0] == '/') {
+ DWORD ret = name_len+2;
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%ls,%d,)=0000 (case 0)\n",name, (int)len)))
+ return 0;
+ }
+ lstrcpy(buffer,L"c:");
+ lstrcat(buffer,name);
+
+ *lastpart=buffer;
+ TCHAR *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%s,%d,%ls,%ls)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ return ret;
+ }
+ if (isascii(name[0]) && (name[1] == ':')) { // FIXME isascii
+ DWORD ret = name_len;
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%ls,%d,)=0000 (case 1)\n",name, (int)len)))
+ return 0;
+ }
+ lstrcpy(buffer,name);
+
+ *lastpart=buffer;
+ TCHAR *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%sl,%d,%ls,%ls)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ return ret;
+ }
+
+ // name is a relative pathname.
+ //
+ if (len < 2) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 2)\n",name, (int)len)))
+ return 0;
+ }
+
+ DWORD ret = 0;
+ char begin[MAX_PATHNAME_LEN];
+ /* DWORD begin_len = GetCurrentDirectoryA(MAX_PATHNAME_LEN,begin); */
+ DWORD begin_len = 0;
+ begin[0]='c';
+ begin[1]=':';
+ char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
+ if (cret) {
+ begin_len = strlen(begin);
+ }
+
+ if (begin_len >= 1) {
+ // strlen(begin) + strlen("/") + strlen(name)
+ ret = begin_len + 1 + name_len;
+
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 4)\n",name, (int)len)))
+ return 0;
+ }
+ UString wbegin = GetUnicodeString(begin);
+ lstrcpy(buffer,wbegin);
+ lstrcat(buffer,L"/");
+ lstrcat(buffer,name);
+
+ *lastpart=buffer + begin_len + 1;
+ TCHAR *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ } else {
+ ret = 0;
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 5)\n",name, (int)len)))
+ }
+ return ret;
+}
+
+#endif
+
+#if 0
+DWORD WINAPI GetFullPathName( LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart ) {
+ if (name == 0) return 0;
+
+ DWORD name_len = strlen(name);
+
+ if (name[0] == '/') {
+ DWORD ret = name_len+2;
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 0)\n",name, (int)len)))
+ return 0;
+ }
+ strcpy(buffer,"c:");
+ strcat(buffer,name);
+
+ *lastpart=buffer;
+ char *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ return ret;
+ }
+ if (isascii(name[0]) && (name[1] == ':')) {
+ DWORD ret = name_len;
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 1)\n",name, (int)len)))
+ return 0;
+ }
+ strcpy(buffer,name);
+
+ *lastpart=buffer;
+ char *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ return ret;
+ }
+
+ // name is a relative pathname.
+ //
+ if (len < 2) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 2)\n",name, (int)len)))
+ return 0;
+ }
+
+ DWORD ret = 0;
+ char begin[MAX_PATHNAME_LEN];
+ /* DWORD begin_len = GetCurrentDirectoryA(MAX_PATHNAME_LEN,begin); */
+ DWORD begin_len = 0;
+ begin[0]='c';
+ begin[1]=':';
+ char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
+ if (cret) {
+ begin_len = strlen(begin);
+ }
+
+ if (begin_len >= 1) {
+ // strlen(begin) + strlen("/") + strlen(name)
+ ret = begin_len + 1 + name_len;
+
+ if (ret >= len) {
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 4)\n",name, (int)len)))
+ return 0;
+ }
+ strcpy(buffer,begin);
+ strcat(buffer,"/");
+ strcat(buffer,name);
+
+ *lastpart=buffer + begin_len + 1;
+ char *ptr=buffer;
+ while (*ptr) {
+ if (*ptr == '/')
+ *lastpart=ptr+1;
+ ptr++;
+ }
+ TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
+ } else {
+ ret = 0;
+ TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 5)\n",name, (int)len)))
+ }
+ return ret;
+}
+
+static BOOL WINAPI RemoveDirectory(LPCSTR path) {
+ if (!path || !*path) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return FALSE;
+ }
+ const char * name = nameWindowToUnix(path);
+ TRACEN((printf("RemoveDirectoryA(%s)\n",name)))
+
+ if (rmdir( name ) != 0) {
+ return FALSE;
+ }
+ return TRUE;
+}
+#endif
+
+#ifdef _UNICODE
+static BOOL WINAPI RemoveDirectory(LPCWSTR path) {
+ if (!path || !*path) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return FALSE;
+ }
+ AString name = nameWindowToUnix2(path);
+ TRACEN((printf("RemoveDirectoryA(%s)\n",(const char *)name)))
+
+ if (rmdir( (const char *)name ) != 0) {
+ return FALSE;
+ }
+ return TRUE;
+}
+#endif
+
+static int copy_fd(int fin,int fout)
+{
+ char buffer[16384];
+ ssize_t ret_in;
+ ssize_t ret_out;
+
+ do {
+ ret_out = -1;
+ do {
+ ret_in = read(fin, buffer,sizeof(buffer));
+ } while (ret_in < 0 && (errno == EINTR));
+ if (ret_in >= 1) {
+ do {
+ ret_out = write (fout, buffer, ret_in);
+ } while (ret_out < 0 && (errno == EINTR));
+ } else if (ret_in == 0) {
+ ret_out = 0;
+ }
+ } while (ret_out >= 1);
+ return ret_out;
+}
+
+static BOOL CopyFile(const char *src,const char *dst)
+{
+ int ret = -1;
+
+#ifdef O_BINARY
+ int flags = O_BINARY;
+#else
+ int flags = 0;
+#endif
+
+#ifdef O_LARGEFILE
+ flags |= O_LARGEFILE;
+#endif
+
+ int fout = open(dst,O_CREAT | O_WRONLY | O_EXCL | flags, 0600);
+ if (fout != -1)
+ {
+ int fin = open(src,O_RDONLY | flags , 0600);
+ if (fin != -1)
+ {
+ ret = copy_fd(fin,fout);
+ if (ret == 0) ret = close(fin);
+ else close(fin);
+ }
+ if (ret == 0) ret = close(fout);
+ else close(fout);
+ }
+ if (ret == 0) return TRUE;
+ return FALSE;
+}
+
+/*****************************************************************************************/
+
+
+namespace NWindows {
+namespace NFile {
+namespace NDirectory {
+
+
+bool MySetCurrentDirectory(LPCWSTR wpath)
+{
+ AString path = UnicodeStringToMultiByte(wpath);
+
+ return chdir((const char*)path) == 0;
+}
+
+#ifdef _UNICODE
+bool GetOnlyName(LPCTSTR fileName, CSysString &resultName)
+{
+ int index;
+ if (!MyGetFullPathName(fileName, resultName, index))
+ return false;
+ resultName = resultName.Mid(index);
+ return true;
+}
+
+bool GetOnlyDirPrefix(LPCTSTR fileName, CSysString &resultName)
+{
+ int index;
+ if (!MyGetFullPathName(fileName, resultName, index))
+ return false;
+ resultName = resultName.Left(index);
+ return true;
+}
+#endif
+
+
+bool MyGetCurrentDirectory(CSysString &resultPath)
+{
+ char begin[MAX_PATHNAME_LEN];
+ begin[0]='c';
+ begin[1]=':';
+ char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
+ if (cret)
+ {
+#ifdef _UNICODE
+ resultPath = GetUnicodeString(begin);
+#else
+ resultPath = begin;
+#endif
+ return true;
+ }
+ return false;
+}
+
+bool MyMoveFile( LPCTSTR fn1, LPCTSTR fn2 ) {
+#ifdef _UNICODE
+ AString src = nameWindowToUnix2(fn1);
+ AString dst = nameWindowToUnix2(fn2);
+#else
+ const char * src = nameWindowToUnix(fn1);
+ const char * dst = nameWindowToUnix(fn2);
+#endif
+
+ TRACEN((printf("MoveFileW(%s,%s)\n",src,dst)))
+
+ int ret = rename(src,dst);
+ if (ret != 0)
+ {
+ if (errno == EXDEV) // FIXED : bug #1112167 (Temporary directory must be on same partition as target)
+ {
+ BOOL bret = CopyFile(src,dst);
+ if (bret == FALSE) return false;
+
+ struct stat info_file;
+ ret = stat(src,&info_file);
+ if (ret == 0) {
+ TRACEN((printf("##DBG chmod-1(%s,%o)\n",dst,(unsigned)info_file.st_mode & gbl_umask.mask)))
+ ret = chmod(dst,info_file.st_mode & gbl_umask.mask);
+ }
+ if (ret == 0) {
+ ret = unlink(src);
+ }
+ if (ret == 0) return true;
+ }
+ return false;
+ }
+ return true;
+}
+
+bool MyRemoveDirectory(LPCTSTR pathName)
+{
+ return BOOLToBool(::RemoveDirectory(pathName));
+}
+
+bool SetDirTime(LPCWSTR fileName, const FILETIME * /* creationTime */ ,
+ const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime)
+{
+ AString cfilename = UnicodeStringToMultiByte(fileName);
+ const char * unix_filename = nameWindowToUnix((const char *)cfilename);
+
+ struct utimbuf buf;
+
+ struct stat oldbuf;
+ int ret = stat(unix_filename,&oldbuf);
+ if (ret == 0) {
+ buf.actime = oldbuf.st_atime;
+ buf.modtime = oldbuf.st_mtime;
+ } else {
+ time_t current_time = time(0);
+ buf.actime = current_time;
+ buf.modtime = current_time;
+ }
+
+ if (lpLastAccessTime)
+ {
+ LARGE_INTEGER ltime;
+ DWORD dw;
+ ltime.QuadPart = lpLastAccessTime->dwHighDateTime;
+ ltime.QuadPart = (ltime.QuadPart << 32) | lpLastAccessTime->dwLowDateTime;
+ RtlTimeToSecondsSince1970( <ime, &dw );
+ buf.actime = dw;
+ }
+
+ if (lpLastWriteTime)
+ {
+ LARGE_INTEGER ltime;
+ DWORD dw;
+ ltime.QuadPart = lpLastWriteTime->dwHighDateTime;
+ ltime.QuadPart = (ltime.QuadPart << 32) | lpLastWriteTime->dwLowDateTime;
+ RtlTimeToSecondsSince1970( <ime, &dw );
+ buf.modtime = dw;
+ }
+
+ /* ret = */ utime(unix_filename, &buf);
+
+ return true;
+}
+
+#ifndef _UNICODE
+bool MySetFileAttributes(LPCWSTR fileName, DWORD fileAttributes)
+{
+ return MySetFileAttributes(UnicodeStringToMultiByte(fileName, CP_ACP), fileAttributes);
+}
+
+bool MyRemoveDirectory(LPCWSTR pathName)
+{
+ return MyRemoveDirectory(UnicodeStringToMultiByte(pathName, CP_ACP));
+}
+
+bool MyMoveFile(LPCWSTR existFileName, LPCWSTR newFileName)
+{
+ UINT codePage = CP_ACP;
+ return MyMoveFile(UnicodeStringToMultiByte(existFileName, codePage), UnicodeStringToMultiByte(newFileName, codePage));
+}
+#endif
+
+
+static int convert_to_symlink(const char * name) {
+ FILE *file = fopen(name,"rb");
+ if (file) {
+ char buf[MAX_PATHNAME_LEN+1];
+ char * ret = fgets(buf,sizeof(buf)-1,file);
+ fclose(file);
+ if (ret) {
+ int ir = unlink(name);
+ if (ir == 0) {
+ ir = symlink(buf,name);
+ }
+ return ir;
+ }
+ }
+ return -1;
+}
+
+bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes)
+{
+ if (!fileName) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ TRACEN((printf("MySetFileAttributes(NULL,%d) : false-1\n",fileAttributes)))
+ return false;
+ }
+#ifdef _UNICODE
+ AString name = nameWindowToUnix2(fileName);
+#else
+ const char * name = nameWindowToUnix(fileName);
+#endif
+ struct stat stat_info;
+#ifdef ENV_HAVE_LSTAT
+ if (global_use_lstat) {
+ if(lstat(name,&stat_info)!=0) {
+ TRACEN((printf("MySetFileAttributes(%s,%d) : false-2-1\n",name,fileAttributes)))
+ return false;
+ }
+ } else
+#endif
+ {
+ if(stat(name,&stat_info)!=0) {
+ TRACEN((printf("MySetFileAttributes(%s,%d) : false-2-2\n",name,fileAttributes)))
+ return false;
+ }
+ }
+
+ if (fileAttributes & FILE_ATTRIBUTE_UNIX_EXTENSION) {
+ stat_info.st_mode = fileAttributes >> 16;
+#ifdef ENV_HAVE_LSTAT
+ if (S_ISLNK(stat_info.st_mode)) {
+ if ( convert_to_symlink(name) != 0) {
+ TRACEN((printf("MySetFileAttributes(%s,%d) : false-3\n",name,fileAttributes)))
+ return false;
+ }
+ } else
+#endif
+ if (S_ISREG(stat_info.st_mode)) {
+ TRACEN((printf("##DBG chmod-2(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
+ chmod(name,stat_info.st_mode & gbl_umask.mask);
+ } else if (S_ISDIR(stat_info.st_mode)) {
+ // user/7za must be able to create files in this directory
+ stat_info.st_mode |= (S_IRUSR | S_IWUSR | S_IXUSR);
+ TRACEN((printf("##DBG chmod-3(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
+ chmod(name,stat_info.st_mode & gbl_umask.mask);
+ }
+#ifdef ENV_HAVE_LSTAT
+ } else if (!S_ISLNK(stat_info.st_mode)) {
+ // do not use chmod on a link
+#else
+ } else {
+#endif
+
+ /* Only Windows Attributes */
+ if( S_ISDIR(stat_info.st_mode)) {
+ /* Remark : FILE_ATTRIBUTE_READONLY ignored for directory. */
+ TRACEN((printf("##DBG chmod-4(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
+ chmod(name,stat_info.st_mode & gbl_umask.mask);
+ } else {
+ if (fileAttributes & FILE_ATTRIBUTE_READONLY) stat_info.st_mode &= ~0222; /* octal!, clear write permission bits */
+ TRACEN((printf("##DBG chmod-5(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
+ chmod(name,stat_info.st_mode & gbl_umask.mask);
+ }
+ }
+ TRACEN((printf("MySetFileAttributes(%s,%d) : true\n",name,fileAttributes)))
+
+ return true;
+}
+
+bool MyCreateDirectory(LPCTSTR pathName)
+{
+ if (!pathName || !*pathName) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return false;
+ }
+
+#ifdef _UNICODE
+ AString name = nameWindowToUnix2(pathName);
+#else
+ const char * name = nameWindowToUnix(pathName);
+#endif
+ bool bret = false;
+ if (mkdir( name, 0700 ) == 0) bret = true;
+
+ TRACEN((printf("MyCreateDirectory(%s)=%d\n",name,(int)bret)))
+ return bret;
+}
+
+#ifndef _UNICODE
+bool MyCreateDirectory(LPCWSTR pathName)
+{
+ return MyCreateDirectory(UnicodeStringToMultiByte(pathName, CP_ACP));
+}
+#endif
+
+bool CreateComplexDirectory(LPCTSTR _aPathName)
+{
+ CSysString pathName = _aPathName;
+ int pos = pathName.ReverseFind(TEXT(CHAR_PATH_SEPARATOR));
+ if (pos > 0 && pos == pathName.Length() - 1)
+ {
+ if (pathName.Length() == 3 && pathName[1] == ':')
+ return true; // Disk folder;
+ pathName.Delete(pos);
+ }
+ CSysString pathName2 = pathName;
+ pos = pathName.Length();
+ while(true)
+ {
+ if(MyCreateDirectory(pathName))
+ break;
+ if(::GetLastError() == ERROR_ALREADY_EXISTS)
+ {
+#ifdef _WIN32 // FIXED for supporting symbolic link instead of a directory
+ NFind::CFileInfo fileInfo;
+ if (!NFind::FindFile(pathName, fileInfo)) // For network folders
+ return true;
+ if (!fileInfo.IsDir())
+ return false;
+#endif
+ break;
+ }
+ pos = pathName.ReverseFind(TEXT(CHAR_PATH_SEPARATOR));
+ if (pos < 0 || pos == 0)
+ return false;
+ if (pathName[pos - 1] == ':')
+ return false;
+ pathName = pathName.Left(pos);
+ }
+ pathName = pathName2;
+ while(pos < pathName.Length())
+ {
+ pos = pathName.Find(TEXT(CHAR_PATH_SEPARATOR), pos + 1);
+ if (pos < 0)
+ pos = pathName.Length();
+ if(!MyCreateDirectory(pathName.Left(pos)))
+ return false;
+ }
+ return true;
+}
+
+#ifndef _UNICODE
+
+bool CreateComplexDirectory(LPCWSTR _aPathName)
+{
+ UString pathName = _aPathName;
+ int pos = pathName.ReverseFind(WCHAR_PATH_SEPARATOR);
+ if (pos > 0 && pos == pathName.Length() - 1)
+ {
+ if (pathName.Length() == 3 && pathName[1] == L':')
+ return true; // Disk folder;
+ pathName.Delete(pos);
+ }
+ UString pathName2 = pathName;
+ pos = pathName.Length();
+ while(true)
+ {
+ if(MyCreateDirectory(pathName))
+ break;
+ if(::GetLastError() == ERROR_ALREADY_EXISTS)
+ {
+#ifdef _WIN32 // FIXED for supporting symbolic link instead of a directory
+ NFind::CFileInfoW fileInfo;
+ if (!NFind::FindFile(pathName, fileInfo)) // For network folders
+ return true;
+ if (!fileInfo.IsDir())
+ return false;
+#endif
+ break;
+ }
+ pos = pathName.ReverseFind(WCHAR_PATH_SEPARATOR);
+ if (pos < 0 || pos == 0)
+ return false;
+ if (pathName[pos - 1] == L':')
+ return false;
+ pathName = pathName.Left(pos);
+ }
+ pathName = pathName2;
+ while(pos < pathName.Length())
+ {
+ pos = pathName.Find(WCHAR_PATH_SEPARATOR, pos + 1);
+ if (pos < 0)
+ pos = pathName.Length();
+ if(!MyCreateDirectory(pathName.Left(pos)))
+ return false;
+ }
+ return true;
+}
+
+#endif
+
+bool DeleteFileAlways(LPCTSTR name)
+{
+ if (!name || !*name) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return false;
+ }
+#ifdef _UNICODE
+ AString unixname = nameWindowToUnix2(name);
+#else
+ const char * unixname = nameWindowToUnix(name);
+#endif
+ bool bret = false;
+ if (remove(unixname) == 0) bret = true;
+ TRACEN((printf("DeleteFileAlways(%s)=%d\n",unixname,(int)bret)))
+ return bret;
+}
+
+#ifndef _UNICODE
+bool DeleteFileAlways(LPCWSTR name)
+{
+ return DeleteFileAlways(UnicodeStringToMultiByte(name, CP_ACP));
+}
+#endif
+
+
+static bool RemoveDirectorySubItems2(const UString &pathPrefix, const NFind::CFileInfoW &fileInfo)
+{
+ if (fileInfo.IsDir())
+ return RemoveDirectoryWithSubItems(pathPrefix + fileInfo.Name);
+ return DeleteFileAlways(pathPrefix + fileInfo.Name);
+}
+
+bool RemoveDirectoryWithSubItems(const UString &path)
+{
+ NFind::CFileInfoW fileInfo;
+ UString pathPrefix = path + NName::kDirDelimiter;
+ {
+ NFind::CEnumeratorW enumerator(pathPrefix + TCHAR(NName::kAnyStringWildcard));
+ while (enumerator.Next(fileInfo))
+ if (!RemoveDirectorySubItems2(pathPrefix, fileInfo))
+ return false;
+ }
+ if (!MySetFileAttributes(path, 0))
+ return false;
+ return MyRemoveDirectory(path);
+}
+
+#ifndef _WIN32_WCE
+
+bool MyGetFullPathName(LPCTSTR fileName, CSysString &resultPath,
+ int &fileNamePartStartIndex)
+{
+ LPTSTR fileNamePointer = 0;
+ LPTSTR buffer = resultPath.GetBuffer(MAX_PATH);
+ DWORD needLength = ::GetFullPathName(fileName, MAX_PATH + 1,
+ buffer, &fileNamePointer);
+ resultPath.ReleaseBuffer();
+ if (needLength == 0 || needLength >= MAX_PATH)
+ return false;
+ if (fileNamePointer == 0)
+ fileNamePartStartIndex = lstrlen(fileName);
+ else
+ fileNamePartStartIndex = fileNamePointer - buffer;
+ return true;
+}
+
+#ifndef _UNICODE
+bool MyGetFullPathName(LPCWSTR fileName, UString &resultPath,
+ int &fileNamePartStartIndex)
+{
+ const UINT currentPage = CP_ACP;
+ CSysString sysPath;
+ if (!MyGetFullPathName(UnicodeStringToMultiByte(fileName,
+ currentPage), sysPath, fileNamePartStartIndex))
+ return false;
+ UString resultPath1 = MultiByteToUnicodeString(
+ sysPath.Left(fileNamePartStartIndex), currentPage);
+ UString resultPath2 = MultiByteToUnicodeString(
+ sysPath.Mid(fileNamePartStartIndex), currentPage);
+ fileNamePartStartIndex = resultPath1.Length();
+ resultPath = resultPath1 + resultPath2;
+ return true;
+}
+#endif
+
+
+bool MyGetFullPathName(LPCTSTR fileName, CSysString &path)
+{
+ int index;
+ return MyGetFullPathName(fileName, path, index);
+}
+
+#ifndef _UNICODE
+bool MyGetFullPathName(LPCWSTR fileName, UString &path)
+{
+ int index;
+ return MyGetFullPathName(fileName, path, index);
+}
+#endif
+
+#endif
+
+/* needed to find .DLL/.so and SFX */
+bool MySearchPath(LPCWSTR path, LPCWSTR fileName, LPCWSTR extension, UString &resultPath)
+{
+ if (path != 0) {
+ printf("NOT EXPECTED : MySearchPath : path != NULL\n");
+ exit(EXIT_FAILURE);
+ }
+
+ if (extension != 0) {
+ printf("NOT EXPECTED : MySearchPath : extension != NULL\n");
+ exit(EXIT_FAILURE);
+ }
+
+ if (fileName == 0) {
+ printf("NOT EXPECTED : MySearchPath : fileName == NULL\n");
+ exit(EXIT_FAILURE);
+ }
+
+ const char *p7zip_home_dir = getenv("P7ZIP_HOME_DIR");
+ if (p7zip_home_dir) {
+ AString file_path = p7zip_home_dir;
+ file_path += UnicodeStringToMultiByte(fileName, CP_ACP);
+
+ TRACEN((printf("MySearchPath() fopen(%s)\n",(const char *)file_path)))
+ FILE *file = fopen((const char *)file_path,"r");
+ if (file) {
+ // file is found
+ fclose(file);
+ resultPath = MultiByteToUnicodeString(file_path, CP_ACP);
+ return true;
+ }
+ }
+ return false;
+}
+
+#ifndef _UNICODE
+bool MyGetTempPath(CSysString &path)
+{
+ path = "c:/tmp/"; // final '/' is needed
+ return true;
+}
+#endif
+
+bool MyGetTempPath(UString &path)
+{
+ path = L"c:/tmp/"; // final '/' is needed
+ return true;
+}
+
+static NSynchronization::CCriticalSection g_CountCriticalSection;
+
+static CSysString CSysConvertUInt32ToString(UInt32 value)
+{
+ TCHAR buffer[32];
+ ConvertUInt32ToString(value, buffer);
+ return buffer;
+}
+
+UINT CTempFile::Create(LPCTSTR dirPath, LPCTSTR prefix, CSysString &resultPath)
+{
+ static UInt32 memo_count = 0;
+ UInt32 count;
+
+ g_CountCriticalSection.Enter();
+ count = memo_count++;
+ g_CountCriticalSection.Leave();
+
+ Remove();
+/* UINT number = ::GetTempFileName(dirPath, prefix, 0, path.GetBuffer(MAX_PATH)); */
+ UINT number = (UINT)getpid();
+
+ resultPath = dirPath;
+ resultPath += prefix;
+ resultPath += TEXT('#');
+ resultPath += CSysConvertUInt32ToString(number);
+ resultPath += TEXT('@');
+ resultPath += CSysConvertUInt32ToString(count);
+ resultPath += TEXT(".tmp");
+
+ _fileName = resultPath;
+ _mustBeDeleted = true;
+
+ return number;
+}
+
+bool CTempFile::Create(LPCTSTR prefix, CSysString &resultPath)
+{
+ CSysString tempPath;
+ if (!MyGetTempPath(tempPath))
+ return false;
+ if (Create(tempPath, prefix, resultPath) != 0)
+ return true;
+ return false;
+}
+
+
+bool CTempFile::Remove()
+{
+ if (!_mustBeDeleted)
+ return true;
+ _mustBeDeleted = !DeleteFileAlways(_fileName);
+ return !_mustBeDeleted;
+}
+
+bool CreateTempDirectory(LPCWSTR prefix, UString &dirName)
+{
+ /*
+ CSysString prefix = tempPath + prefixChars;
+ CRandom random;
+ random.Init();
+ */
+ for (;;)
+ {
+ {
+ CTempFileW tempFile;
+ if (!tempFile.Create(prefix, dirName))
+ return false;
+ if (!tempFile.Remove())
+ return false;
+ }
+ /*
+ UINT32 randomNumber = random.Generate();
+ TCHAR randomNumberString[32];
+ _stprintf(randomNumberString, _T("%04X"), randomNumber);
+ dirName = prefix + randomNumberString;
+ */
+ if (NFind::DoesFileOrDirExist(dirName))
+ continue;
+ if (MyCreateDirectory(dirName))
+ return true;
+ if (::GetLastError() != ERROR_ALREADY_EXISTS)
+ return false;
+ }
+}
+
+bool CTempDirectory::Create(LPCTSTR prefix)
+{
+ Remove();
+ return (_mustBeDeleted = CreateTempDirectory(prefix, _tempDir));
+}
+
+
+}}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileDir.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,115 @@
+// Windows/FileDir.h
+
+#ifndef __WINDOWS_FILEDIR_H
+#define __WINDOWS_FILEDIR_H
+
+#include "../Common/MyString.h"
+#include "Defs.h"
+
+/* GetFullPathName for 7zAES.cpp */
+DWORD WINAPI GetFullPathName( LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart );
+
+namespace NWindows {
+namespace NFile {
+namespace NDirectory {
+
+bool SetDirTime(LPCWSTR fileName, const FILETIME *creationTime, const FILETIME *lastAccessTime, const FILETIME *lastWriteTime);
+
+bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes);
+#ifndef _UNICODE
+bool MySetFileAttributes(LPCWSTR fileName, DWORD fileAttributes);
+#endif
+
+bool MyMoveFile(LPCTSTR existFileName, LPCTSTR newFileName);
+#ifndef _UNICODE
+bool MyMoveFile(LPCWSTR existFileName, LPCWSTR newFileName);
+#endif
+
+bool MyRemoveDirectory(LPCTSTR pathName);
+#ifndef _UNICODE
+bool MyRemoveDirectory(LPCWSTR pathName);
+#endif
+
+bool MyCreateDirectory(LPCTSTR pathName);
+bool CreateComplexDirectory(LPCTSTR pathName);
+#ifndef _UNICODE
+bool MyCreateDirectory(LPCWSTR pathName);
+bool CreateComplexDirectory(LPCWSTR pathName);
+#endif
+
+bool DeleteFileAlways(LPCTSTR name);
+#ifndef _UNICODE
+bool DeleteFileAlways(LPCWSTR name);
+#endif
+bool RemoveDirectoryWithSubItems(const UString &path);
+
+#ifndef _WIN32_WCE
+bool MyGetFullPathName(LPCTSTR fileName, CSysString &resultPath,
+ int &fileNamePartStartIndex);
+bool MyGetFullPathName(LPCTSTR fileName, CSysString &resultPath);
+bool GetOnlyName(LPCTSTR fileName, CSysString &resultName);
+bool GetOnlyDirPrefix(LPCTSTR fileName, CSysString &resultName);
+#ifndef _UNICODE
+bool MyGetFullPathName(LPCWSTR fileName, UString &resultPath,
+ int &fileNamePartStartIndex);
+bool MyGetFullPathName(LPCWSTR fileName, UString &resultPath);
+#endif
+
+#endif
+
+bool MySetCurrentDirectory(LPCWSTR path);
+bool MyGetCurrentDirectory(CSysString &resultPath);
+
+bool MySearchPath(LPCWSTR path, LPCWSTR fileName, LPCWSTR extension, UString &resultPath);
+
+bool MyGetTempPath(CSysString &resultPath);
+#ifndef _UNICODE
+bool MyGetTempPath(UString &resultPath);
+#endif
+
+class CTempFile
+{
+ bool _mustBeDeleted;
+ CSysString _fileName;
+public:
+ CTempFile(): _mustBeDeleted(false) {}
+ ~CTempFile() { Remove(); }
+ void DisableDeleting() { _mustBeDeleted = false; }
+ UINT Create(LPCTSTR dirPath, LPCTSTR prefix, CSysString &resultPath);
+ bool Create(LPCTSTR prefix, CSysString &resultPath);
+ bool Remove();
+};
+
+#ifdef _UNICODE
+typedef CTempFile CTempFileW;
+#endif
+
+bool CreateTempDirectory(LPCWSTR prefixChars, UString &dirName);
+
+class CTempDirectory
+{
+ bool _mustBeDeleted;
+ CSysString _tempDir;
+public:
+ const CSysString &GetPath() const { return _tempDir; }
+ CTempDirectory(): _mustBeDeleted(false) {}
+ ~CTempDirectory() { Remove(); }
+ bool Create(LPCTSTR prefix) ;
+ bool Remove()
+ {
+ if (!_mustBeDeleted)
+ return true;
+ _mustBeDeleted = !RemoveDirectoryWithSubItems(_tempDir);
+ return (!_mustBeDeleted);
+ }
+ void DisableDeleting() { _mustBeDeleted = false; }
+};
+
+#ifdef _UNICODE
+typedef CTempDirectory CTempDirectoryW;
+#endif
+
+
+}}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,604 @@
+// Windows/FileFind.cpp
+
+#include "StdAfx.h"
+
+#include "FileFind.h"
+#include "../Common/StringConvert.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+
+#ifdef ENV_HAVE_LSTAT
+extern "C"
+{
+
+int global_use_lstat=1; // default behaviour : p7zip stores symlinks instead of dumping the files they point to
+}
+#endif
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+
+// #define TRACEN(u) u;
+#define TRACEN(u) /* */
+
+void my_windows_split_path(const AString &p_path, AString &dir , AString &base) {
+ int pos = p_path.ReverseFind('/');
+ if (pos == -1) {
+ // no separator
+ dir = ".";
+ if (p_path.IsEmpty())
+ base = ".";
+ else
+ base = p_path;
+ } else if ((pos+1) < p_path.Length()) {
+ // true separator
+ base = p_path.Mid(pos+1);
+ while ((pos >= 1) && (p_path[pos-1] == '/'))
+ pos--;
+ if (pos == 0)
+ dir = "/";
+ else
+ dir = p_path.Left(pos);
+ } else {
+ // separator at the end of the path
+ // pos = p_path.find_last_not_of("/");
+ pos = -1;
+ int ind = 0;
+ while (p_path[ind]) {
+ if (p_path[ind] != '/')
+ pos = ind;
+ ind++;
+ }
+ if (pos == -1) {
+ base = "/";
+ dir = "/";
+ } else {
+ my_windows_split_path(p_path.Left(pos+1),dir,base);
+ }
+ }
+}
+
+static void my_windows_split_path(const UString &p_path, UString &dir , UString &base) {
+ int pos = p_path.ReverseFind(L'/');
+ if (pos == -1) {
+ // no separator
+ dir = L".";
+ if (p_path.IsEmpty())
+ base = L".";
+ else
+ base = p_path;
+ } else if ((pos+1) < p_path.Length()) {
+ // true separator
+ base = p_path.Mid(pos+1);
+ while ((pos >= 1) && (p_path[pos-1] == L'/'))
+ pos--;
+ if (pos == 0)
+ dir = L"/";
+ else
+ dir = p_path.Left(pos);
+ } else {
+ // separator at the end of the path
+ // pos = p_path.find_last_not_of("/");
+ pos = -1;
+ int ind = 0;
+ while (p_path[ind]) {
+ if (p_path[ind] != L'/')
+ pos = ind;
+ ind++;
+ }
+ if (pos == -1) {
+ base = L"/";
+ dir = L"/";
+ } else {
+ my_windows_split_path(p_path.Left(pos+1),dir,base);
+ }
+ }
+}
+
+static int filter_pattern(const char *string , const char *pattern , int flags_nocase) {
+ if ((string == 0) || (*string==0)) {
+ if (pattern == 0)
+ return 1;
+ while (*pattern=='*')
+ ++pattern;
+ return (!*pattern);
+ }
+
+ switch (*pattern) {
+ case '*':
+ if (!filter_pattern(string+1,pattern,flags_nocase))
+ return filter_pattern(string,pattern+1,flags_nocase);
+ return 1;
+ case 0:
+ if (*string==0)
+ return 1;
+ break;
+ case '?':
+ return filter_pattern(string+1,pattern+1,flags_nocase);
+ default:
+ if ( ((flags_nocase) && (tolower(*pattern)==tolower(*string)))
+ || (*pattern == *string)
+ ) {
+ return filter_pattern(string+1,pattern+1,flags_nocase);
+ }
+ break;
+ }
+ return 0;
+}
+
+
+namespace NWindows {
+namespace NFile {
+namespace NFind {
+
+static const TCHAR kDot = TEXT('.');
+
+bool CFileInfo::IsDots() const
+{
+ if (!IsDir() || Name.IsEmpty())
+ return false;
+ if (Name[0] != kDot)
+ return false;
+ return Name.Length() == 1 || (Name[1] == kDot && Name.Length() == 2);
+}
+
+bool CFileInfoW::IsDots() const
+{
+ if (!IsDir() || Name.IsEmpty())
+ return false;
+ if (Name[0] != kDot)
+ return false;
+ return Name.Length() == 1 || (Name[1] == kDot && Name.Length() == 2);
+}
+
+static bool originalFilename(const UString & src, AString & res)
+{
+ // Try to recover the original filename
+ res = "";
+ int i=0;
+ while (src[i])
+ {
+ if (src[i] >= 256) {
+ return false;
+ } else {
+ res += char(src[i]);
+ }
+ i++;
+ }
+ return true;
+}
+
+
+
+// Warning this function cannot update "fileInfo.Name"
+static int fillin_CFileInfo(CFileInfo &fileInfo,const char *filename) {
+ struct stat stat_info;
+
+ int ret;
+#ifdef ENV_HAVE_LSTAT
+ if (global_use_lstat) {
+ ret = lstat(filename,&stat_info);
+ } else
+#endif
+ {
+ ret = stat(filename,&stat_info);
+ }
+
+ if (ret != 0) return ret;
+
+ /* FIXME : FILE_ATTRIBUTE_HIDDEN ? */
+ if (S_ISDIR(stat_info.st_mode)) {
+ fileInfo.Attrib = FILE_ATTRIBUTE_DIRECTORY;
+ } else {
+ fileInfo.Attrib = FILE_ATTRIBUTE_ARCHIVE;
+ }
+
+ if (!(stat_info.st_mode & S_IWUSR))
+ fileInfo.Attrib |= FILE_ATTRIBUTE_READONLY;
+
+ fileInfo.Attrib |= FILE_ATTRIBUTE_UNIX_EXTENSION + ((stat_info.st_mode & 0xFFFF) << 16);
+
+ RtlSecondsSince1970ToFileTime( stat_info.st_ctime, &fileInfo.CTime );
+ RtlSecondsSince1970ToFileTime( stat_info.st_mtime, &fileInfo.MTime );
+ RtlSecondsSince1970ToFileTime( stat_info.st_atime, &fileInfo.ATime );
+
+ fileInfo.IsDevice = false;
+
+ if (S_ISDIR(stat_info.st_mode)) {
+ fileInfo.Size = 0;
+ } else { // file or symbolic link
+ fileInfo.Size = stat_info.st_size; // for a symbolic link, size = size of filename
+ }
+ return 0;
+}
+
+static int fillin_CFileInfo(CFileInfo &fileInfo,const char *dir,const char *name) {
+ char filename[MAX_PATHNAME_LEN];
+ size_t dir_len = strlen(dir);
+ size_t name_len = strlen(name);
+ size_t total = dir_len + 1 + name_len + 1; // 1 = strlen("/"); + le zero character
+ if (total >= MAX_PATHNAME_LEN) throw "fillin_CFileInfo - internal error - MAX_PATHNAME_LEN";
+ memcpy(filename,dir,dir_len);
+ if (dir_len >= 1)
+ {
+ if (filename[dir_len-1] == CHAR_PATH_SEPARATOR)
+ { // delete the '/'
+ dir_len--;
+ }
+ }
+ filename[dir_len] = CHAR_PATH_SEPARATOR;
+ memcpy(filename+(dir_len+1),name,name_len+1); // copy also final '\0'
+
+ fileInfo.Name = name;
+
+ int ret = fillin_CFileInfo(fileInfo,filename);
+ if (ret != 0) {
+ AString err_msg = "stat error for ";
+ err_msg += filename;
+ err_msg += " (";
+ err_msg += strerror(errno);
+ err_msg += ")";
+ throw err_msg;
+ }
+ return ret;
+}
+
+////////////////////////////////
+// CFindFile
+
+bool CFindFile::Close()
+{
+
+ if(_dirp == 0)
+ return true;
+ int ret = closedir(_dirp);
+ if (ret == 0)
+ {
+ _dirp = 0;
+ return true;
+ }
+ return false;
+}
+
+// bool CFindFile::FindFirst(LPCTSTR wildcard, CFileInfo &fileInfo)
+bool CFindFile::FindFirst(LPCSTR wildcard, CFileInfo &fileInfo)
+{
+ if (!Close())
+ return false;
+
+ if ((!wildcard) || (wildcard[0]==0)) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return false;
+ }
+
+ my_windows_split_path(nameWindowToUnix(wildcard),_directory,_pattern);
+
+ TRACEN((printf("CFindFile::FindFirst : %s (dirname=%s,pattern=%s)\n",wildcard,(const char *)_directory,(const char *)_pattern)))
+
+ _dirp = ::opendir((const char *)_directory);
+ TRACEN((printf("CFindFile::FindFirst : opendir=%p\n",_dirp)))
+
+ if ((_dirp == 0) && (global_use_utf16_conversion)) {
+ // Try to recover the original filename
+ UString ustr = MultiByteToUnicodeString(_directory, 0);
+ AString resultString;
+ bool is_good = originalFilename(ustr, resultString);
+ if (is_good) {
+ _dirp = ::opendir((const char *)resultString);
+ _directory = resultString;
+ }
+ }
+
+ if (_dirp == 0) return false;
+
+ struct dirent *dp;
+ while ((dp = readdir(_dirp)) != NULL) {
+ if (filter_pattern(dp->d_name,(const char *)_pattern,0) == 1) {
+ int retf = fillin_CFileInfo(fileInfo,(const char *)_directory,dp->d_name);
+ if (retf)
+ {
+ TRACEN((printf("CFindFile::FindFirst : closedir-1(dirp=%p)\n",_dirp)))
+ closedir(_dirp);
+ _dirp = 0;
+ SetLastError( ERROR_NO_MORE_FILES );
+ return false;
+ }
+ TRACEN((printf("CFindFile::FindFirst -%s- true\n",dp->d_name)))
+ return true;
+ }
+ }
+
+ TRACEN((printf("CFindFile::FindFirst : closedir-2(dirp=%p)\n",_dirp)))
+ closedir(_dirp);
+ _dirp = 0;
+ SetLastError( ERROR_NO_MORE_FILES );
+ return false;
+}
+
+bool CFindFile::FindFirst(LPCWSTR wildcard, CFileInfoW &fileInfo)
+{
+ if (!Close())
+ return false;
+ CFileInfo fileInfo0;
+ AString Awildcard = UnicodeStringToMultiByte(wildcard, CP_ACP);
+ bool bret = FindFirst((LPCSTR)Awildcard, fileInfo0);
+ if (bret)
+ {
+ fileInfo.Attrib = fileInfo0.Attrib;
+ fileInfo.CTime = fileInfo0.CTime;
+ fileInfo.ATime = fileInfo0.ATime;
+ fileInfo.MTime = fileInfo0.MTime;
+ fileInfo.Size = fileInfo0.Size;
+ fileInfo.IsDevice = fileInfo0.IsDevice;
+ fileInfo.Name = GetUnicodeString(fileInfo0.Name, CP_ACP);
+ }
+ return bret;
+}
+
+bool CFindFile::FindNext(CFileInfo &fileInfo)
+{
+ if (_dirp == 0)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+ struct dirent *dp;
+ while ((dp = readdir(_dirp)) != NULL) {
+ if (filter_pattern(dp->d_name,(const char *)_pattern,0) == 1) {
+ int retf = fillin_CFileInfo(fileInfo,(const char *)_directory,dp->d_name);
+ if (retf)
+ {
+ TRACEN((printf("FindNextFileA -%s- ret_handle=FALSE (errno=%d)\n",dp->d_name,errno)))
+ return false;
+
+ }
+ TRACEN((printf("FindNextFileA -%s- true\n",dp->d_name)))
+ return true;
+ }
+ }
+ TRACEN((printf("FindNextFileA ret_handle=FALSE (ERROR_NO_MORE_FILES)\n")))
+ SetLastError( ERROR_NO_MORE_FILES );
+ return false;
+}
+
+bool CFindFile::FindNext(CFileInfoW &fileInfo)
+{
+ CFileInfo fileInfo0;
+ bool bret = FindNext(fileInfo0);
+ if (bret)
+ {
+ fileInfo.Attrib = fileInfo0.Attrib;
+ fileInfo.CTime = fileInfo0.CTime;
+ fileInfo.ATime = fileInfo0.ATime;
+ fileInfo.MTime = fileInfo0.MTime;
+ fileInfo.Size = fileInfo0.Size;
+ fileInfo.IsDevice = fileInfo0.IsDevice;
+ fileInfo.Name = GetUnicodeString(fileInfo0.Name, CP_ACP);
+ }
+ return bret;
+}
+
+bool CFileInfo::Find(LPCSTR wildcard)
+{
+ #ifdef SUPPORT_DEVICE_FILE
+ if (IsDeviceName(wildcard))
+ {
+ Clear();
+ IsDevice = true;
+ NIO::CInFile inFile;
+ if (!inFile.Open(wildcard))
+ return false;
+ Name = wildcard + 4;
+ if (inFile.LengthDefined)
+ Size = inFile.Length;
+ return true;
+ }
+ #endif
+ CFindFile finder;
+ return finder.FindFirst(wildcard, *this);
+}
+
+
+// #ifndef _UNICODE
+bool CFileInfoW::Find(LPCWSTR wildcard)
+{
+ #ifdef SUPPORT_DEVICE_FILE
+ if (IsDeviceName(wildcard))
+ {
+ Clear();
+ IsDevice = true;
+ NIO::CInFile inFile;
+ if (!inFile.Open(wildcard))
+ return false;
+ Name = wildcard + 4;
+ if (inFile.LengthDefined)
+ Size = inFile.Length;
+ return true;
+ }
+ #endif
+ CFindFile finder;
+ return finder.FindFirst(wildcard, *this);
+}
+// #endif
+
+bool FindFile(LPCSTR wildcard, CFileInfo &fileInfo)
+{
+ // CFindFile finder;
+ // return finder.FindFirst(wildcard, fileInfo);
+ AString dir,base;
+ my_windows_split_path(wildcard, dir , base);
+ int ret = fillin_CFileInfo(fileInfo,nameWindowToUnix(wildcard));
+ fileInfo.Name = base;
+ TRACEN((printf("FindFile(%s,CFileInfo) ret=%d\n",wildcard,ret)))
+ return (ret == 0);
+}
+
+bool FindFile(LPCWSTR wildcard, CFileInfoW &fileInfo)
+{
+ // CFindFile finder;
+ // return finder.FindFirst(wildcard, fileInfo);
+ AString name = UnicodeStringToMultiByte(wildcard, CP_ACP);
+ CFileInfo fileInfo0;
+ int ret = fillin_CFileInfo(fileInfo0,nameWindowToUnix((const char *)name));
+ TRACEN((printf("FindFile-1(%s,CFileInfo) ret=%d\n",(const char *)name,ret)))
+ if (ret != 0)
+ {
+ // Try to recover the original filename
+ AString resultString;
+ bool is_good = originalFilename(wildcard, resultString);
+ if (is_good) {
+ ret = fillin_CFileInfo(fileInfo0,nameWindowToUnix((const char *)resultString));
+ TRACEN((printf("FindFile-2(%s,CFileInfo) ret=%d\n",(const char *)resultString,ret)))
+ }
+ }
+ if (ret == 0)
+ {
+ UString dir,base;
+ my_windows_split_path(wildcard, dir , base);
+ fileInfo.Attrib = fileInfo0.Attrib;
+ fileInfo.CTime = fileInfo0.CTime;
+ fileInfo.ATime = fileInfo0.ATime;
+ fileInfo.MTime = fileInfo0.MTime;
+ fileInfo.Size = fileInfo0.Size;
+ fileInfo.Name = base;
+ }
+ return (ret == 0);
+}
+
+bool DoesFileExist(LPCSTR name) // FIXME
+{
+ CFileInfo fi;
+ int ret = fillin_CFileInfo(fi,nameWindowToUnix(name));
+ TRACEN((printf("DoesFileExist(%s) ret=%d\n",name,ret)))
+ return (ret == 0) && !fi.IsDir();;
+}
+
+bool DoesDirExist(LPCSTR name) // FIXME
+{
+ CFileInfo fi;
+ int ret = fillin_CFileInfo(fi,nameWindowToUnix(name));
+ TRACEN((printf("DoesDirExist(%s) ret=%d\n",name,ret)))
+ return (ret == 0) && fi.IsDir();;
+}
+
+bool DoesFileOrDirExist(LPCSTR name)
+{
+ CFileInfo fileInfo;
+ int ret = fillin_CFileInfo(fileInfo,nameWindowToUnix(name));
+ TRACEN((printf("DoesFileOrDirExist(%s) ret=%d\n",name,ret)))
+ return (ret == 0);
+}
+
+bool DoesFileExist(LPCWSTR name)
+{
+ AString Aname = UnicodeStringToMultiByte(name, CP_ACP);
+ bool bret = DoesFileExist((LPCSTR)Aname);
+ if (bret) return bret;
+
+ // Try to recover the original filename
+ AString resultString;
+ bool is_good = originalFilename(name, resultString);
+ if (is_good) {
+ bret = DoesFileExist((const char *)resultString);
+ }
+ return bret;
+}
+
+bool DoesDirExist(LPCWSTR name)
+{
+ AString Aname = UnicodeStringToMultiByte(name, CP_ACP);
+ bool bret = DoesDirExist((LPCSTR)Aname);
+ if (bret) return bret;
+
+ // Try to recover the original filename
+ AString resultString;
+ bool is_good = originalFilename(name, resultString);
+ if (is_good) {
+ bret = DoesDirExist((const char *)resultString);
+ }
+ return bret;
+}
+
+bool DoesFileOrDirExist(LPCWSTR name)
+{
+ AString Aname = UnicodeStringToMultiByte(name, CP_ACP);
+ bool bret = DoesFileOrDirExist((LPCSTR)Aname);
+ if (bret) return bret;
+
+ // Try to recover the original filename
+ AString resultString;
+ bool is_good = originalFilename(name, resultString);
+ if (is_good) {
+ bret = DoesFileOrDirExist((const char *)resultString);
+ }
+ return bret;
+}
+
+/////////////////////////////////////
+// CEnumerator
+
+bool CEnumerator::NextAny(CFileInfo &fileInfo)
+{
+ if(_findFile.IsHandleAllocated())
+ return _findFile.FindNext(fileInfo);
+ else
+ return _findFile.FindFirst(_wildcard, fileInfo);
+}
+
+bool CEnumerator::Next(CFileInfo &fileInfo)
+{
+ while(true)
+ {
+ if(!NextAny(fileInfo))
+ return false;
+ if(!fileInfo.IsDots())
+ return true;
+ }
+}
+
+bool CEnumerator::Next(CFileInfo &fileInfo, bool &found)
+{
+ if (Next(fileInfo))
+ {
+ found = true;
+ return true;
+ }
+ found = false;
+ return (::GetLastError() == ERROR_NO_MORE_FILES);
+}
+
+bool CEnumeratorW::NextAny(CFileInfoW &fileInfo)
+{
+ if(_findFile.IsHandleAllocated())
+ return _findFile.FindNext(fileInfo);
+ else
+ return _findFile.FindFirst(_wildcard, fileInfo);
+}
+
+bool CEnumeratorW::Next(CFileInfoW &fileInfo)
+{
+ while(true)
+ {
+ if(!NextAny(fileInfo))
+ return false;
+ if(!fileInfo.IsDots())
+ return true;
+ }
+}
+
+bool CEnumeratorW::Next(CFileInfoW &fileInfo, bool &found)
+{
+ if (Next(fileInfo))
+ {
+ found = true;
+ return true;
+ }
+ found = false;
+ return (::GetLastError() == ERROR_NO_MORE_FILES);
+}
+
+
+}}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileFind.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,126 @@
+// Windows/FileFind.h
+
+#ifndef __WINDOWS_FILEFIND_H
+#define __WINDOWS_FILEFIND_H
+
+#include "../Common/MyString.h"
+#include "FileName.h"
+#include "Defs.h"
+
+#include <sys/types.h> /* for DIR */
+#include <dirent.h>
+
+namespace NWindows {
+namespace NFile {
+namespace NFind {
+
+namespace NAttributes
+{
+ inline bool IsReadOnly(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_READONLY) != 0; }
+ inline bool IsHidden(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_HIDDEN) != 0; }
+ inline bool IsSystem(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_SYSTEM) != 0; }
+ inline bool IsDir(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_DIRECTORY) != 0; }
+ inline bool IsArchived(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_ARCHIVE) != 0; }
+ inline bool IsCompressed(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_COMPRESSED) != 0; }
+ inline bool IsEncrypted(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_ENCRYPTED) != 0; }
+}
+
+class CFileInfoBase
+{
+ bool MatchesMask(UINT32 mask) const { return ((Attrib & mask) != 0); }
+public:
+ UInt64 Size;
+ FILETIME CTime;
+ FILETIME ATime;
+ FILETIME MTime;
+ DWORD Attrib;
+ bool IsDevice;
+
+ bool IsDir() const { return MatchesMask(FILE_ATTRIBUTE_DIRECTORY); }
+};
+
+class CFileInfo: public CFileInfoBase
+{
+public:
+ AString Name; // FIXME CSysString Name;
+ bool IsDots() const;
+ bool Find(LPCSTR wildcard);
+};
+
+// FIXME #ifdef _UNICODE
+// typedef CFileInfo CFileInfoW;
+// #else
+class CFileInfoW: public CFileInfoBase
+{
+public:
+ UString Name;
+ bool IsDots() const;
+ bool Find(LPCWSTR wildcard);
+};
+// #endif
+
+class CFindFile
+{
+ friend class CEnumerator;
+ DIR *_dirp;
+ AString _pattern;
+ AString _directory;
+public:
+ bool IsHandleAllocated() const { return (_dirp != 0); }
+ CFindFile(): _dirp(0) {}
+ ~CFindFile() { Close(); }
+ // bool FindFirst(LPCTSTR wildcard, CFileInfo &fileInfo);
+ bool FindFirst(LPCSTR wildcard, CFileInfo &fileInfo);
+ bool FindNext(CFileInfo &fileInfo);
+ // FIXME #ifndef _UNICODE
+ bool FindFirst(LPCWSTR wildcard, CFileInfoW &fileInfo);
+ bool FindNext(CFileInfoW &fileInfo);
+ // FIXME #endif
+ bool Close();
+};
+
+bool FindFile(LPCSTR wildcard, CFileInfo &fileInfo);
+
+bool DoesFileExist(LPCSTR name);
+bool DoesDirExist(LPCTSTR name);
+bool DoesFileOrDirExist(LPCSTR name);
+// #ifndef _UNICODE
+bool FindFile(LPCWSTR wildcard, CFileInfoW &fileInfo);
+bool DoesFileExist(LPCWSTR name);
+bool DoesDirExist(LPCWSTR name);
+bool DoesFileOrDirExist(LPCWSTR name);
+// #endif
+
+class CEnumerator
+{
+ CFindFile _findFile;
+ AString _wildcard; // FIXME CSysString _wildcard;
+ bool NextAny(CFileInfo &fileInfo);
+public:
+ CEnumerator(): _wildcard(NName::kAnyStringWildcard) {}
+ // FIXME CEnumerator(const CSysString &wildcard): _wildcard(wildcard) {}
+ CEnumerator(const AString &wildcard): _wildcard(wildcard) {}
+ bool Next(CFileInfo &fileInfo);
+ bool Next(CFileInfo &fileInfo, bool &found);
+};
+
+// FIXME #ifdef _UNICODE
+// typedef CEnumerator CEnumeratorW;
+// #else
+class CEnumeratorW
+{
+ CFindFile _findFile;
+ UString _wildcard;
+ bool NextAny(CFileInfoW &fileInfo);
+public:
+ CEnumeratorW(): _wildcard(NName::kAnyStringWildcard) {}
+ CEnumeratorW(const UString &wildcard): _wildcard(wildcard) {}
+ bool Next(CFileInfoW &fileInfo);
+ bool Next(CFileInfoW &fileInfo, bool &found);
+};
+// FIXME #endif
+
+}}}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,475 @@
+// Windows/FileIO.cpp
+
+#include "StdAfx.h"
+
+#include "FileIO.h"
+#include "Defs.h"
+#include "../Common/StringConvert.h"
+
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+
+#include <sys/types.h>
+#include <utime.h>
+
+#ifdef ENV_HAVE_LSTAT
+#define FD_LINK (-2)
+#endif
+
+#define GENERIC_READ 0x80000000
+#define GENERIC_WRITE 0x40000000
+
+extern BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *Time, DWORD *Seconds );
+
+namespace NWindows {
+namespace NFile {
+namespace NIO {
+
+CFileBase::~CFileBase()
+{
+ Close();
+}
+
+bool CFileBase::Create(LPCSTR filename, DWORD dwDesiredAccess,
+ DWORD dwShareMode, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,bool ignoreSymbolicLink)
+{
+ Close();
+
+ int flags = 0;
+ const char * name = nameWindowToUnix(filename);
+
+#ifdef O_BINARY
+ flags |= O_BINARY;
+#endif
+
+#ifdef O_LARGEFILE
+ flags |= O_LARGEFILE;
+#endif
+
+ /* now use the umask value */
+ int mask = umask(0);
+ (void)umask(mask);
+ int mode = 0666 & ~(mask & 066); /* keep the R/W for the user */
+
+ if (dwDesiredAccess & GENERIC_WRITE) flags |= O_WRONLY;
+ if (dwDesiredAccess & GENERIC_READ) flags |= O_RDONLY;
+
+
+ switch (dwCreationDisposition)
+ {
+ case CREATE_NEW : flags |= O_CREAT | O_EXCL; break;
+ case CREATE_ALWAYS : flags |= O_CREAT; break;
+ case OPEN_EXISTING : break;
+ case OPEN_ALWAYS : flags |= O_CREAT; break;
+ // case TRUNCATE_EXISTING : flags |= O_TRUNC; break;
+ }
+ // printf("##DBG open(%s,0x%x,%o)##\n",name,flags,(unsigned)mode);
+
+ _fd = -1;
+#ifdef ENV_HAVE_LSTAT
+ if ((global_use_lstat) && (ignoreSymbolicLink == false))
+ {
+ _size = readlink(name, _buffer, sizeof(_buffer)-1);
+ if (_size > 0) {
+ if (dwDesiredAccess & GENERIC_READ) {
+ _fd = FD_LINK;
+ _offset = 0;
+ _buffer[_size]=0;
+ } else if (dwDesiredAccess & GENERIC_WRITE) {
+ // does not overwrite the file pointed by symbolic link
+ if (!unlink(name)) return false;
+ }
+ }
+ }
+#endif
+
+ if (_fd == -1) {
+ _fd = open(name,flags, mode);
+ }
+
+ if ((_fd == -1) && (global_use_utf16_conversion)) {
+ // bug #1204993 - Try to recover the original filename
+ UString ustr = MultiByteToUnicodeString(AString(name), 0);
+ AString resultString;
+ int is_good = 1;
+ for (int i = 0; i < ustr.Length(); i++)
+ {
+ if (ustr[i] >= 256) {
+ is_good = 0;
+ break;
+ } else {
+ resultString += char(ustr[i]);
+ }
+ }
+ if (is_good) {
+ _fd = open((const char *)resultString,flags, mode);
+ }
+ }
+
+ if (_fd == -1) {
+ /* !ENV_HAVE_LSTAT : an invalid symbolic link => errno == ENOENT */
+ return false;
+ } else {
+ _unix_filename = name;
+ }
+
+ return true;
+}
+
+bool CFileBase::Create(LPCWSTR fileName, DWORD desiredAccess,
+ DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes,bool ignoreSymbolicLink)
+{
+ Close();
+ return Create(UnicodeStringToMultiByte(fileName, CP_ACP),
+ desiredAccess, shareMode, creationDisposition, flagsAndAttributes,ignoreSymbolicLink);
+}
+
+bool CFileBase::Close()
+{
+ struct utimbuf buf;
+
+ buf.actime = _lastAccessTime;
+ buf.modtime = _lastWriteTime;
+
+ _lastAccessTime = _lastWriteTime = (time_t)-1;
+
+ if(_fd == -1)
+ return true;
+
+#ifdef ENV_HAVE_LSTAT
+ if(_fd == FD_LINK) {
+ _fd = -1;
+ return true;
+ }
+#endif
+
+ int ret = ::close(_fd);
+ if (ret == 0) {
+ _fd = -1;
+
+ /* On some OS (mingwin, MacOSX ...), you must close the file before updating times */
+ if ((buf.actime != (time_t)-1) || (buf.modtime != (time_t)-1)) {
+ struct stat oldbuf;
+ int ret = stat((const char*)(_unix_filename),&oldbuf);
+ if (ret == 0) {
+ if (buf.actime == (time_t)-1) buf.actime = oldbuf.st_atime;
+ if (buf.modtime == (time_t)-1) buf.modtime = oldbuf.st_mtime;
+ } else {
+ time_t current_time = time(0);
+ if (buf.actime == (time_t)-1) buf.actime = current_time;
+ if (buf.modtime == (time_t)-1) buf.modtime = current_time;
+ }
+ /* ret = */ utime((const char *)(_unix_filename), &buf);
+ }
+ return true;
+ }
+ return false;
+}
+
+bool CFileBase::GetLength(UINT64 &length) const
+{
+ if (_fd == -1)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+#ifdef ENV_HAVE_LSTAT
+ if (_fd == FD_LINK) {
+ length = _size;
+ return true;
+ }
+#endif
+
+ off_t pos_cur = ::lseek(_fd, 0, SEEK_CUR);
+ if (pos_cur == (off_t)-1)
+ return false;
+
+ off_t pos_end = ::lseek(_fd, 0, SEEK_END);
+ if (pos_end == (off_t)-1)
+ return false;
+
+ off_t pos_cur2 = ::lseek(_fd, pos_cur, SEEK_SET);
+ if (pos_cur2 == (off_t)-1)
+ return false;
+
+ length = (UINT64)pos_end;
+
+ return true;
+}
+
+bool CFileBase::Seek(INT64 distanceToMove, DWORD moveMethod, UINT64 &newPosition)
+{
+ if (_fd == -1)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+#ifdef ENV_HAVE_LSTAT
+ if (_fd == FD_LINK) {
+ INT64 offset;
+ switch (moveMethod) {
+ case STREAM_SEEK_SET : offset = distanceToMove; break;
+ case STREAM_SEEK_CUR : offset = _offset + distanceToMove; break;
+ case STREAM_SEEK_END : offset = _size + distanceToMove; break;
+ default : offset = -1;
+ }
+ if (offset < 0) {
+ SetLastError( EINVAL );
+ return false;
+ }
+ if (offset > _size) offset = _size;
+ newPosition = _offset = offset;
+ return true;
+ }
+#endif
+
+ bool ret = true;
+
+ off_t pos = (off_t)distanceToMove;
+
+ off_t newpos = ::lseek(_fd,pos,moveMethod);
+
+ if (newpos == ((off_t)-1)) {
+ ret = false;
+ } else {
+ newPosition = (UINT64)newpos;
+ }
+
+ return ret;
+}
+
+bool CFileBase::Seek(UINT64 position, UINT64 &newPosition)
+{
+ return Seek(position, FILE_BEGIN, newPosition);
+}
+
+/////////////////////////
+// CInFile
+
+bool CInFile::Open(LPCTSTR fileName, DWORD shareMode,
+ DWORD creationDisposition, DWORD flagsAndAttributes)
+{
+ return Create(fileName, GENERIC_READ, shareMode,
+ creationDisposition, flagsAndAttributes);
+}
+
+bool CInFile::Open(LPCTSTR fileName,bool ignoreSymbolicLink)
+{
+ return Create(fileName, GENERIC_READ , FILE_SHARE_READ, OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,ignoreSymbolicLink);
+}
+
+#ifndef _UNICODE
+bool CInFile::Open(LPCWSTR fileName, DWORD shareMode,
+ DWORD creationDisposition, DWORD flagsAndAttributes)
+{
+ return Create(fileName, GENERIC_READ, shareMode,
+ creationDisposition, flagsAndAttributes);
+}
+
+bool CInFile::Open(LPCWSTR fileName,bool ignoreSymbolicLink)
+{
+ return Create(fileName, GENERIC_READ , FILE_SHARE_READ, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,ignoreSymbolicLink);
+}
+#endif
+
+// ReadFile and WriteFile functions in Windows have BUG:
+// If you Read or Write 64MB or more (probably min_failure_size = 64MB - 32KB + 1)
+// from/to Network file, it returns ERROR_NO_SYSTEM_RESOURCES
+// (Insufficient system resources exist to complete the requested service).
+
+// static UINT32 kChunkSizeMax = (1 << 24);
+
+bool CInFile::ReadPart(void *data, UINT32 size, UINT32 &processedSize)
+{
+ // if (size > kChunkSizeMax)
+ // size = kChunkSizeMax;
+ return Read(data,size,processedSize);
+}
+
+bool CInFile::Read(void *buffer, UINT32 bytesToRead, UINT32 &bytesRead)
+{
+ if (_fd == -1)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+ if (bytesToRead == 0) {
+ bytesRead =0;
+ return TRUE;
+ }
+
+#ifdef ENV_HAVE_LSTAT
+ if (_fd == FD_LINK) {
+ if (_offset >= _size) {
+ bytesRead = 0;
+ return TRUE;
+ }
+ int len = (_size - _offset);
+ if (len > bytesToRead) len = bytesToRead;
+ memcpy(buffer,_buffer+_offset,len);
+ bytesRead = len;
+ _offset += len;
+ return TRUE;
+ }
+#endif
+
+ ssize_t ret;
+ do {
+ ret = read(_fd,buffer,bytesToRead);
+ } while (ret < 0 && (errno == EINTR));
+
+ if (ret != -1) {
+ bytesRead = ret;
+ return TRUE;
+ }
+ bytesRead =0;
+ return FALSE;
+}
+
+/////////////////////////
+// COutFile
+
+bool COutFile::Open(LPCTSTR fileName, DWORD shareMode,
+ DWORD creationDisposition, DWORD flagsAndAttributes)
+{
+ return CFileBase::Create(fileName, GENERIC_WRITE, shareMode,
+ creationDisposition, flagsAndAttributes);
+}
+
+static inline DWORD GetCreationDisposition(bool createAlways)
+ { return createAlways? CREATE_ALWAYS: CREATE_NEW; }
+
+bool COutFile::Open(LPCTSTR fileName, DWORD creationDisposition)
+{
+ return Open(fileName, FILE_SHARE_READ,
+ creationDisposition, FILE_ATTRIBUTE_NORMAL);
+}
+
+bool COutFile::Create(LPCTSTR fileName, bool createAlways)
+{
+ return Open(fileName, GetCreationDisposition(createAlways));
+}
+
+#ifndef _UNICODE
+
+bool COutFile::Open(LPCWSTR fileName, DWORD shareMode,
+ DWORD creationDisposition, DWORD flagsAndAttributes)
+{
+ return CFileBase::Create(fileName, GENERIC_WRITE, shareMode,
+ creationDisposition, flagsAndAttributes);
+}
+
+bool COutFile::Open(LPCWSTR fileName, DWORD creationDisposition)
+{
+ return Open(fileName, FILE_SHARE_READ,
+ creationDisposition, FILE_ATTRIBUTE_NORMAL);
+}
+
+bool COutFile::Create(LPCWSTR fileName, bool createAlways)
+{
+ return Open(fileName, GetCreationDisposition(createAlways));
+}
+
+#endif
+
+bool COutFile::SetTime(const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime)
+{
+ LARGE_INTEGER ltime;
+ DWORD dw;
+
+ if (_fd == -1) {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+ /* On some OS (cygwin, MacOSX ...), you must close the file before updating times */
+ if (aTime) {
+ ltime.QuadPart = aTime->dwHighDateTime;
+ ltime.QuadPart = (ltime.QuadPart << 32) | aTime->dwLowDateTime;
+ RtlTimeToSecondsSince1970( <ime, &dw );
+ _lastAccessTime = dw;
+ }
+ if (mTime) {
+ ltime.QuadPart = mTime->dwHighDateTime;
+ ltime.QuadPart = (ltime.QuadPart << 32) | mTime->dwLowDateTime;
+ RtlTimeToSecondsSince1970( <ime, &dw );
+ _lastWriteTime = dw;
+ }
+
+ return true;
+}
+
+bool COutFile::SetMTime(const FILETIME *mTime)
+{
+ return SetTime(NULL, NULL, mTime);
+}
+
+bool COutFile::WritePart(const void *data, UINT32 size, UINT32 &processedSize)
+{
+// if (size > kChunkSizeMax)
+// size = kChunkSizeMax;
+
+ return Write(data,size,processedSize);
+}
+
+bool COutFile::Write(const void *buffer, UINT32 bytesToWrite, UINT32 &bytesWritten)
+{
+ if (_fd == -1)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+ ssize_t ret;
+ do {
+ ret = write(_fd,buffer, bytesToWrite);
+ } while (ret < 0 && (errno == EINTR));
+
+ if (ret != -1) {
+ bytesWritten = ret;
+ return TRUE;
+ }
+ bytesWritten =0;
+ return FALSE;
+}
+
+bool COutFile::SetEndOfFile()
+{
+ if (_fd == -1)
+ {
+ SetLastError( ERROR_INVALID_HANDLE );
+ return false;
+ }
+
+ bool bret = false;
+
+ off_t pos_cur = lseek(_fd, 0, SEEK_CUR);
+ if (pos_cur != (off_t)-1) {
+ int iret = ftruncate(_fd, pos_cur);
+ if (iret == 0) bret = true;
+ }
+
+ return bret;
+}
+
+bool COutFile::SetLength(UINT64 length)
+{
+ UINT64 newPosition;
+ if(!Seek(length, newPosition))
+ return false;
+ if(newPosition != length)
+ return false;
+ return SetEndOfFile();
+}
+
+}}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileIO.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,110 @@
+// Windows/FileIO.h
+
+#ifndef __WINDOWS_FILEIO_H
+#define __WINDOWS_FILEIO_H
+
+#include <Common/MyString.h>
+
+#ifndef _WIN32
+
+#define FILE_SHARE_READ 1
+#define FILE_SHARE_WRITE 2
+
+#define FILE_BEGIN SEEK_SET
+#define FILE_CURRENT SEEK_CUR
+#define FILE_END SEEK_END
+#define INVALID_SET_FILE_POINTER ((DWORD)-1)
+
+#define CREATE_NEW 1
+#define CREATE_ALWAYS 2
+#define OPEN_EXISTING 3
+#define OPEN_ALWAYS 4
+/* #define TRUNCATE_EXISTING 5 */
+
+#endif
+
+namespace NWindows {
+namespace NFile {
+namespace NIO {
+
+
+class CFileBase
+{
+protected:
+ int _fd;
+ AString _unix_filename;
+ time_t _lastAccessTime;
+ time_t _lastWriteTime;
+#ifdef ENV_HAVE_LSTAT
+ int _size;
+ char _buffer[MAX_PATHNAME_LEN+1];
+ int _offset;
+#endif
+
+ bool Create(LPCSTR fileName, DWORD desiredAccess,
+ DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes,bool ignoreSymbolicLink=false);
+ bool Create(LPCWSTR fileName, DWORD desiredAccess,
+ DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes,bool ignoreSymbolicLink=false);
+
+public:
+ CFileBase(): _fd(-1) {};
+ virtual ~CFileBase();
+
+ virtual bool Close();
+
+ bool GetLength(UINT64 &length) const;
+
+ bool Seek(INT64 distanceToMove, DWORD moveMethod, UINT64 &newPosition);
+ bool Seek(UINT64 position, UINT64 &newPosition);
+};
+
+class CInFile: public CFileBase
+{
+public:
+ bool Open(LPCTSTR fileName, DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes);
+ bool OpenShared(LPCTSTR fileName, bool /* shareForWrite */ ,bool ignoreSymbolicLink=false) {
+ return Open(fileName,ignoreSymbolicLink);
+ }
+ bool Open(LPCTSTR fileName,bool ignoreSymbolicLink=false);
+ #ifndef _UNICODE
+ bool Open(LPCWSTR fileName, DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes);
+ bool OpenShared(LPCWSTR fileName, bool /* shareForWrite */ ,bool ignoreSymbolicLink=false) {
+ return Open(fileName,ignoreSymbolicLink);
+ }
+ bool Open(LPCWSTR fileName,bool ignoreSymbolicLink=false);
+ #endif
+ bool ReadPart(void *data, UINT32 size, UINT32 &processedSize);
+ bool Read(void *data, UINT32 size, UINT32 &processedSize);
+};
+
+class COutFile: public CFileBase
+{
+public:
+ bool Open(LPCTSTR fileName, DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes);
+ bool Open(LPCTSTR fileName, DWORD creationDisposition);
+ bool Create(LPCTSTR fileName, bool createAlways);
+
+ #ifndef _UNICODE
+ bool Open(LPCWSTR fileName, DWORD shareMode, DWORD creationDisposition, DWORD flagsAndAttributes);
+ bool Open(LPCWSTR fileName, DWORD creationDisposition);
+ bool Create(LPCWSTR fileName, bool createAlways);
+ #endif
+
+ /*
+ void SetOpenCreationDisposition(DWORD creationDisposition)
+ { m_CreationDisposition = creationDisposition; }
+ void SetOpenCreationDispositionCreateAlways()
+ { m_CreationDisposition = CREATE_ALWAYS; }
+ */
+
+ bool SetTime(const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime);
+ bool SetMTime(const FILETIME *mTime);
+ bool WritePart(const void *data, UINT32 size, UINT32 &processedSize);
+ bool Write(const void *data, UINT32 size, UINT32 &processedSize);
+ bool SetEndOfFile();
+ bool SetLength(UINT64 length);
+};
+
+}}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,50 @@
+// Windows/FileName.cpp
+
+#include "StdAfx.h"
+
+#include "Windows/FileName.h"
+#include "Common/Wildcard.h"
+
+namespace NWindows {
+namespace NFile {
+namespace NName {
+
+void NormalizeDirPathPrefix(CSysString &dirPath)
+{
+ if (dirPath.IsEmpty())
+ return;
+ if (dirPath.ReverseFind(kDirDelimiter) != dirPath.Length() - 1)
+ dirPath += kDirDelimiter;
+}
+
+#ifndef _UNICODE
+void NormalizeDirPathPrefix(UString &dirPath)
+{
+ if (dirPath.IsEmpty())
+ return;
+ if (dirPath.ReverseFind(wchar_t(kDirDelimiter)) != dirPath.Length() - 1)
+ dirPath += wchar_t(kDirDelimiter);
+}
+#endif
+
+const wchar_t kExtensionDelimiter = L'.';
+
+void SplitNameToPureNameAndExtension(const UString &fullName,
+ UString &pureName, UString &extensionDelimiter, UString &extension)
+{
+ int index = fullName.ReverseFind(kExtensionDelimiter);
+ if (index < 0)
+ {
+ pureName = fullName;
+ extensionDelimiter.Empty();
+ extension.Empty();
+ }
+ else
+ {
+ pureName = fullName.Left(index);
+ extensionDelimiter = kExtensionDelimiter;
+ extension = fullName.Mid(index + 1);
+ }
+}
+
+}}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/FileName.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,27 @@
+// Windows/FileName.h
+
+#ifndef __WINDOWS_FILENAME_H
+#define __WINDOWS_FILENAME_H
+
+#include "../../C/Types.h"
+
+#include "../Common/MyString.h"
+
+namespace NWindows {
+namespace NFile {
+namespace NName {
+
+const TCHAR kDirDelimiter = CHAR_PATH_SEPARATOR;
+const TCHAR kAnyStringWildcard = '*';
+
+void NormalizeDirPathPrefix(CSysString &dirPath); // ensures that it ended with '\\'
+#ifndef _UNICODE
+void NormalizeDirPathPrefix(UString &dirPath); // ensures that it ended with '\\'
+#endif
+
+void SplitNameToPureNameAndExtension(const UString &fullName,
+ UString &pureName, UString &extensionDelimiter, UString &extension);
+
+}}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Menu.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Menu.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Menu.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Menu.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,4 @@
+
+/* TODO */
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/NtCheck.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/NtCheck.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/NtCheck.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/NtCheck.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,44 @@
+// Windows/NtCheck.h
+
+#ifndef __WINDOWS_NT_CHECK_H
+#define __WINDOWS_NT_CHECK_H
+
+#ifdef _WIN32
+
+#if !defined(_WIN64) && !defined(UNDER_CE)
+static inline bool IsItWindowsNT()
+{
+ OSVERSIONINFO vi;
+ vi.dwOSVersionInfoSize = sizeof(vi);
+ return (::GetVersionEx(&vi) && vi.dwPlatformId == VER_PLATFORM_WIN32_NT);
+}
+#endif
+
+#ifndef _UNICODE
+ #if defined(_WIN64) || defined(UNDER_CE)
+ bool g_IsNT = true;
+ #define SET_IS_NT
+ #else
+ bool g_IsNT = false;
+ #define SET_IS_NT g_IsNT = IsItWindowsNT();
+ #endif
+ #define NT_CHECK_ACTION
+ // #define NT_CHECK_ACTION { NT_CHECK_FAIL_ACTION }
+#else
+ #if !defined(_WIN64) && !defined(UNDER_CE)
+ #define NT_CHECK_ACTION if (!IsItWindowsNT()) { NT_CHECK_FAIL_ACTION }
+ #else
+ #define NT_CHECK_ACTION
+ #endif
+ #define SET_IS_NT
+#endif
+
+#define NT_CHECK NT_CHECK_ACTION SET_IS_NT
+
+#else
+
+#define NT_CHECK
+
+#endif
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,243 @@
+// Windows/PropVariant.cpp
+
+#include "StdAfx.h"
+
+#include "PropVariant.h"
+
+#include "../Common/Defs.h"
+
+namespace NWindows {
+namespace NCOM {
+
+CPropVariant::CPropVariant(const PROPVARIANT &varSrc)
+{
+ vt = VT_EMPTY;
+ InternalCopy(&varSrc);
+}
+
+CPropVariant::CPropVariant(const CPropVariant &varSrc)
+{
+ vt = VT_EMPTY;
+ InternalCopy(&varSrc);
+}
+
+CPropVariant::CPropVariant(BSTR bstrSrc)
+{
+ vt = VT_EMPTY;
+ *this = bstrSrc;
+}
+
+CPropVariant::CPropVariant(LPCOLESTR lpszSrc)
+{
+ vt = VT_EMPTY;
+ *this = lpszSrc;
+}
+
+CPropVariant& CPropVariant::operator=(const CPropVariant &varSrc)
+{
+ InternalCopy(&varSrc);
+ return *this;
+}
+CPropVariant& CPropVariant::operator=(const PROPVARIANT &varSrc)
+{
+ InternalCopy(&varSrc);
+ return *this;
+}
+
+CPropVariant& CPropVariant::operator=(BSTR bstrSrc)
+{
+ *this = (LPCOLESTR)bstrSrc;
+ return *this;
+}
+
+static const char *kMemException = "out of memory";
+
+CPropVariant& CPropVariant::operator=(LPCOLESTR lpszSrc)
+{
+ InternalClear();
+ vt = VT_BSTR;
+ wReserved1 = 0;
+ bstrVal = ::SysAllocString(lpszSrc);
+ if (bstrVal == NULL && lpszSrc != NULL)
+ {
+ throw kMemException;
+ // vt = VT_ERROR;
+ // scode = E_OUTOFMEMORY;
+ }
+ return *this;
+}
+
+
+CPropVariant& CPropVariant::operator=(const char *s)
+{
+ InternalClear();
+ vt = VT_BSTR;
+ wReserved1 = 0;
+ UINT len = (UINT)strlen(s);
+ bstrVal = ::SysAllocStringByteLen(0, (UINT)len * sizeof(OLECHAR));
+ if (bstrVal == NULL)
+ {
+ throw kMemException;
+ // vt = VT_ERROR;
+ // scode = E_OUTOFMEMORY;
+ }
+ else
+ {
+ for (UINT i = 0; i <= len; i++)
+ bstrVal[i] = s[i];
+ }
+ return *this;
+}
+
+CPropVariant& CPropVariant::operator=(bool bSrc)
+{
+ if (vt != VT_BOOL)
+ {
+ InternalClear();
+ vt = VT_BOOL;
+ }
+ boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+ return *this;
+}
+
+#define SET_PROP_FUNC(type, id, dest) \
+ CPropVariant& CPropVariant::operator=(type value) \
+ { if (vt != id) { InternalClear(); vt = id; } \
+ dest = value; return *this; }
+
+SET_PROP_FUNC(Byte, VT_UI1, bVal)
+SET_PROP_FUNC(Int16, VT_I2, iVal)
+SET_PROP_FUNC(Int32, VT_I4, lVal)
+SET_PROP_FUNC(UInt32, VT_UI4, ulVal)
+SET_PROP_FUNC(UInt64, VT_UI8, uhVal.QuadPart)
+SET_PROP_FUNC(const FILETIME &, VT_FILETIME, filetime)
+
+static HRESULT MyPropVariantClear(PROPVARIANT *prop)
+{
+ switch(prop->vt)
+ {
+ case VT_UI1:
+ case VT_I1:
+ case VT_I2:
+ case VT_UI2:
+ case VT_BOOL:
+ case VT_I4:
+ case VT_UI4:
+ case VT_R4:
+ case VT_INT:
+ case VT_UINT:
+ case VT_ERROR:
+ case VT_FILETIME:
+ case VT_UI8:
+ case VT_R8:
+ case VT_CY:
+ case VT_DATE:
+ prop->vt = VT_EMPTY;
+ prop->wReserved1 = 0;
+ return S_OK;
+ }
+ return ::VariantClear((VARIANTARG *)prop);
+}
+
+HRESULT CPropVariant::Clear()
+{
+ return MyPropVariantClear(this);
+}
+
+HRESULT CPropVariant::Copy(const PROPVARIANT* pSrc)
+{
+ ::VariantClear((tagVARIANT *)this);
+ switch(pSrc->vt)
+ {
+ case VT_UI1:
+ case VT_I1:
+ case VT_I2:
+ case VT_UI2:
+ case VT_BOOL:
+ case VT_I4:
+ case VT_UI4:
+ case VT_R4:
+ case VT_INT:
+ case VT_UINT:
+ case VT_ERROR:
+ case VT_FILETIME:
+ case VT_UI8:
+ case VT_R8:
+ case VT_CY:
+ case VT_DATE:
+ memmove((PROPVARIANT*)this, pSrc, sizeof(PROPVARIANT));
+ return S_OK;
+ }
+ return ::VariantCopy((tagVARIANT *)this, (tagVARIANT *)const_cast<PROPVARIANT *>(pSrc));
+}
+
+
+HRESULT CPropVariant::Attach(PROPVARIANT *pSrc)
+{
+ HRESULT hr = Clear();
+ if (FAILED(hr))
+ return hr;
+ memcpy(this, pSrc, sizeof(PROPVARIANT));
+ pSrc->vt = VT_EMPTY;
+ return S_OK;
+}
+
+HRESULT CPropVariant::Detach(PROPVARIANT *pDest)
+{
+ HRESULT hr = MyPropVariantClear(pDest);
+ if (FAILED(hr))
+ return hr;
+ memcpy(pDest, this, sizeof(PROPVARIANT));
+ vt = VT_EMPTY;
+ return S_OK;
+}
+
+HRESULT CPropVariant::InternalClear()
+{
+ HRESULT hr = Clear();
+ if (FAILED(hr))
+ {
+ vt = VT_ERROR;
+ scode = hr;
+ }
+ return hr;
+}
+
+void CPropVariant::InternalCopy(const PROPVARIANT *pSrc)
+{
+ HRESULT hr = Copy(pSrc);
+ if (FAILED(hr))
+ {
+ if (hr == E_OUTOFMEMORY)
+ throw kMemException;
+ vt = VT_ERROR;
+ scode = hr;
+ }
+}
+
+int CPropVariant::Compare(const CPropVariant &a)
+{
+ if (vt != a.vt)
+ return MyCompare(vt, a.vt);
+ switch (vt)
+ {
+ case VT_EMPTY: return 0;
+ // case VT_I1: return MyCompare(cVal, a.cVal);
+ case VT_UI1: return MyCompare(bVal, a.bVal);
+ case VT_I2: return MyCompare(iVal, a.iVal);
+ case VT_UI2: return MyCompare(uiVal, a.uiVal);
+ case VT_I4: return MyCompare(lVal, a.lVal);
+ case VT_UI4: return MyCompare(ulVal, a.ulVal);
+ // case VT_UINT: return MyCompare(uintVal, a.uintVal);
+ case VT_I8: return MyCompare(hVal.QuadPart, a.hVal.QuadPart);
+ case VT_UI8: return MyCompare(uhVal.QuadPart, a.uhVal.QuadPart);
+ case VT_BOOL: return -MyCompare(boolVal, a.boolVal);
+ case VT_FILETIME: return ::CompareFileTime(&filetime, &a.filetime);
+ case VT_BSTR:
+ return 0; // Not implemented
+ // return MyCompare(aPropVarint.cVal);
+ default: return 0;
+ }
+}
+
+}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariant.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,56 @@
+// Windows/PropVariant.h
+
+#ifndef __WINDOWS_PROPVARIANT_H
+#define __WINDOWS_PROPVARIANT_H
+
+#include "../Common/MyWindows.h"
+#include "../Common/Types.h"
+
+namespace NWindows {
+namespace NCOM {
+
+class CPropVariant : public tagPROPVARIANT
+{
+public:
+ CPropVariant() { vt = VT_EMPTY; wReserved1 = 0; }
+ ~CPropVariant() { Clear(); }
+ CPropVariant(const PROPVARIANT &varSrc);
+ CPropVariant(const CPropVariant &varSrc);
+ CPropVariant(BSTR bstrSrc);
+ CPropVariant(LPCOLESTR lpszSrc);
+ CPropVariant(bool bSrc) { vt = VT_BOOL; wReserved1 = 0; boolVal = (bSrc ? VARIANT_TRUE : VARIANT_FALSE); };
+ CPropVariant(Byte value) { vt = VT_UI1; wReserved1 = 0; bVal = value; }
+ CPropVariant(Int16 value) { vt = VT_I2; wReserved1 = 0; iVal = value; }
+ CPropVariant(Int32 value) { vt = VT_I4; wReserved1 = 0; lVal = value; }
+ CPropVariant(UInt32 value) { vt = VT_UI4; wReserved1 = 0; ulVal = value; }
+ CPropVariant(UInt64 value) { vt = VT_UI8; wReserved1 = 0; uhVal.QuadPart = value; }
+ CPropVariant(const FILETIME &value) { vt = VT_FILETIME; wReserved1 = 0; filetime = value; }
+
+ CPropVariant& operator=(const CPropVariant &varSrc);
+ CPropVariant& operator=(const PROPVARIANT &varSrc);
+ CPropVariant& operator=(BSTR bstrSrc);
+ CPropVariant& operator=(LPCOLESTR lpszSrc);
+ CPropVariant& operator=(const char *s);
+ CPropVariant& operator=(bool bSrc);
+ CPropVariant& operator=(Byte value);
+ CPropVariant& operator=(Int16 value);
+ CPropVariant& operator=(Int32 value);
+ CPropVariant& operator=(UInt32 value);
+ CPropVariant& operator=(Int64 value);
+ CPropVariant& operator=(UInt64 value);
+ CPropVariant& operator=(const FILETIME &value);
+
+ HRESULT Clear();
+ HRESULT Copy(const PROPVARIANT *pSrc);
+ HRESULT Attach(PROPVARIANT *pSrc);
+ HRESULT Detach(PROPVARIANT *pDest);
+
+ HRESULT InternalClear();
+ void InternalCopy(const PROPVARIANT *pSrc);
+
+ int Compare(const CPropVariant &a1);
+};
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,142 @@
+// PropVariantConversions.cpp
+
+#include "StdAfx.h"
+
+#include "Common/IntToString.h"
+#include "Common/StringConvert.h"
+
+#include "Windows/Defs.h"
+
+#include "PropVariantConversions.h"
+
+static UString ConvertUInt64ToString(UInt64 value)
+{
+ wchar_t buffer[32];
+ ConvertUInt64ToString(value, buffer);
+ return buffer;
+}
+
+static UString ConvertInt64ToString(Int64 value)
+{
+ wchar_t buffer[32];
+ ConvertInt64ToString(value, buffer);
+ return buffer;
+}
+
+#ifdef _WIN32
+static char *UIntToStringSpec(char c, UInt32 value, char *s, int numPos)
+{
+ if (c != 0)
+ *s++ = c;
+ char temp[16];
+ int pos = 0;
+ do
+ {
+ temp[pos++] = (char)('0' + value % 10);
+ value /= 10;
+ }
+ while (value != 0);
+ int i;
+ for (i = 0; i < numPos - pos; i++)
+ *s++ = '0';
+ do
+ *s++ = temp[--pos];
+ while (pos > 0);
+ *s = '\0';
+ return s;
+}
+#endif
+
+bool ConvertFileTimeToString(const FILETIME &ft, char *s, bool includeTime, bool includeSeconds)
+{
+#ifdef _WIN32
+ s[0] = '\0';
+ SYSTEMTIME st;
+ if (!BOOLToBool(FileTimeToSystemTime(&ft, &st)))
+ return false;
+ s = UIntToStringSpec(0, st.wYear, s, 4);
+ s = UIntToStringSpec('-', st.wMonth, s, 2);
+ s = UIntToStringSpec('-', st.wDay, s, 2);
+ if (includeTime)
+ {
+ s = UIntToStringSpec(' ', st.wHour, s, 2);
+ s = UIntToStringSpec(':', st.wMinute, s, 2);
+ if (includeSeconds)
+ UIntToStringSpec(':', st.wSecond, s, 2);
+ }
+ /*
+ sprintf(s, "%04d-%02d-%02d", st.wYear, st.wMonth, st.wDay);
+ if (includeTime)
+ {
+ sprintf(s + strlen(s), " %02d:%02d", st.wHour, st.wMinute);
+ if (includeSeconds)
+ sprintf(s + strlen(s), ":%02d", st.wSecond);
+ }
+ */
+#else
+ BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *Time, DWORD *Seconds );
+
+ FILETIME filetime;
+ LocalFileTimeToFileTime(&ft, &filetime);
+
+ LARGE_INTEGER ltime;
+
+ ltime.QuadPart = filetime.dwHighDateTime;
+ ltime.QuadPart = (ltime.QuadPart << 32) | filetime.dwLowDateTime;
+
+ DWORD dw;
+ RtlTimeToSecondsSince1970(<ime, &dw );
+ time_t timep = (time_t)dw;
+
+ struct tm * date = localtime(&timep);
+
+ sprintf(s, "%04d-%02d-%02d", date->tm_year+1900, date->tm_mon+1,date->tm_mday);
+ if (includeTime)
+ {
+ sprintf(s + strlen(s), " %02d:%02d", date->tm_hour,date->tm_min);
+ if (includeSeconds)
+ sprintf(s + strlen(s), ":%02d", date->tm_sec);
+ }
+#endif
+ return true;
+}
+
+UString ConvertFileTimeToString(const FILETIME &ft, bool includeTime, bool includeSeconds)
+{
+ char s[32];
+ ConvertFileTimeToString(ft, s, includeTime, includeSeconds);
+ return GetUnicodeString(s);
+}
+
+
+UString ConvertPropVariantToString(const PROPVARIANT &prop)
+{
+ switch (prop.vt)
+ {
+ case VT_EMPTY: return UString();
+ case VT_BSTR: return prop.bstrVal;
+ case VT_UI1: return ConvertUInt64ToString(prop.bVal);
+ case VT_UI2: return ConvertUInt64ToString(prop.uiVal);
+ case VT_UI4: return ConvertUInt64ToString(prop.ulVal);
+ case VT_UI8: return ConvertUInt64ToString(prop.uhVal.QuadPart);
+ case VT_FILETIME: return ConvertFileTimeToString(prop.filetime, true, true);
+ // case VT_I1: return ConvertInt64ToString(prop.cVal);
+ case VT_I2: return ConvertInt64ToString(prop.iVal);
+ case VT_I4: return ConvertInt64ToString(prop.lVal);
+ case VT_I8: return ConvertInt64ToString(prop.hVal.QuadPart);
+ case VT_BOOL: return VARIANT_BOOLToBool(prop.boolVal) ? L"+" : L"-";
+ default: throw 150245;
+ }
+}
+
+UInt64 ConvertPropVariantToUInt64(const PROPVARIANT &prop)
+{
+ switch (prop.vt)
+ {
+ case VT_UI1: return prop.bVal;
+ case VT_UI2: return prop.uiVal;
+ case VT_UI4: return prop.ulVal;
+ case VT_UI8: return (UInt64)prop.uhVal.QuadPart;
+ default: throw 151199;
+ }
+}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantConversions.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,14 @@
+// Windows/PropVariantConversions.h
+
+#ifndef __PROP_VARIANT_CONVERSIONS_H
+#define __PROP_VARIANT_CONVERSIONS_H
+
+#include "Common/MyString.h"
+#include "Common/Types.h"
+
+bool ConvertFileTimeToString(const FILETIME &ft, char *s, bool includeTime = true, bool includeSeconds = true);
+UString ConvertFileTimeToString(const FILETIME &ft, bool includeTime = true, bool includeSeconds = true);
+UString ConvertPropVariantToString(const PROPVARIANT &prop);
+UInt64 ConvertPropVariantToUInt64(const PROPVARIANT &prop);
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,78 @@
+// PropVariantUtils.cpp
+
+#include "StdAfx.h"
+
+#include "PropVariantUtils.h"
+#include "Common/StringConvert.h"
+#include "Common/IntToString.h"
+
+using namespace NWindows;
+
+static AString GetHex(UInt32 v)
+{
+ char sz[32] = { '0', 'x' };
+ ConvertUInt64ToString(v, sz + 2, 16);
+ return sz;
+}
+
+void StringToProp(const AString &s, NCOM::CPropVariant &prop)
+{
+ prop = MultiByteToUnicodeString(s);
+}
+
+void PairToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 value, NCOM::CPropVariant &prop)
+{
+ AString s;
+ for (unsigned i = 0; i < num; i++)
+ {
+ const CUInt32PCharPair &p = pairs[i];
+ if (p.Value == value)
+ s = p.Name;
+ }
+ if (s.IsEmpty())
+ s = GetHex(value);
+ StringToProp(s, prop);
+}
+
+AString TypeToString(const char *table[], unsigned num, UInt32 value)
+{
+ if (value < num)
+ return table[value];
+ return GetHex(value);
+}
+
+void TypeToProp(const char *table[], unsigned num, UInt32 value, NCOM::CPropVariant &prop)
+{
+ StringToProp(TypeToString(table, num, value), prop);
+}
+
+
+AString FlagsToString(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags)
+{
+ AString s;
+ for (unsigned i = 0; i < num; i++)
+ {
+ const CUInt32PCharPair &p = pairs[i];
+ UInt32 flag = (UInt32)1 << (unsigned)p.Value;
+ if ((flags & flag) != 0)
+ {
+ if (!s.IsEmpty())
+ s += ' ';
+ s += p.Name;
+ }
+ flags &= ~flag;
+ }
+ if (flags != 0)
+ {
+ if (!s.IsEmpty())
+ s += ' ';
+ s += GetHex(flags);
+ }
+ return s;
+}
+
+void FlagsToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags, NCOM::CPropVariant &prop)
+{
+ StringToProp(FlagsToString(pairs, num, flags), prop);
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/PropVariantUtils.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,28 @@
+// Windows/PropVariantUtils.h
+
+#ifndef __PROP_VARIANT_UTILS_H
+#define __PROP_VARIANT_UTILS_H
+
+#include "Common/MyString.h"
+#include "PropVariant.h"
+
+struct CUInt32PCharPair
+{
+ UInt32 Value;
+ const char *Name;
+};
+
+void StringToProp(const AString &s, NWindows::NCOM::CPropVariant &prop);
+void PairToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 value, NWindows::NCOM::CPropVariant &prop);
+
+AString FlagsToString(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags);
+void FlagsToProp(const CUInt32PCharPair *pairs, unsigned num, UInt32 flags, NWindows::NCOM::CPropVariant &prop);
+
+AString TypeToString(const char *table[], unsigned num, UInt32 value);
+void TypeToProp(const char *table[], unsigned num, UInt32 value, NWindows::NCOM::CPropVariant &prop);
+
+#define PAIR_TO_PROP(pairs, value, prop) PairToProp(pairs, sizeof(pairs) / sizeof(pairs[0]), value, prop)
+#define FLAGS_TO_PROP(pairs, value, prop) FlagsToProp(pairs, sizeof(pairs) / sizeof(pairs[0]), value, prop)
+#define TYPE_TO_PROP(table, value, prop) TypeToProp(table, sizeof(table) / sizeof(table[0]), value, prop)
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,313 @@
+// Windows/Registry.cpp
+
+#include "StdAfx.h"
+
+#ifndef _UNICODE
+#include "Common/StringConvert.h"
+#endif
+#include "Windows/Registry.h"
+
+#include <wx/config.h>
+
+class HKEY_Impl
+{
+ public:
+ wxString path;
+ HKEY_Impl(wxString a) : path(a) {}
+};
+
+namespace NWindows {
+namespace NRegistry {
+
+#define ERROR_SET_VALUE (E_INVALIDARG) // FIXME
+#define ERROR_GET_VALUE (E_INVALIDARG) // FIXME
+#define PROGRAM_NAME L"p7zip"
+
+static wxConfig * g_config = 0;
+static int g_config_ref = 0;
+
+static void configAddRef() {
+ if (g_config == 0) {
+ g_config = new wxConfig(PROGRAM_NAME);
+ g_config->Flush(true);
+ wxConfigBase::Set(g_config);
+ }
+ g_config_ref++;
+}
+
+static void configSubRef() {
+ if (g_config_ref >= 1)
+ {
+ g_config_ref--;
+ if (g_config_ref == 0) {
+ delete g_config;
+ g_config = 0;
+ wxConfigBase::Set(NULL);
+ } else {
+ g_config->Flush(true);
+ }
+ }
+}
+
+ LONG CKey::Close()
+ {
+ if (_object)
+ {
+ configSubRef();
+ delete _object;
+ }
+ _object = 0;
+ return ERROR_SUCCESS;
+ }
+
+ LONG CKey::Create(HKEY parentKey, LPCTSTR keyName)
+ {
+ Close();
+
+ configAddRef();
+
+ wxString path;
+
+ if (parentKey == HKEY_CURRENT_USER) {
+ path=L"/" + wxString(keyName);
+ } else {
+ path = parentKey->path + L"/" + wxString(keyName);
+ }
+ _object = new HKEY_Impl(path);
+ return ERROR_SUCCESS;
+ }
+ LONG CKey::Open(HKEY parentKey, LPCTSTR keyName, REGSAM accessMask)
+ {
+ Close();
+
+ configAddRef();
+
+ wxString path;
+
+ if (parentKey == HKEY_CURRENT_USER) {
+ path=L"/" + wxString(keyName);
+ } else {
+ path = parentKey->path + L"/" + wxString(keyName);
+ }
+ _object = new HKEY_Impl(path);
+ return ERROR_SUCCESS;
+ }
+
+ LONG CKey::RecurseDeleteKey(LPCTSTR subKeyName)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->DeleteGroup(subKeyName);
+ if (ret) return ERROR_SUCCESS;
+ return ERROR_GET_VALUE;
+ }
+
+ LONG CKey::DeleteValue(LPCTSTR name)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->DeleteEntry(name);
+ if (ret) return ERROR_SUCCESS;
+ return ERROR_GET_VALUE;
+ }
+
+ LONG CKey::QueryValue(LPCTSTR name, UInt32 &value)
+ {
+ g_config->SetPath(_object->path);
+ long val;
+ bool ret = g_config->Read(name,&val);
+ if (ret) {
+ value = (UInt32)val;
+ return ERROR_SUCCESS;
+ }
+ return ERROR_GET_VALUE;
+ }
+
+ LONG CKey::QueryValue(LPCTSTR name, bool &value)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->Read(name,&value);
+ if (ret) return ERROR_SUCCESS;
+ return ERROR_GET_VALUE;
+ }
+
+ LONG CKey::QueryValue(LPCTSTR name, CSysString &value)
+ {
+ g_config->SetPath(_object->path);
+ wxString val;
+ bool ret = g_config->Read(name,&val);
+ if (ret) {
+ value = val;
+ return ERROR_SUCCESS;
+ }
+ return ERROR_GET_VALUE;
+ }
+
+LONG CKey::GetValue_IfOk(LPCTSTR name, UInt32 &value)
+{
+ UInt32 newVal;
+ LONG res = QueryValue(name, newVal);
+ if (res == ERROR_SUCCESS)
+ value = newVal;
+ return res;
+}
+
+LONG CKey::GetValue_IfOk(LPCTSTR name, bool &value)
+{
+ bool newVal;
+ LONG res = QueryValue(name, newVal);
+ if (res == ERROR_SUCCESS)
+ value = newVal;
+ return res;
+}
+
+
+ LONG CKey::SetValue(LPCTSTR valueName, UInt32 value)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->Write(valueName,(long)value);
+ if (ret == true) return ERROR_SUCCESS;
+ return ERROR_SET_VALUE;
+ }
+ LONG CKey::SetValue(LPCTSTR valueName, bool value)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->Write(valueName,value);
+ if (ret == true) return ERROR_SUCCESS;
+ return ERROR_SET_VALUE;
+ }
+ LONG CKey::SetValue(LPCTSTR valueName, LPCTSTR value)
+ {
+ g_config->SetPath(_object->path);
+ bool ret = g_config->Write(valueName,value);
+ if (ret == true) return ERROR_SUCCESS;
+ return ERROR_SET_VALUE;
+ }
+
+ LONG CKey::SetValue(LPCTSTR name, const void *value, UInt32 size)
+ {
+ static char hexa[] = "0123456789ABCDEF";
+ /* FIXME
+ MYASSERT(value != NULL);
+ MYASSERT(_object != NULL);
+ return RegSetValueEx(_object, name, NULL, REG_BINARY, (const BYTE *)value, size);
+ */
+ BYTE *buf = (BYTE *)value;
+ wxString str;
+ for(UInt32 i=0;i<size;i++)
+ {
+ str += hexa[ (buf[i]>>4) & 0x0f];
+ str += hexa[ buf[i] & 0x0f];
+ }
+ return SetValue(name,(LPCTSTR)str);
+ }
+
+ LONG CKey::EnumKeys(CSysStringVector &keyNames)
+ {
+ g_config->SetPath(_object->path);
+ keyNames.Clear();
+ // enumeration variables
+ wxString str;
+ long dummy;
+ bool bCont = g_config->GetFirstEntry(str, dummy);
+ while ( bCont ) {
+ keyNames.Add((const TCHAR *)str);
+ bCont = g_config->GetNextEntry(str, dummy);
+ }
+
+ // now all groups...
+ bCont = g_config->GetFirstGroup(str, dummy);
+ while ( bCont ) {
+ keyNames.Add((const TCHAR *)str);
+ bCont = g_config->GetNextGroup(str, dummy);
+ }
+ return ERROR_SUCCESS;
+ }
+
+ LONG CKey::QueryValue(LPCTSTR name, void *value, UInt32 &dataSize)
+ {
+ g_config->SetPath(_object->path);
+ wxString str;
+ bool ret = g_config->Read(name,&str);
+ if (ret == false) return ERROR_GET_VALUE;
+
+ size_t l = str.Len() / 2;
+ if (l > dataSize) l = dataSize;
+ else dataSize=l;
+
+ BYTE *buf = (BYTE *)value;
+ for(UInt32 i=0;i<dataSize;i++)
+ {
+ char cval[3];
+ cval[0] = (char)str[2*i];
+ cval[1] = (char)str[2*i+1];
+ cval[2] = 0;
+ unsigned uval = 0;
+ sscanf(cval,"%x",&uval);
+ buf[i]=(BYTE)uval;
+ }
+
+ return ERROR_SUCCESS;
+ }
+
+
+ LONG CKey::QueryValue(LPCTSTR name, CByteBuffer &value, UInt32 &dataSize)
+ {
+ g_config->SetPath(_object->path);
+ wxString str;
+ bool ret = g_config->Read(name,&str);
+ if (ret == false) return ERROR_GET_VALUE;
+
+ dataSize = str.Len() / 2;
+ value.SetCapacity(dataSize);
+ return QueryValue(name, (BYTE *)value, dataSize);
+ }
+
+
+LONG CKey::SetValue_Strings(LPCTSTR valueName, const UStringVector &strings)
+{
+ UInt32 numChars = 0;
+ int i;
+ for (i = 0; i < strings.Size(); i++)
+ numChars += strings[i].Length() + 1;
+ CBuffer<wchar_t> buffer;
+ buffer.SetCapacity(numChars);
+ int pos = 0;
+ for (i = 0; i < strings.Size(); i++)
+ {
+ const UString &s = strings[i];
+ MyStringCopy((wchar_t *)buffer + pos, (const wchar_t *)s);
+ pos += s.Length() + 1;
+ }
+ return SetValue(valueName, buffer, numChars * sizeof(wchar_t));
+}
+
+LONG CKey::GetValue_Strings(LPCTSTR valueName, UStringVector &strings)
+{
+ strings.Clear();
+ CByteBuffer buffer;
+ UInt32 dataSize;
+ LONG res = QueryValue(valueName, buffer, dataSize);
+ if (res != ERROR_SUCCESS)
+ return res;
+ if (dataSize % sizeof(wchar_t) != 0)
+ return E_FAIL;
+ const wchar_t *data = (const wchar_t *)(const Byte *)buffer;
+ int numChars = dataSize / sizeof(wchar_t);
+ UString s;
+ for (int i = 0; i < numChars; i++)
+ {
+ wchar_t c = data[i];
+ if (c == 0)
+ {
+ strings.Add(s);
+ s.Empty();
+ }
+ else
+ s += c;
+ }
+ return res;
+}
+
+
+}
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Registry.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,113 @@
+// Windows/Registry.h
+
+#ifndef __WINDOWS_REGISTRY_H
+#define __WINDOWS_REGISTRY_H
+
+#include "Common/Buffer.h"
+#include "Common/MyString.h"
+#include "Common/Types.h"
+
+#ifndef _WIN32
+class HKEY_Impl;
+
+typedef HKEY_Impl * HKEY;
+
+/*
+#define HKEY_CLASSES_ROOT ((HKEY) 0x80000000)
+#define HKEY_LOCAL_MACHINE ((HKEY) 0x80000002)
+#define HKEY_USERS ((HKEY) 0x80000003)
+#define HKEY_PERFORMANCE_DATA ((HKEY) 0x80000004)
+#define HKEY_CURRENT_CONFIG ((HKEY) 0x80000005)
+#define HKEY_DYN_DATA ((HKEY) 0x80000006)
+*/
+#define HKEY_CURRENT_USER ((HKEY) 0x80000001)
+
+
+typedef DWORD REGSAM;
+#define ERROR_SUCCESS (0)
+#define KEY_READ (0x1234) // FIXME
+#define KEY_ALL_ACCESS (~0) // FIXME
+
+/* ------------------------------ end registry ------------------------------ */
+
+#endif
+
+namespace NWindows {
+namespace NRegistry {
+
+const TCHAR kKeyNameDelimiter = TEXT(CHAR_PATH_SEPARATOR);
+
+// LONG SetValue(HKEY parentKey, LPCTSTR keyName, LPCTSTR valueName, LPCTSTR value);
+
+class CKey
+{
+ HKEY _object;
+public:
+ CKey(): _object(NULL) {}
+ ~CKey() { Close(); }
+
+ operator HKEY() const { return _object; }
+
+ #if 0
+ HKEY Detach();
+ void Attach(HKEY key);
+ LONG Create(HKEY parentKey, LPCTSTR keyName,
+ LPTSTR keyClass = REG_NONE, DWORD options = REG_OPTION_NON_VOLATILE,
+ REGSAM accessMask = KEY_ALL_ACCESS,
+ LPSECURITY_ATTRIBUTES securityAttributes = NULL,
+ LPDWORD disposition = NULL);
+ LONG Open(HKEY parentKey, LPCTSTR keyName,
+ REGSAM accessMask = KEY_ALL_ACCESS);
+#endif // #if 0
+ LONG Create(HKEY parentKey, LPCTSTR keyName);
+ LONG Open(HKEY parentKey, LPCTSTR keyName,
+ REGSAM accessMask = KEY_ALL_ACCESS);
+
+ LONG Close();
+
+ LONG DeleteSubKey(LPCTSTR subKeyName);
+ LONG RecurseDeleteKey(LPCTSTR subKeyName);
+
+ LONG DeleteValue(LPCTSTR name);
+ #ifndef _UNICODE
+ LONG DeleteValue(LPCWSTR name);
+ #endif
+
+ LONG SetValue(LPCTSTR valueName, UInt32 value);
+ LONG SetValue(LPCTSTR valueName, bool value);
+ LONG SetValue(LPCTSTR valueName, LPCTSTR value);
+ // LONG SetValue(LPCTSTR valueName, const CSysString &value);
+ #ifndef _UNICODE
+ LONG SetValue(LPCWSTR name, LPCWSTR value);
+ // LONG SetValue(LPCWSTR name, const UString &value);
+ #endif
+
+ LONG SetValue(LPCTSTR name, const void *value, UInt32 size);
+
+ LONG SetValue_Strings(LPCTSTR valueName, const UStringVector &strings);
+ LONG GetValue_Strings(LPCTSTR valueName, UStringVector &strings);
+
+ LONG SetKeyValue(LPCTSTR keyName, LPCTSTR valueName, LPCTSTR value);
+
+ LONG QueryValue(LPCTSTR name, UInt32 &value);
+ LONG QueryValue(LPCTSTR name, bool &value);
+ LONG QueryValue(LPCTSTR name, LPTSTR value, UInt32 &dataSize);
+ LONG QueryValue(LPCTSTR name, CSysString &value);
+
+ LONG GetValue_IfOk(LPCTSTR name, UInt32 &value);
+ LONG GetValue_IfOk(LPCTSTR name, bool &value);
+
+ #ifndef _UNICODE
+ LONG QueryValue(LPCWSTR name, LPWSTR value, UInt32 &dataSize);
+ LONG QueryValue(LPCWSTR name, UString &value);
+ #endif
+
+ LONG QueryValue(LPCTSTR name, void *value, UInt32 &dataSize);
+ LONG QueryValue(LPCTSTR name, CByteBuffer &value, UInt32 &dataSize);
+
+ LONG EnumKeys(CSysStringVector &keyNames);
+};
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/ResourceString.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/ResourceString.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/ResourceString.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/ResourceString.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,22 @@
+// Windows/ResourceString.h
+
+#ifndef __WINDOWS_RESOURCESTRING_H
+#define __WINDOWS_RESOURCESTRING_H
+
+#include "Common/MyString.h"
+
+namespace NWindows {
+
+CSysString MyLoadString(HINSTANCE hInstance, UINT resourceID);
+CSysString MyLoadString(UINT resourceID);
+#ifdef _UNICODE
+inline UString MyLoadStringW(HINSTANCE hInstance, UINT resourceID) { return MyLoadString(hInstance, resourceID); }
+inline UString MyLoadStringW(UINT resourceID) { return MyLoadString(resourceID); }
+#else
+UString MyLoadStringW(HINSTANCE hInstance, UINT resourceID);
+UString MyLoadStringW(UINT resourceID);
+#endif
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Shell.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Shell.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Shell.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Shell.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,21 @@
+// Windows/Shell.h
+
+#ifndef __WINDOWS_SHELL_H
+#define __WINDOWS_SHELL_H
+
+#include <windows.h>
+// #include <shlobj.h>
+
+#include "Common/MyString.h"
+#include "Windows/Defs.h"
+
+
+namespace NWindows{
+namespace NShell{
+
+bool BrowseForFolder(HWND owner, LPCWSTR title, LPCWSTR initialFolder, UString &resultPath);
+
+}}
+
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,157 @@
+// Windows/Synchronization.cpp
+
+#include "StdAfx.h"
+
+#include "Synchronization.h"
+
+// #define TRACEN(u) u;
+#define TRACEN(u) /* */
+
+#define MAGIC 0x1234CAFE
+class CSynchroTest
+{
+ int _magic;
+ public:
+ CSynchroTest() {
+ _magic = MAGIC;
+ }
+ void testConstructor() {
+ if (_magic != MAGIC) {
+ printf("ERROR : no constructors called during loading of plugins (please look at LINK_SHARED in makefile.machine)\n");
+ exit(EXIT_FAILURE);
+ }
+ }
+};
+
+static CSynchroTest gbl_synchroTest;
+
+extern "C" void sync_TestConstructor(void) {
+ gbl_synchroTest.testConstructor();
+}
+
+
+namespace NWindows {
+namespace NSynchronization {
+
+
+#ifndef ENV_BEOS
+#ifdef DEBUG_SYNCHRO
+ void CSynchro::dump_error(int ligne,int ret,const char *text,void *param)
+ {
+ printf("\n##T%d#ERROR2 (l=%d) %s : param=%p ret = %d (%s)##\n",(int)pthread_self(),ligne,text,param,ret,strerror(ret));
+ // abort();
+ }
+ CSynchro::CSynchro() {
+ TRACEN((printf("\nT%d : E1-CSynchro(this=%p,m=%p,cond=%p)\n",(int)pthread_self(),(void *)this,(void *)&_object,(void *)&_cond)))
+ _isValid = false;
+ }
+
+ void CSynchro::Create() {
+ TRACEN((printf("\nT%d : E1-CSynchro::Create(this=%p,m=%p,cond=%p)\n",(int)pthread_self(),(void *)this,(void *)&_object,(void *)&_cond)))
+ pthread_mutexattr_t mutexattr;
+ memset(&mutexattr,0,sizeof(mutexattr));
+ int ret = pthread_mutexattr_init(&mutexattr);
+ if (ret != 0) {
+ dump_error(__LINE__,ret,"pthread_mutexattr_init",&mutexattr);
+ }
+ ret = pthread_mutexattr_settype(&mutexattr,PTHREAD_MUTEX_ERRORCHECK);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_mutexattr_settype",&mutexattr);
+ ret = ::pthread_mutex_init(&_object,&mutexattr);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_mutex_init",&_object);
+ ret = ::pthread_cond_init(&_cond,0);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_cond_init",&_cond);
+ TRACEN((printf("\nT%d : E2-CSynchro::Create(m=%p,cond=%p)\n",(int)pthread_self(),(void *)&_object,(void *)&_cond)))
+ }
+ CSynchro::~CSynchro() {
+ TRACEN((printf("\nT%d : E1-~CSynchro(this=%p,m=%p,cond=%p)\n",(int)pthread_self(),(void *)this,(void *)&_object,(void *)&_cond)))
+ if (_isValid) {
+ int ret = ::pthread_mutex_destroy(&_object);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_mutex_destroy",&_object);
+ ret = ::pthread_cond_destroy(&_cond);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_cond_destroy",&_cond);
+ TRACEN((printf("\nT%d : E2-~CSynchro(m=%p,cond=%p)\n",(int)pthread_self(),(void *)&_object,(void *)&_cond)))
+ }
+ _isValid = false;
+ }
+ void CSynchro::Enter() {
+ TRACEN((printf("\nT%d : E1-CSynchro::Enter(%p)\n",(int)pthread_self(),(void *)&_object)))
+ int ret = ::pthread_mutex_lock(&_object);
+ if (ret != 0) {
+ dump_error(__LINE__,ret,"CSynchro::Enter-pthread_mutex_lock",&_object);
+ }
+ TRACEN((printf("\nT%d : E2-CSynchro::Enter(%p)\n",(int)pthread_self(),(void *)&_object)))
+ }
+ void CSynchro::Leave() {
+ TRACEN((printf("\nT%d : E1-CSynchro::Leave(%p)\n",(int)pthread_self(),(void *)&_object)))
+ int ret = ::pthread_mutex_unlock(&_object);
+ if (ret != 0) dump_error(__LINE__,ret,"Leave::pthread_mutex_unlock",&_object);
+ TRACEN((printf("\nT%d : E2-CSynchro::Leave(%p)\n",(int)pthread_self(),(void *)&_object)))
+ }
+ void CSynchro::WaitCond() {
+ TRACEN((printf("\nT%d : E1-CSynchro::WaitCond(%p,%p)\n",(int)pthread_self(),(void *)&_cond,(void *)&_object)))
+ int ret = ::pthread_cond_wait(&_cond, &_object);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_cond_wait",&_cond);
+ TRACEN((printf("\nT%d : E2-CSynchro::WaitCond(%p,%p)\n",(int)pthread_self(),(void *)&_cond,(void *)&_object)))
+ }
+ void CSynchro::LeaveAndSignal() {
+ TRACEN((printf("\nT%d : E1-CSynchro::LeaveAndSignal(%p)\n",(int)pthread_self(),(void *)&_cond)))
+ int ret = ::pthread_cond_broadcast(&_cond);
+ if (ret != 0) dump_error(__LINE__,ret,"pthread_cond_broadcast",&_cond);
+ TRACEN((printf("\nT%d : E2-CSynchro::LeaveAndSignal(%p)\n",(int)pthread_self(),(void *)&_object)))
+ ret = ::pthread_mutex_unlock(&_object);
+ if (ret != 0) dump_error(__LINE__,ret,"LeaveAndSignal::pthread_mutex_unlock",&_object);
+ TRACEN((printf("\nT%d : E3-CSynchro::LeaveAndSignal(%p)\n",(int)pthread_self(),(void *)&_cond)))
+ }
+#endif
+#endif
+
+}}
+
+DWORD WINAPI WaitForMultipleObjects( DWORD count, const HANDLE *handles, BOOL wait_all, DWORD timeout )
+{
+ TRACEN((printf("\nT%d : E1-WaitForMultipleObjects(%d)\n",(int)pthread_self(),(int)count)))
+ if (wait_all != FALSE) {
+ printf("\n\n INTERNAL ERROR - WaitForMultipleObjects(...) wait_all(%d) != FALSE\n\n",(unsigned)wait_all);
+ abort();
+ }
+
+ if (timeout != INFINITE) {
+ printf("\n\n INTERNAL ERROR - WaitForMultipleObjects(...) timeout(%u) != INFINITE\n\n",(unsigned)timeout);
+ abort();
+ }
+
+ if (count < 1) {
+ printf("\n\n INTERNAL ERROR - WaitForMultipleObjects(...) count(%u) < 1\n\n",(unsigned)count);
+ abort();
+ }
+
+ NWindows::NSynchronization::CSynchro *synchro = handles[0]->_sync;
+
+ TRACEN((printf("\nT%d : E2-WaitForMultipleObjects(%d)\n",(int)pthread_self(),(int)count)))
+ synchro->Enter();
+ TRACEN((printf("\nT%d : E3-WaitForMultipleObjects(%d)\n",(int)pthread_self(),(int)count)))
+
+#ifdef DEBUG_SYNCHRO
+ for(DWORD i=1;i<count;i++) {
+ if (synchro != handles[i]->_sync) {
+ printf("\n\n INTERNAL ERROR - WaitForMultipleObjects(...) synchro(%p) != handles[%d]->_sync(%p)\n\n",
+ synchro,(unsigned)i,handles[i]->_sync);
+ abort();
+ }
+ }
+#endif
+
+ while(1) {
+ for(DWORD i=0;i<count;i++) {
+ if (handles[i]->IsSignaledAndUpdate()) {
+ synchro->Leave();
+ TRACEN((printf("\nT%d : E4-WaitForMultipleObjects(%d)\n",(int)pthread_self(),(int)count)))
+ return WAIT_OBJECT_0+i;
+ }
+ }
+ synchro->WaitCond();
+ }
+ synchro->Leave();
+ return ETIMEDOUT; // WAIT_TIMEOUT;
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,187 @@
+// Windows/Synchronization.h
+
+#ifndef __WINDOWS_SYNCHRONIZATION_H
+#define __WINDOWS_SYNCHRONIZATION_H
+
+#include "Defs.h"
+
+extern "C"
+{
+#include "../../C/Threads.h"
+}
+
+#ifdef _WIN32
+#include "Handle.h"
+#endif
+
+namespace NWindows {
+namespace NSynchronization {
+
+class Uncopyable {
+protected:
+ Uncopyable() {} // allow construction
+ ~Uncopyable() {} // and destruction of derived objects...
+private:
+ Uncopyable(const Uncopyable&); // ...but prevent copying
+ Uncopyable& operator=(const Uncopyable&);
+};
+
+
+class CBaseEvent // FIXME : private Uncopyable
+{
+protected:
+ ::CEvent _object;
+public:
+ bool IsCreated() { return Event_IsCreated(&_object) != 0; }
+#ifdef _WIN32
+ operator HANDLE() { return _object.handle; }
+#endif
+ CBaseEvent() { Event_Construct(&_object); }
+ ~CBaseEvent() { Close(); }
+ WRes Close() { return Event_Close(&_object); }
+ #ifdef _WIN32
+ WRes Create(bool manualReset, bool initiallyOwn, LPCTSTR name = NULL,
+ LPSECURITY_ATTRIBUTES securityAttributes = NULL)
+ {
+ _object.handle = ::CreateEvent(securityAttributes, BoolToBOOL(manualReset),
+ BoolToBOOL(initiallyOwn), name);
+ if (_object.handle != 0)
+ return 0;
+ return ::GetLastError();
+ }
+ WRes Open(DWORD desiredAccess, bool inheritHandle, LPCTSTR name)
+ {
+ _object.handle = ::OpenEvent(desiredAccess, BoolToBOOL(inheritHandle), name);
+ if (_object.handle != 0)
+ return 0;
+ return ::GetLastError();
+ }
+ #endif
+
+ WRes Set() { return Event_Set(&_object); }
+ // bool Pulse() { return BOOLToBool(::PulseEvent(_handle)); }
+ WRes Reset() { return Event_Reset(&_object); }
+ WRes Lock() { return Event_Wait(&_object); }
+};
+
+class CManualResetEvent: public CBaseEvent
+{
+public:
+ WRes Create(bool initiallyOwn = false)
+ {
+ return ManualResetEvent_Create(&_object, initiallyOwn ? 1: 0);
+ }
+ WRes CreateIfNotCreated()
+ {
+ if (IsCreated())
+ return 0;
+ return ManualResetEvent_CreateNotSignaled(&_object);
+ }
+ #ifdef _WIN32
+ WRes CreateWithName(bool initiallyOwn, LPCTSTR name)
+ {
+ return CBaseEvent::Create(true, initiallyOwn, name);
+ }
+ #endif
+};
+
+class CAutoResetEvent: public CBaseEvent
+{
+public:
+ WRes Create()
+ {
+ return AutoResetEvent_CreateNotSignaled(&_object);
+ }
+ WRes CreateIfNotCreated()
+ {
+ if (IsCreated())
+ return 0;
+ return AutoResetEvent_CreateNotSignaled(&_object);
+ }
+};
+
+#ifdef _WIN32
+class CObject: public CHandle
+{
+public:
+ WRes Lock(DWORD timeoutInterval = INFINITE)
+ { return (::WaitForSingleObject(_handle, timeoutInterval) == WAIT_OBJECT_0 ? 0 : ::GetLastError()); }
+};
+class CMutex: public CObject
+{
+public:
+ WRes Create(bool initiallyOwn, LPCTSTR name = NULL,
+ LPSECURITY_ATTRIBUTES securityAttributes = NULL)
+ {
+ _handle = ::CreateMutex(securityAttributes, BoolToBOOL(initiallyOwn), name);
+ if (_handle != 0)
+ return 0;
+ return ::GetLastError();
+ }
+ WRes Open(DWORD desiredAccess, bool inheritHandle, LPCTSTR name)
+ {
+ _handle = ::OpenMutex(desiredAccess, BoolToBOOL(inheritHandle), name);
+ if (_handle != 0)
+ return 0;
+ return ::GetLastError();
+ }
+ WRes Release()
+ {
+ return ::ReleaseMutex(_handle) ? 0 : ::GetLastError();
+ }
+};
+class CMutexLock
+{
+ CMutex *_object;
+public:
+ CMutexLock(CMutex &object): _object(&object) { _object->Lock(); }
+ ~CMutexLock() { _object->Release(); }
+};
+#endif
+
+class CSemaphore : private Uncopyable
+{
+ ::CSemaphore _object;
+public:
+ CSemaphore() { Semaphore_Construct(&_object); }
+ ~CSemaphore() { Close(); }
+ WRes Close() { return Semaphore_Close(&_object); }
+#ifdef _WIN32
+ operator HANDLE() { return _object.handle; }
+#endif
+ WRes Create(UInt32 initiallyCount, UInt32 maxCount)
+ {
+ return Semaphore_Create(&_object, initiallyCount, maxCount);
+ }
+ WRes Release() { return Semaphore_Release1(&_object); }
+ WRes Release(UInt32 releaseCount) { return Semaphore_ReleaseN(&_object, releaseCount); }
+ WRes Lock() { return Semaphore_Wait(&_object); }
+};
+
+class CCriticalSection : private Uncopyable
+{
+ ::CCriticalSection _object;
+public:
+ CCriticalSection() { CriticalSection_Init(&_object); }
+ ~CCriticalSection() { CriticalSection_Delete(&_object); }
+ void Enter() { CriticalSection_Enter(&_object); }
+ void Leave() { CriticalSection_Leave(&_object); }
+};
+
+class CCriticalSectionLock : private Uncopyable
+{
+ CCriticalSection *_object;
+ void Unlock() { _object->Leave(); }
+public:
+ CCriticalSectionLock(CCriticalSection &object): _object(&object) {_object->Enter(); }
+ ~CCriticalSectionLock() { Unlock(); }
+};
+
+}}
+
+#ifndef _WIN32
+#include "Synchronization2.h"
+#endif
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization2.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization2.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization2.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Synchronization2.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,218 @@
+// Windows/Synchronization.h
+
+#ifdef ENV_BEOS
+#include <Locker.h>
+#include <kernel/OS.h>
+#include <list>
+#endif
+
+/* Remark : WFMO = WaitForMultipleObjects */
+
+namespace NWindows { namespace NSynchronization { struct CBaseHandleWFMO; } }
+
+typedef NWindows::NSynchronization::CBaseHandleWFMO *HANDLE;
+
+DWORD WINAPI WaitForMultipleObjects( DWORD count, const HANDLE *handles, BOOL wait_all, DWORD timeout );
+
+namespace NWindows {
+namespace NSynchronization {
+
+#ifdef ENV_BEOS
+class CSynchro : BLocker, private Uncopyable
+{
+#define MAX_THREAD 256
+ thread_id _waiting[MAX_THREAD]; // std::list<thread_id> _waiting;
+ int index_waiting;
+public:
+ CSynchro() { index_waiting = 0; }
+ void Create() { index_waiting = 0; }
+ ~CSynchro() {}
+ void Enter() { Lock(); }
+ void Leave() { Unlock(); }
+ void WaitCond() {
+ _waiting[index_waiting++] = find_thread(NULL); // _waiting.push_back(find_thread(NULL));
+ thread_id sender;
+ Unlock();
+ int msg = receive_data(&sender, NULL, 0);
+ Lock();
+ }
+ void LeaveAndSignal() {
+ // Unlock();
+ // Lock();
+ // for (std::list<thread_id>::iterator index = _waiting.begin(); index != _waiting.end(); index++)
+ for(int index = 0 ; index < index_waiting ; index++)
+ {
+ send_data(_waiting[index], '7zCN', NULL, 0);
+ }
+ index_waiting = 0; // _waiting.clear();
+ Unlock();
+ }
+};
+#else // #ifdef ENV_BEOS
+#ifdef DEBUG_SYNCHRO
+class CSynchro: private Uncopyable
+{
+ pthread_mutex_t _object;
+ pthread_cond_t _cond;
+ bool _isValid;
+ void dump_error(int ligne,int ret,const char *text,void *param);
+public:
+ CSynchro();
+ ~CSynchro();
+ void Create();
+ void Enter();
+ void Leave();
+ void WaitCond();
+ void LeaveAndSignal();
+};
+#else // #ifdef DEBUG_SYNCHRO
+class CSynchro : private Uncopyable
+{
+ pthread_mutex_t _object;
+ pthread_cond_t _cond;
+ bool _isValid;
+public:
+ CSynchro() { _isValid = false; }
+ ~CSynchro() {
+ if (_isValid) {
+ ::pthread_mutex_destroy(&_object);
+ ::pthread_cond_destroy(&_cond);
+ }
+ _isValid = false;
+ }
+ void Create() {
+ ::pthread_mutex_init(&_object,0);
+ ::pthread_cond_init(&_cond,0);
+ }
+ void Enter() {
+ ::pthread_mutex_lock(&_object);
+ }
+ void Leave() {
+ ::pthread_mutex_unlock(&_object);
+ }
+ void WaitCond() {
+ ::pthread_cond_wait(&_cond, &_object);
+ }
+ void LeaveAndSignal() {
+ ::pthread_cond_broadcast(&_cond);
+ ::pthread_mutex_unlock(&_object);
+ }
+};
+#endif // #ifdef DEBUG_SYNCHRO
+#endif // #ifdef ENV_BEOS
+
+struct CBaseHandleWFMO // FIXME : private Uncopyable
+{
+ CSynchro *_sync;
+
+ CBaseHandleWFMO() { }
+
+ operator HANDLE() { return this; }
+ virtual bool IsSignaledAndUpdate() = 0;
+};
+
+class CBaseEventWFMO : public CBaseHandleWFMO
+{
+ bool _manual_reset;
+ bool _state;
+
+public:
+
+ bool IsCreated() { return (this->_sync != 0); }
+ CBaseEventWFMO() { this->_sync = 0; }
+ ~CBaseEventWFMO() { Close(); }
+
+ WRes Close() { this->_sync = 0; return S_OK; }
+
+ WRes Create(CSynchro *sync,bool manualReset, bool initiallyOwn)
+ {
+ this->_sync = sync;
+ this->_manual_reset = manualReset;
+ this->_state = initiallyOwn;
+ return S_OK;
+ }
+
+ WRes Set() {
+ this->_sync->Enter();
+ this->_state = true;
+ this->_sync->LeaveAndSignal();
+ return S_OK;
+ }
+
+ WRes Reset() {
+ this->_sync->Enter();
+ this->_state = false;
+ this->_sync->Leave();
+ return S_OK;
+ }
+ virtual bool IsSignaledAndUpdate() {
+ if (this->_state == true) {
+ if (this->_manual_reset == false) this->_state = false;
+ return true;
+ }
+ return false;
+ }
+};
+
+class CManualResetEventWFMO: public CBaseEventWFMO
+{
+public:
+ WRes Create(CSynchro *sync,bool initiallyOwn = false) { return CBaseEventWFMO::Create(sync,true, initiallyOwn); }
+};
+
+class CAutoResetEventWFMO: public CBaseEventWFMO
+{
+public:
+ WRes Create(CSynchro *sync) { return CBaseEventWFMO::Create(sync,false, false); }
+ WRes CreateIfNotCreated(CSynchro *sync)
+ {
+ if (IsCreated())
+ return 0;
+ return CBaseEventWFMO::Create(sync,false, false);
+ }
+};
+
+class CSemaphoreWFMO : public CBaseHandleWFMO
+{
+ LONG _count;
+ LONG _maxCount;
+
+public:
+ CSemaphoreWFMO() : _count(0), _maxCount(0) { this->_sync=0;}
+ WRes Create(CSynchro *sync,LONG initiallyCount, LONG maxCount)
+ {
+ if ((initiallyCount < 0) || (initiallyCount > maxCount) || (maxCount < 1)) return S_FALSE;
+ this->_sync = sync;
+ this->_count = initiallyCount;
+ this->_maxCount = maxCount;
+ return S_OK;
+ }
+ WRes Release(LONG releaseCount = 1) {
+ if (releaseCount < 1) return S_FALSE;
+
+ this->_sync->Enter();
+ LONG newCount = this->_count + releaseCount;
+ if (newCount > this->_maxCount)
+ {
+ this->_sync->Leave();
+ return S_FALSE;
+ }
+ this->_count = newCount;
+
+ this->_sync->LeaveAndSignal();
+
+ return S_OK;
+ }
+ WRes Close() { this->_sync=0; return S_OK; }
+
+ virtual bool IsSignaledAndUpdate() {
+ if (this->_count > 0) {
+ this->_count--;
+ return true;
+ }
+ return false;
+ }
+};
+
+}}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,172 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#if defined (__NetBSD__) || defined(__OpenBSD__) || defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#elif defined(__linux__) || defined(__CYGWIN__) || defined(sun) || defined(__NETWARE__)
+#include <unistd.h>
+#elif defined(hpux) || defined(__hpux)
+#include <sys/param.h>
+#include <sys/pstat.h>
+#endif
+
+#if defined(__NETWARE__)
+#include <sys/sysinfo.h>
+#endif
+
+#if defined(ENV_BEOS)
+#include <be/kernel/OS.h>
+#endif
+
+
+#include "Common/Types.h"
+
+namespace NWindows
+{
+ namespace NSystem
+ {
+ /************************ GetNumberOfProcessors ************************/
+
+#if 1
+ UInt32 GetNumberOfProcessors() { return 1; }
+#else
+ #if defined (__NetBSD__) || defined(__OpenBSD__)
+ UInt32 GetNumberOfProcessors() {
+ int mib[2], value;
+ int nbcpu = 1;
+
+ mib[0] = CTL_HW;
+ mib[1] = HW_NCPU;
+ size_t len = sizeof(size_t);
+ if (sysctl(mib, 2, &value, &len, NULL, 0) >= 0)
+ if (value > nbcpu)
+ nbcpu = value;
+ return nbcpu;
+ }
+ #elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
+ UInt32 GetNumberOfProcessors() {
+ int nbcpu = 1;
+ size_t value;
+ size_t len = sizeof(value);
+ if (sysctlbyname("hw.ncpu", &value, &len, NULL, 0) == 0)
+ nbcpu = value;
+ return nbcpu;
+ }
+ #elif defined (__APPLE__)
+ UInt32 GetNumberOfProcessors() {
+ int nbcpu = 1,value;
+ size_t valSize = sizeof(value);
+ if (sysctlbyname ("hw.ncpu", &value, &valSize, NULL, 0) == 0)
+ nbcpu = value;
+ return nbcpu;
+ }
+
+ #elif defined(__linux__) || defined(__CYGWIN__) || defined(sun)
+ UInt32 GetNumberOfProcessors() {
+ int nbcpu = sysconf (_SC_NPROCESSORS_CONF);
+ if (nbcpu < 1) nbcpu = 1;
+ return nbcpu;
+ }
+ #elif defined(hpux) || defined(__hpux)
+ UInt32 GetNumberOfProcessors() {
+ struct pst_dynamic psd;
+ if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) != -1)
+ return (UInt32)psd.psd_proc_cnt;
+ return 1;
+ }
+ #elif defined(__NETWARE__)
+ UInt32 GetNumberOfProcessors() {
+ // int nbcpu = get_nprocs_conf();
+ int nbcpu = get_nprocs();
+ if (nbcpu < 1) nbcpu = 1;
+ return nbcpu;
+ }
+ #elif defined(ENV_BEOS)
+ UInt32 GetNumberOfProcessors() {
+ system_info info;
+ get_system_info(&info);
+ int nbcpu = info.cpu_count;
+ if (nbcpu < 1) nbcpu = 1;
+ return nbcpu;
+ }
+ #else
+ #warning Generic GetNumberOfProcessors
+ UInt32 GetNumberOfProcessors() {
+ return 1;
+ }
+ #endif
+#endif
+
+ /************************ GetRamSize ************************/
+ UInt64 GetRamSize() {
+ UInt64 ullTotalPhys = 128 * 1024 * 1024; // default : 128MB
+
+#if 0
+#ifdef linux
+ FILE * f = fopen( "/proc/meminfo", "r" );
+ if (f)
+ {
+ char buffer[256];
+ unsigned long total;
+
+ ullTotalPhys = 0;
+
+ while (fgets( buffer, sizeof(buffer), f ))
+ {
+ /* old style /proc/meminfo ... */
+ if (sscanf( buffer, "Mem: %lu", &total))
+ {
+ ullTotalPhys += total;
+ }
+
+ /* new style /proc/meminfo ... */
+ if (sscanf(buffer, "MemTotal: %lu", &total))
+ ullTotalPhys = ((UInt64)total)*1024;
+ }
+ fclose( f );
+ }
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__APPLE__)
+#ifdef HW_MEMSIZE
+ uint64_t val = 0; // support 2Gb+ RAM
+ int mib[2] = { CTL_HW, HW_MEMSIZE };
+#else // HW_MEMSIZE
+ unsigned int val = 0; // For old system
+ int mib[2] = { CTL_HW, HW_PHYSMEM };
+#endif // HW_MEMSIZE
+ size_t size_sys = sizeof(val);
+
+ sysctl(mib, 2, &val, &size_sys, NULL, 0);
+ if (val) ullTotalPhys = val;
+#elif defined(__CYGWIN__)
+ unsigned long pagesize=4096; // FIXME - sysconf(_SC_PAGESIZE) returns 65536 !?
+ // see http://readlist.com/lists/cygwin.com/cygwin/0/3313.html
+ unsigned long maxpages=sysconf(_SC_PHYS_PAGES);
+ ullTotalPhys = ((UInt64)pagesize)*maxpages;
+#elif defined ( sun ) || defined(__NETWARE__)
+ unsigned long pagesize=sysconf(_SC_PAGESIZE);
+ unsigned long maxpages=sysconf(_SC_PHYS_PAGES);
+ ullTotalPhys = ((UInt64)pagesize)*maxpages;
+#elif defined(hpux) || defined(__hpux)
+ struct pst_static pst;
+ union pstun pu;
+
+ pu.pst_static = &pst;
+ if ( pstat( PSTAT_STATIC, pu, (size_t)sizeof(pst), (size_t)0, 0 ) != -1 ) {
+ ullTotalPhys = ((UInt64)pst.physical_memory)*pst.page_size;
+ }
+#elif defined(ENV_BEOS)
+ system_info info;
+ get_system_info(&info);
+ ullTotalPhys = info.max_pages;
+ ullTotalPhys *= 4096;
+#else
+#warning Generic GetRamSize
+#endif
+#endif
+ return ullTotalPhys;
+ }
+
+ }
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/System.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,16 @@
+// Windows/System.h
+
+#ifndef __WINDOWS_SYSTEM_H
+#define __WINDOWS_SYSTEM_H
+
+#include "../Common/Types.h"
+
+namespace NWindows {
+namespace NSystem {
+
+UInt32 GetNumberOfProcessors();
+UInt64 GetRamSize();
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Thread.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Thread.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Thread.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Thread.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,41 @@
+// Windows/Thread.h
+
+#ifndef __WINDOWS_THREAD_H
+#define __WINDOWS_THREAD_H
+
+#include "Defs.h"
+
+extern "C"
+{
+#include "../../C/Threads.h"
+}
+
+namespace NWindows {
+
+class CThread
+{
+ ::CThread thread;
+public:
+ CThread() { Thread_Construct(&thread); }
+ ~CThread() { Close(); }
+ bool IsCreated() { return Thread_WasCreated(&thread) != 0; }
+ WRes Close() { return Thread_Close(&thread); }
+ WRes Create(THREAD_FUNC_RET_TYPE (THREAD_FUNC_CALL_TYPE *startAddress)(void *), LPVOID parameter)
+ { return Thread_Create(&thread, startAddress, parameter); }
+ WRes Wait() { return Thread_Wait(&thread); }
+
+ #ifdef _WIN32
+ operator HANDLE() { return thread; }
+ void Attach(HANDLE handle) { thread = handle; }
+ HANDLE Detach() { HANDLE h = thread; thread = NULL; return h; }
+ DWORD Resume() { return ::ResumeThread(thread); }
+ DWORD Suspend() { return ::SuspendThread(thread); }
+ bool Terminate(DWORD exitCode) { return BOOLToBool(::TerminateThread(thread, exitCode)); }
+ int GetPriority() { return ::GetThreadPriority(thread); }
+ bool SetPriority(int priority) { return BOOLToBool(::SetThreadPriority(thread, priority)); }
+ #endif
+};
+
+}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,88 @@
+// Windows/Time.cpp
+
+#include "StdAfx.h"
+
+#include "Time.h"
+#include "Windows/Defs.h"
+
+namespace NWindows {
+namespace NTime {
+
+static const UInt32 kFileTimeStartYear = 1601;
+
+bool DosTimeToFileTime(UInt32 dosTime, FILETIME &fileTime)
+{
+ return BOOLToBool(::DosDateTimeToFileTime((UInt16)(dosTime >> 16), (UInt16)(dosTime & 0xFFFF), &fileTime));
+}
+
+static const UInt32 kHighDosTime = 0xFF9FBF7D;
+static const UInt32 kLowDosTime = 0x210000;
+
+bool FileTimeToDosTime(const FILETIME &fileTime, UInt32 &dosTime)
+{
+ WORD datePart, timePart;
+ if (!::FileTimeToDosDateTime(&fileTime, &datePart, &timePart))
+ {
+ dosTime = (fileTime.dwHighDateTime >= 0x01C00000) ? kHighDosTime : kLowDosTime;
+ return false;
+ }
+ dosTime = (((UInt32)datePart) << 16) + timePart;
+ return true;
+}
+
+static const UInt32 kNumTimeQuantumsInSecond = 10000000;
+static const UInt64 kUnixTimeStartValue = ((UInt64)kNumTimeQuantumsInSecond) * 60 * 60 * 24 * 134774;
+
+void UnixTimeToFileTime(UInt32 unixTime, FILETIME &fileTime)
+{
+ UInt64 v = kUnixTimeStartValue + ((UInt64)unixTime) * kNumTimeQuantumsInSecond;
+ fileTime.dwLowDateTime = (DWORD)v;
+ fileTime.dwHighDateTime = (DWORD)(v >> 32);
+}
+
+bool FileTimeToUnixTime(const FILETIME &fileTime, UInt32 &unixTime)
+{
+ UInt64 winTime = (((UInt64)fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
+ if (winTime < kUnixTimeStartValue)
+ {
+ unixTime = 0;
+ return false;
+ }
+ winTime = (winTime - kUnixTimeStartValue) / kNumTimeQuantumsInSecond;
+ if (winTime > 0xFFFFFFFF)
+ {
+ unixTime = 0xFFFFFFFF;
+ return false;
+ }
+ unixTime = (UInt32)winTime;
+ return true;
+}
+
+bool GetSecondsSince1601(unsigned year, unsigned month, unsigned day,
+ unsigned hour, unsigned min, unsigned sec, UInt64 &resSeconds)
+{
+ resSeconds = 0;
+ if (year < kFileTimeStartYear || year >= 10000 || month < 1 || month > 12 ||
+ day < 1 || day > 31 || hour > 23 || min > 59 || sec > 59)
+ return false;
+ UInt32 numYears = year - kFileTimeStartYear;
+ UInt32 numDays = numYears * 365 + numYears / 4 - numYears / 100 + numYears / 400;
+ Byte ms[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+ if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
+ ms[1] = 29;
+ month--;
+ for (unsigned i = 0; i < month; i++)
+ numDays += ms[i];
+ numDays += day - 1;
+ resSeconds = ((UInt64)(numDays * 24 + hour) * 60 + min) * 60 + sec;
+ return true;
+}
+
+void GetCurUtcFileTime(FILETIME &ft)
+{
+ SYSTEMTIME st;
+ GetSystemTime(&st);
+ SystemTimeToFileTime(&st, &ft);
+}
+
+}}
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Time.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,21 @@
+// Windows/Time.h
+
+#ifndef __WINDOWS_TIME_H
+#define __WINDOWS_TIME_H
+
+#include "Common/Types.h"
+
+namespace NWindows {
+namespace NTime {
+
+bool DosTimeToFileTime(UInt32 dosTime, FILETIME &fileTime);
+bool FileTimeToDosTime(const FILETIME &fileTime, UInt32 &dosTime);
+void UnixTimeToFileTime(UInt32 unixTime, FILETIME &fileTime);
+bool FileTimeToUnixTime(const FILETIME &fileTime, UInt32 &unixTime);
+bool GetSecondsSince1601(unsigned year, unsigned month, unsigned day,
+ unsigned hour, unsigned min, unsigned sec, UInt64 &resSeconds);
+void GetCurUtcFileTime(FILETIME &ft);
+
+}}
+
+#endif
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,101 @@
+// Windows/Window.cpp
+
+#include "StdAfx.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWidgets headers)
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#undef _WIN32
+
+#ifndef _UNICODE
+#include "Common/StringConvert.h"
+#endif
+#include "Windows/Window.h"
+
+void verify_main_thread(void);
+
+class LockGUI
+{
+ bool _IsMain;
+ public:
+ LockGUI() {
+ verify_main_thread();
+
+ _IsMain = wxThread::IsMain();
+ if (!_IsMain) {
+ printf("LockGUI-Windows\n");
+ abort(); // FIXME wxMutexGuiEnter();
+ }
+ }
+ ~LockGUI() { if (!_IsMain) wxMutexGuiLeave(); }
+};
+
+namespace NWindows {
+
+HWND GetDlgItem(HWND dialogWindow, int ControlID)
+{
+ LockGUI lock;
+ if (dialogWindow) return dialogWindow->FindWindow(ControlID);
+ return 0;
+}
+
+void MySetWindowText(HWND wnd, LPCWSTR s)
+{
+ if (wnd == 0) return;
+
+ LockGUI lock;
+
+ wxString str = s;
+ /*
+ int id = wnd->GetId();
+ if ( (id != wxID_OK) && (id != wxID_CANCEL) && (id != wxID_HELP) && (id != wxID_YES) && (id != wxID_NO))
+ */
+ {
+ wnd->SetLabel(str);
+ }
+}
+
+ bool CWindow::GetText(CSysString &s)
+ {
+ wxString str;
+ {
+ LockGUI lock;
+ str = _window->GetLabel();
+ }
+ s = str;
+ return true;
+ }
+
+ bool CWindow::IsEnabled()
+ {
+ LockGUI lock;
+ return _window->IsEnabled();
+ }
+}
+
+////////////////////////////////// Windows Compatibility
+#include <sys/resource.h>
+
+void Sleep(unsigned millisec)
+{
+ wxMilliSleep(millisec);
+}
+
+t_processID GetCurrentProcess(void) {
+ return getpid();
+}
+
+void SetPriorityClass(t_processID pid , int priority) {
+ setpriority(PRIO_PROCESS,pid,priority);
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/Windows/Window.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,43 @@
+// Windows/Window.h
+
+#ifndef __WINDOWS_WINDOW_H
+#define __WINDOWS_WINDOW_H
+
+#include "Windows/Defs.h"
+#include "Common/MyString.h"
+
+namespace NWindows {
+
+HWND GetDlgItem(HWND dialogWindow, int ControlID);
+void MySetWindowText(HWND wnd, LPCWSTR s);
+
+class CWindow
+{
+private:
+ // bool ModifyStyleBase(int styleOffset, DWORD remove, DWORD add, UINT flags);
+protected:
+ HWND _window;
+public:
+ CWindow(HWND newWindow = NULL): _window(newWindow){};
+ CWindow& operator=(HWND newWindow)
+ {
+ _window = newWindow;
+ return *this;
+ }
+ operator HWND() const { return _window; }
+ void Attach(HWND newWindow) { _window = newWindow; }
+ HWND Detach()
+ {
+ HWND window = _window;
+ _window = NULL;
+ return window;
+ }
+ virtual void SetText(LPCWSTR s) { MySetWindowText(_window, s); }
+ virtual bool GetText(CSysString &s);
+ bool IsEnabled();
+};
+
+}
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/basetyps.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/basetyps.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/basetyps.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/basetyps.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,19 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+
+#ifdef ENV_HAVE_GCCVISIBILITYPATCH
+ #define DLLEXPORT __attribute__ ((visibility("default")))
+ #else
+ #define DLLEXPORT
+ #endif
+
+#ifdef __cplusplus
+#define STDAPI extern "C" DLLEXPORT HRESULT
+#else
+#define STDAPI extern DLLEXPORT HRESULT
+#endif /* __cplusplus */
+
+typedef GUID IID;
+typedef GUID CLSID;
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/tchar.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/tchar.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/tchar.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/tchar.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,89 @@
+/*
+ * tchar.h
+ *
+ * Unicode mapping layer for the standard C library. By including this
+ * file and using the 't' names for string functions
+ * (eg. _tprintf) you can make code which can be easily adapted to both
+ * Unicode and non-unicode environments. In a unicode enabled compile define
+ * _UNICODE before including tchar.h, otherwise the standard non-unicode
+ * library functions will be used.
+ *
+ * Note that you still need to include string.h or stdlib.h etc. to define
+ * the appropriate functions. Also note that there are several defines
+ * included for non-ANSI functions which are commonly available (but using
+ * the convention of prepending an underscore to non-ANSI library function
+ * names).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ * Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.11 $
+ * $Author: earnie $
+ * $Date: 2003/05/03 13:48:46 $
+ *
+ */
+
+#ifndef _TCHAR_H_
+#define _TCHAR_H_
+
+/* All the headers include this file. */
+#ifndef __int64
+#define __int64 long long
+#endif
+
+#ifndef __cdecl
+#define __cdecl /* */
+#endif
+
+/*
+ * NOTE: This tests _UNICODE, which is different from the UNICODE define
+ * used to differentiate Win32 API calls.
+ */
+#ifdef _UNICODE
+
+
+/*
+ * Use TCHAR instead of char or wchar_t. It will be appropriately translated
+ * if _UNICODE is correctly defined (or not).
+ */
+#ifndef _TCHAR_DEFINED
+typedef wchar_t TCHAR;
+#define _TCHAR_DEFINED
+#endif
+
+/*
+ * Unicode functions
+ */
+/*
+#define _tfopen _wfopen
+FILE *_wfopen( const wchar_t *filename, const wchar_t *mode );
+*/
+
+#else /* Not _UNICODE */
+
+#define _tfopen fopen
+
+/*
+ * TCHAR, the type you should use instead of char.
+ */
+#ifndef _TCHAR_DEFINED
+typedef char TCHAR;
+#define _TCHAR_DEFINED
+#endif
+
+#endif /* Not _UNICODE */
+
+#endif /* Not _TCHAR_H_ */
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/windows.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/windows.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/windows.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/include_windows/windows.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,194 @@
+/*
+ windows.h - main header file for the Win32 API
+
+ Written by Anders Norlander <anorland at hem2.passagen.se>
+
+ This file is part of a free library for the Win32 API.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+#ifndef _WINDOWS_H
+#define _WINDOWS_H
+
+#include <stdarg.h>
+
+/* BEGIN #include <windef.h> */
+
+#include "Common/MyWindows.h" // FIXED
+
+#ifndef CONST
+#define CONST const
+#endif
+
+#undef MAX_PATH
+#define MAX_PATH 4096 /* Linux : 4096 - Windows : 260 */
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#define WINAPI
+
+#undef BOOL
+typedef int BOOL;
+
+/* BEGIN #include <winnt.h> */
+/* BEGIN <winerror.h> */
+#define NO_ERROR 0L
+#define ERROR_ALREADY_EXISTS EEXIST
+#define ERROR_FILE_EXISTS EEXIST
+#define ERROR_INVALID_HANDLE EBADF
+#define ERROR_PATH_NOT_FOUND ENOENT
+#define ERROR_DISK_FULL ENOSPC
+#define ERROR_NO_MORE_FILES 0x100123 // FIXME
+
+/* see Common/WyWindows.h
+#define S_OK ((HRESULT)0x00000000L)
+#define S_FALSE ((HRESULT)0x00000001L)
+#define E_INVALIDARG ((HRESULT)0x80070057L)
+#define E_NOTIMPL ((HRESULT)0x80004001L)
+#define E_NOINTERFACE ((HRESULT)0x80004002L)
+#define E_ABORT ((HRESULT)0x80004004L)
+#define E_FAIL ((HRESULT)0x80004005L)
+#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
+#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
+#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
+#define FAILED(Status) ((HRESULT)(Status)<0)
+*/
+#ifndef VOID
+#define VOID void
+#endif
+typedef void *PVOID,*LPVOID;
+typedef WCHAR *LPWSTR;
+typedef CHAR *LPSTR;
+typedef TCHAR *LPTSTR;
+
+#ifdef UNICODE
+/*
+ * P7ZIP_TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macro TEXT. DO NOT use this
+ * macro within your programs. It's name and function could change without
+ * notice.
+ */
+#define P7ZIP_TEXT(q) L##q
+#else
+#define P7ZIP_TEXT(q) q
+#endif
+/*
+ * UNICODE a constant string when UNICODE is defined, else returns the string
+ * unmodified.
+ * The corresponding macros _TEXT() and _T() for mapping _UNICODE strings
+ * passed to C runtime functions are defined in mingw/tchar.h
+ */
+#define TEXT(q) P7ZIP_TEXT(q)
+
+typedef BYTE BOOLEAN;
+
+/* BEGIN #include <basetsd.h> */
+#ifndef __int64
+#define __int64 long long
+#endif
+typedef unsigned __int64 UINT64;
+typedef __int64 INT64;
+/* END #include <basetsd.h> */
+
+#define FILE_ATTRIBUTE_READONLY 1
+#define FILE_ATTRIBUTE_HIDDEN 2
+#define FILE_ATTRIBUTE_SYSTEM 4
+#define FILE_ATTRIBUTE_DIRECTORY 16
+#define FILE_ATTRIBUTE_ARCHIVE 32
+#define FILE_ATTRIBUTE_DEVICE 64
+#define FILE_ATTRIBUTE_NORMAL 128
+#define FILE_ATTRIBUTE_TEMPORARY 256
+#define FILE_ATTRIBUTE_SPARSE_FILE 512
+#define FILE_ATTRIBUTE_REPARSE_POINT 1024
+#define FILE_ATTRIBUTE_COMPRESSED 2048
+#define FILE_ATTRIBUTE_OFFLINE 0x1000
+#define FILE_ATTRIBUTE_ENCRYPTED 0x4000
+#define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000 /* trick for Unix */
+
+/* END <winerror.h> */
+
+#include <string.h>
+#include <stddef.h>
+
+/* END #include <winnt.h> */
+
+/* END #include <windef.h> */
+
+/* BEGIN #include <winbase.h> */
+
+#define WAIT_OBJECT_0 0
+#define INFINITE 0xFFFFFFFF
+
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,FILETIME *);
+BOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *,WORD *, WORD *);
+BOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *,FILETIME *);
+BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *,SYSTEMTIME *);
+BOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *,FILETIME *);
+VOID WINAPI GetSystemTime(SYSTEMTIME *);
+BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME*,FILETIME *);
+
+DWORD WINAPI GetTickCount(VOID);
+
+#ifdef __cplusplus
+}
+#endif
+/* END #include <winbase.h> */
+
+/* BEGIN #include <winnls.h> */
+
+#define CP_ACP 0
+#define CP_OEMCP 1
+#define CP_UTF8 65001
+
+/* #include <unknwn.h> */
+#include <basetyps.h>
+struct IEnumSTATPROPSTG;
+
+typedef struct tagSTATPROPSTG {
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+} STATPROPSTG;
+
+#ifdef __cplusplus
+extern "C" const IID IID_ISequentialStream;
+struct ISequentialStream : public IUnknown
+{
+ STDMETHOD(QueryInterface)(REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(void) PURE;
+ STDMETHOD_(ULONG,Release)(void) PURE;
+ STDMETHOD(Read)(void*,ULONG,ULONG*) PURE;
+ STDMETHOD(Write)(void const*,ULONG,ULONG*) PURE;
+};
+#else
+extern const IID IID_ISequentialStream;
+#endif /* __cplusplus */
+
+
+/* END #include <ole2.h> */
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/StdAfx.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/StdAfx.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/StdAfx.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/StdAfx.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,124 @@
+// stdafx.h
+
+#ifndef __STDAFX_H
+#define __STDAFX_H
+
+
+#include "config.h"
+
+
+#define NO_INLINE /* FIXME */
+
+#ifdef ENV_HAVE_PTHREAD
+#include <pthread.h>
+#endif
+
+#include "Common/MyWindows.h"
+#include "Common/Types.h"
+
+#include <windows.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <tchar.h>
+#include <wchar.h>
+#include <stddef.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <errno.h>
+#include <math.h>
+
+#ifdef __NETWARE__
+#include <sys/types.h>
+#endif
+
+#undef CS /* fix for Solaris 10 x86 */
+
+
+/***************************/
+
+#ifndef ENV_HAVE_WCHAR__H
+
+EXTERN_C_BEGIN
+
+size_t wcslen(const wchar_t *);
+wchar_t *wcscpy(wchar_t * , const wchar_t * );
+wchar_t *wcscat(wchar_t * , const wchar_t * );
+
+EXTERN_C_END
+
+#endif
+
+/***************************/
+
+#define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L)
+
+/************************* LastError *************************/
+inline DWORD WINAPI GetLastError(void) { return errno; }
+inline void WINAPI SetLastError( DWORD err ) { errno = err; }
+
+#define AreFileApisANSI() (1)
+
+void Sleep(unsigned millisleep);
+
+typedef pid_t t_processID;
+
+t_processID GetCurrentProcess(void);
+
+#define NORMAL_PRIORITY_CLASS (0)
+#define IDLE_PRIORITY_CLASS (10)
+void SetPriorityClass(t_processID , int priority);
+
+#ifdef __cplusplus
+class wxWindow;
+typedef wxWindow *HWND;
+
+#define MB_ICONERROR (0x00000200) // wxICON_ERROR
+#define MB_YESNOCANCEL (0x00000002 | 0x00000008 | 0x00000010) // wxYES | wxNO | wxCANCEL
+#define MB_ICONQUESTION (0x00000400) // wxICON_QUESTION
+#define MB_TASKMODAL (0) // FIXME
+#define MB_SYSTEMMODAL (0) // FIXME
+
+#define MB_OK (0x00000004) // wxOK
+#define MB_ICONSTOP (0x00000200) // wxICON_STOP
+#define MB_OKCANCEL (0x00000004 | 0x00000010) // wxOK | wxCANCEL
+
+#define MessageBox MessageBoxW
+int MessageBoxW(wxWindow * parent, const TCHAR * mes, const TCHAR * title,int flag);
+
+typedef void *HINSTANCE;
+
+typedef int INT_PTR; // FIXME 64 bits ?
+typedef unsigned int UINT_PTR; // FIXME 64 bits ?
+typedef long LONG_PTR; // FIXME 64 bits ?
+typedef long DWORD_PTR; // FIXME 64 bits ?
+typedef UINT_PTR WPARAM;
+
+/* WARNING
+ LPARAM shall be 'long' because of CListView::SortItems and wxListCtrl::SortItems :
+*/
+typedef LONG_PTR LPARAM;
+typedef LONG_PTR LRESULT;
+
+#define CALLBACK /* */
+
+/************ LANG ***********/
+typedef WORD LANGID;
+
+LANGID GetUserDefaultLangID(void);
+LANGID GetSystemDefaultLangID(void);
+
+#define PRIMARYLANGID(l) ((WORD)(l) & 0x3ff)
+#define SUBLANGID(l) ((WORD)(l) >> 10)
+
+#if defined( __x86_64__ )
+
+#define _WIN64 1
+
+#endif
+
+#endif
+
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/config.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/config.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/config.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/config.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,67 @@
+
+#if !defined(__DJGPP__)
+
+#ifndef __CYGWIN__
+ #define FILESYSTEM_IS_CASE_SENSITIVE 1
+#endif
+
+ #if !defined(ENV_MACOSX) && !defined(ENV_BEOS)
+
+ /* <wchar.h> */
+ /* ENV_HAVE_WCHAR__H and not ENV_HAVE_WCHAR_H to avoid warning with wxWidgets */
+ #define ENV_HAVE_WCHAR__H
+
+ /* <wctype.h> */
+ #define ENV_HAVE_WCTYPE_H
+
+ /* mbrtowc */
+/* #ifndef __hpux */
+/* #define ENV_HAVE_MBRTOWC */
+/* #endif */
+
+ /* towupper */
+ #define ENV_HAVE_TOWUPPER
+
+ #endif /* !ENV_MACOSX && !ENV_BEOS */
+
+ #if !defined(ENV_BEOS)
+ #define ENV_HAVE_GETPASS
+
+ #if !defined(sun)
+ #define ENV_HAVE_TIMEGM
+ #endif
+
+
+ #endif
+
+ /* lstat, readlink and S_ISLNK */
+ #define ENV_HAVE_LSTAT
+
+ /* <locale.h> */
+ #define ENV_HAVE_LOCALE
+
+ /* mbstowcs */
+ #define ENV_HAVE_MBSTOWCS
+
+ /* wcstombs */
+ #define ENV_HAVE_WCSTOMBS
+
+#endif /* !__DJGPP__ */
+
+#ifndef ENV_BEOS
+#define ENV_HAVE_PTHREAD
+#endif
+
+#if defined(ENV_MACOSX)
+#define LOCALE_IS_UTF8
+#endif
+
+#ifdef LOCALE_IS_UTF8
+#undef ENV_HAVE_LOCALE
+#undef ENV_HAVE_MBSTOWCS
+#undef ENV_HAVE_WCSTOMBS
+/* #undef ENV_HAVE_MBRTOWC */
+#endif
+
+#define MAX_PATHNAME_LEN 1024
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/initguid.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/initguid.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/initguid.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/initguid.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,4 @@
+// initguid.h
+
+#include "Common/MyInitGuid.h"
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile Sun Dec 16 23:23:25 2012
@@ -0,0 +1,21 @@
+PROG=test_emul
+
+LOCAL_FLAGS=-I. -I.. -I../include_windows -DUNICODE -D_UNICODE
+
+include ../../makefile.crc32
+include ../../makefile.machine
+
+LIBS=$(LOCAL_LIBS)
+
+OBJS=myGetTickCount.o \
+ wine_date_and_time.o \
+ mySplitCommandLine.o \
+ myAddExeFlag.o \
+ wine_GetXXXDefaultLangID.o \
+ test_emul.o \
+ MyVector.o \
+ MyString.o \
+ MyWindows.o
+
+include ../../makefile.glb
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.depend
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.depend?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.depend (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.depend Sun Dec 16 23:23:25 2012
@@ -0,0 +1,32 @@
+myGetTickCount.o: myGetTickCount.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h
+mySplitCommandLine.o: mySplitCommandLine.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h \
+ ../Common/StringConvert.h ../Common/MyString.h ../Common/MyVector.h \
+ ../Common/Defs.h myPrivate.h
+myAddExeFlag.o: myAddExeFlag.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h \
+ myPrivate.h ../Common/StringConvert.h ../Common/MyString.h \
+ ../Common/MyVector.h ../Common/Defs.h
+test_emul.o: test_emul.cpp StdAfx.h config.h ../Common/MyWindows.h \
+ ../Common/MyGuidDef.h ../Common/Types.h ../Common/StringConvert.h \
+ ../Common/MyString.h ../Common/MyVector.h ../Common/Defs.h \
+ ../Common/StdOutStream.h ../Common/StringConvert.cpp \
+ ../Common/UTFConvert.cpp ../Common/UTFConvert.h \
+ ../Common/StdOutStream.cpp ../Common/IntToString.h \
+ ../Common/IntToString.cpp ../Windows/Synchronization.cpp \
+ ../Windows/Synchronization.h ../Windows/Defs.h \
+ ../Windows/../../C/Threads.h ../Windows/../../C/Types.h \
+ ../Windows/FileFind.cpp ../Windows/FileFind.h \
+ ../Windows/../Common/MyString.h ../Windows/FileName.h \
+ ../Windows/../Common/StringConvert.h myPrivate.h
+wine_date_and_time.o: wine_date_and_time.cpp config.h
+MyVector.o: ../Common/MyVector.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h \
+ ../Common/MyVector.h ../Common/Defs.h
+MyString.o: ../Common/MyString.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h \
+ ../Common/StringConvert.h ../Common/MyString.h ../Common/MyVector.h \
+ ../Common/Defs.h myPrivate.h
+MyWindows.o: ../Common/MyWindows.cpp StdAfx.h config.h \
+ ../Common/MyWindows.h ../Common/MyGuidDef.h ../Common/Types.h
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.list
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.list?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.list (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/makefile.list Sun Dec 16 23:23:25 2012
@@ -0,0 +1,28 @@
+SRCS=myGetTickCount.cpp \
+ mySplitCommandLine.cpp \
+ myAddExeFlag.cpp \
+ test_emul.cpp \
+ wine_date_and_time.cpp \
+ wine_GetXXXDefaultLangID.cpp \
+ ../Common/MyVector.cpp \
+ ../Common/MyString.cpp \
+ ../Common/MyWindows.cpp
+
+mySplitCommandLine.o : mySplitCommandLine.cpp
+ $(CXX) $(CXXFLAGS) mySplitCommandLine.cpp
+myAddExeFlag.o : myAddExeFlag.cpp
+ $(CXX) $(CXXFLAGS) myAddExeFlag.cpp
+myGetTickCount.o : myGetTickCount.cpp
+ $(CXX) $(CXXFLAGS) myGetTickCount.cpp
+test_emul.o : test_emul.cpp
+ $(CXX) $(CXXFLAGS) test_emul.cpp
+wine_date_and_time.o : wine_date_and_time.cpp
+ $(CXX) $(CXXFLAGS) wine_date_and_time.cpp
+wine_GetXXXDefaultLangID.o : wine_GetXXXDefaultLangID.cpp
+ $(CXX) $(CXXFLAGS) wine_GetXXXDefaultLangID.cpp
+MyVector.o : ../Common/MyVector.cpp
+ $(CXX) $(CXXFLAGS) ../Common/MyVector.cpp
+MyString.o : ../Common/MyString.cpp
+ $(CXX) $(CXXFLAGS) ../Common/MyString.cpp
+MyWindows.o : ../Common/MyWindows.cpp
+ $(CXX) $(CXXFLAGS) ../Common/MyWindows.cpp
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myAddExeFlag.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myAddExeFlag.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myAddExeFlag.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myAddExeFlag.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,20 @@
+#include "StdAfx.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <windows.h>
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+#include "myPrivate.h"
+
+#include "Common/StringConvert.h"
+
+void myAddExeFlag(const UString &u_name)
+{
+ AString filename = UnicodeStringToMultiByte(u_name, CP_ACP); // FIXME
+ const char * name = nameWindowToUnix(filename);
+ // printf("myAddExeFlag(%s)\n",name);
+ chmod(name,0700);
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myGetTickCount.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myGetTickCount.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myGetTickCount.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myGetTickCount.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,8 @@
+#include "StdAfx.h"
+
+#include <time.h>
+
+DWORD WINAPI GetTickCount(VOID) {
+ return (DWORD)time(0); // FIXME : but only for the seed of the random generator
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myPrivate.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myPrivate.h?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myPrivate.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/myPrivate.h Sun Dec 16 23:23:25 2012
@@ -0,0 +1,17 @@
+
+void WINAPI RtlSecondsSince1970ToFileTime( DWORD Seconds, FILETIME * ft );
+
+extern "C" int global_use_utf16_conversion;
+#ifdef ENV_HAVE_LSTAT
+extern "C" int global_use_lstat;
+#endif
+
+const char *my_getlocale(void);
+
+#ifdef NEED_NAME_WINDOWS_TO_UNIX
+static inline const char * nameWindowToUnix(const char * lpFileName) {
+ if ((lpFileName[0] == 'c') && (lpFileName[1] == ':')) return lpFileName+2;
+ return lpFileName;
+}
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/mySplitCommandLine.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/mySplitCommandLine.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/mySplitCommandLine.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/mySplitCommandLine.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,82 @@
+#include "StdAfx.h"
+
+#include "../Common/StringConvert.h"
+
+#include "myPrivate.h"
+
+#ifdef ENV_HAVE_LOCALE
+#include <locale.h>
+#endif
+
+extern void my_windows_split_path(const AString &p_path, AString &dir , AString &base);
+
+void mySplitCommandLine(int numArguments,const char *arguments[],UStringVector &parts) {
+
+ { // define P7ZIP_HOME_DIR
+ static char p7zip_home_dir[MAX_PATH];
+ AString dir,name;
+ my_windows_split_path(arguments[0],dir,name);
+ snprintf(p7zip_home_dir,sizeof(p7zip_home_dir),"P7ZIP_HOME_DIR=%s/",(const char *)dir);
+ p7zip_home_dir[sizeof(p7zip_home_dir)-1] = 0;
+ putenv(p7zip_home_dir);
+ }
+
+#ifdef ENV_HAVE_LOCALE
+ // set the program's current locale from the user's environment variables
+ setlocale(LC_ALL,"");
+
+
+ // auto-detect which conversion p7zip should use
+ char *locale = setlocale(LC_CTYPE,0);
+ if (locale) {
+ size_t len = strlen(locale);
+ char *locale_upper = (char *)malloc(len+1);
+ if (locale_upper) {
+ strcpy(locale_upper,locale);
+
+ for(size_t i=0;i<len;i++)
+ locale_upper[i] = toupper(locale_upper[i] & 255);
+
+ if ( (strcmp(locale_upper,"") != 0)
+ && (strcmp(locale_upper,"C") != 0)
+ && (strcmp(locale_upper,"POSIX") != 0) ) {
+ global_use_utf16_conversion = 1;
+ }
+ free(locale_upper);
+ }
+ }
+#elif defined(LOCALE_IS_UTF8)
+ global_use_utf16_conversion = 1; // assume LC_CTYPE="utf8"
+#else
+ global_use_utf16_conversion = 0; // assume LC_CTYPE="C"
+#endif
+
+ parts.Clear();
+ for(int ind=0;ind < numArguments; ind++) {
+ if ((ind <= 2) && (strcmp(arguments[ind],"-no-utf16") == 0)) {
+ global_use_utf16_conversion = 0;
+ } else if ((ind <= 2) && (strcmp(arguments[ind],"-utf16") == 0)) {
+ global_use_utf16_conversion = 1;
+ } else {
+ UString tmp = MultiByteToUnicodeString(arguments[ind]);
+ // tmp.Trim(); " " is a valid filename ...
+ if (!tmp.IsEmpty()) {
+ parts.Add(tmp);
+ }
+ }
+ }
+}
+
+const char *my_getlocale(void) {
+#ifdef ENV_HAVE_LOCALE
+ const char* ret = setlocale(LC_CTYPE,0);
+ if (ret == 0)
+ ret ="C";
+ return ret;
+#elif defined(LOCALE_IS_UTF8)
+ return "utf8";
+#else
+ return "C";
+#endif
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/test_emul.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/test_emul.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/test_emul.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/test_emul.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,745 @@
+#undef BIG_ENDIAN
+#undef LITTLE_ENDIAN
+
+#include "StdAfx.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <unistd.h>
+
+#ifdef __APPLE_CC__
+#define UInt32 macUIn32
+#include <CoreFoundation/CoreFoundation.h>
+#undef UInt32
+#endif
+
+#ifdef ENV_HAVE_WCHAR__H
+#include <wchar.h>
+#endif
+#ifdef ENV_HAVE_LOCALE
+#include <locale.h>
+#endif
+
+#include <windows.h>
+
+#define NEED_NAME_WINDOWS_TO_UNIX
+// #include "myPrivate.h"
+
+#include "Common/StringConvert.h"
+#include "Common/StdOutStream.h"
+
+#undef NDEBUG
+#include <assert.h>
+
+#include "Common/StringConvert.cpp"
+#include "Common/StdOutStream.cpp"
+#include "Common/IntToString.cpp"
+
+#include "Windows/Synchronization.cpp"
+#include "Windows/FileFind.cpp"
+#include "Windows/Time.cpp"
+#include "../C/Threads.c"
+#include "../../C/Ppmd.h"
+
+using namespace NWindows;
+
+#if defined(ENV_HAVE_WCHAR__H) && defined(ENV_HAVE_MBSTOWCS) && defined(ENV_HAVE_WCSTOMBS)
+void test_mbs(void) {
+ wchar_t wstr1[256] = {
+ L'e',
+ 0xE8, // latin small letter e with grave
+ 0xE9, // latin small letter e with acute
+ L'a',
+ 0xE0, // latin small letter a with grave
+ 0x20AC, // euro sign
+ L'b',
+ 0 };
+ wchar_t wstr2[256];
+ char astr[256];
+
+ global_use_utf16_conversion = 1;
+
+ size_t len1 = wcslen(wstr1);
+
+ printf("wstr1 - %d - '%ls'\n",(int)len1,wstr1);
+
+ size_t len0 = wcstombs(astr,wstr1,sizeof(astr));
+ printf("astr - %d - '%s'\n",(int)len0,astr);
+
+ size_t len2 = mbstowcs(wstr2,astr,sizeof(wstr2)/sizeof(*wstr2));
+ printf("wstr - %d - '%ls'\n",(int)len2,wstr2);
+
+ if (wcscmp(wstr1,wstr2) != 0) {
+ printf("ERROR during conversions wcs -> mbs -> wcs\n");
+ exit(EXIT_FAILURE);
+ }
+
+ char *ptr = astr;
+ size_t len = 0;
+ while (*ptr) {
+ ptr = CharNextA(ptr);
+ len += 1;
+ }
+ if ((len != len1) && (len != 12)) { // 12 = when locale is UTF8 instead of ISO8859-15
+ printf("ERROR CharNextA : len=%d, len1=%d\n",(int)len,(int)len1);
+ exit(EXIT_FAILURE);
+ }
+
+ UString ustr(wstr1);
+ assert(ustr.Length() == (int)len1);
+
+ AString ansistr(astr);
+ assert(ansistr.Length() == (int)len0);
+
+ ansistr = UnicodeStringToMultiByte(ustr);
+ assert(ansistr.Length() == (int)len0);
+
+ assert(strcmp(ansistr,astr) == 0);
+ assert(wcscmp(ustr,wstr1) == 0);
+
+ UString ustr2 = MultiByteToUnicodeString(astr);
+ assert(ustr2.Length() == (int)len1);
+ assert(wcscmp(ustr2,wstr1) == 0);
+}
+#endif
+
+static void test_astring(int num) {
+ AString strResult;
+
+ strResult = "first part : ";
+ char number[256];
+ sprintf(number,"%d",num);
+ strResult += AString(number);
+
+ strResult += " : last part";
+
+ printf("strResult -%s-\n",(const char *)strResult);
+
+}
+
+
+extern void my_windows_split_path(const AString &p_path, AString &dir , AString &base);
+
+static struct {
+ const char *path;
+ const char *dir;
+ const char *base;
+}
+tabSplit[]=
+ {
+ { "",".","." },
+ { "/","/","/" },
+ { ".",".","." },
+ { "//","/","/" },
+ { "///","/","/" },
+ { "dir",".","dir" },
+ { "/dir","/","dir" },
+ { "/dir/","/","dir" },
+ { "/dir/base","/dir","base" },
+ { "/dir//base","/dir","base" },
+ { "/dir///base","/dir","base" },
+ { "//dir/base","//dir","base" },
+ { "///dir/base","///dir","base" },
+ { "/dir/base/","/dir","base" },
+ { 0,0,0 }
+ };
+
+static void test_split_astring() {
+ int ind = 0;
+ while (tabSplit[ind].path) {
+ AString path(tabSplit[ind].path);
+ AString dir;
+ AString base;
+
+ my_windows_split_path(path,dir,base);
+
+ if ((dir != tabSplit[ind].dir) || (base != tabSplit[ind].base)) {
+ printf("ERROR : '%s' '%s' '%s'\n",(const char *)path,(const char *)dir,(const char *)base);
+ }
+ ind++;
+ }
+ printf("test_split_astring : done\n");
+}
+
+ // Number of 100 nanosecond units from 1/1/1601 to 1/1/1970
+#define EPOCH_BIAS 116444736000000000LL
+static LARGE_INTEGER UnixTimeToUL(time_t tps_unx)
+{
+ LARGE_INTEGER ul;
+ ul.QuadPart = tps_unx * 10000000LL + EPOCH_BIAS;
+ return ul;
+}
+
+static LARGE_INTEGER FileTimeToUL(FILETIME fileTime)
+{
+ LARGE_INTEGER lFileTime;
+ lFileTime.QuadPart = fileTime.dwHighDateTime;
+ lFileTime.QuadPart = (lFileTime.QuadPart << 32) | fileTime.dwLowDateTime;
+ return lFileTime;
+}
+
+static void display(const char *txt,SYSTEMTIME systime)
+{
+ FILETIME fileTime;
+ BOOL ret = SystemTimeToFileTime(&systime,&fileTime);
+ assert(ret == TRUE);
+ LARGE_INTEGER ulFileTime = FileTimeToUL(fileTime);
+
+ const char * day="";
+ switch (systime.wDayOfWeek)
+ {
+ case 0:day = "Sunday";break;
+ case 1:day = "Monday";break;
+ case 2:day = "Tuesday";break;
+ case 3:day = "Wednesday";break;
+ case 4:day = "Thursday";break;
+ case 5:day = "Friday";break;
+ case 6:day = "Saturday";break;
+ }
+ g_StdOut<< txt << day << " "
+ << (int)systime.wYear << "/" << (int)systime.wMonth << "/" << (int)systime.wDay << " "
+ << (int)systime.wHour << ":" << (int)systime.wMinute << ":" << (int)systime.wSecond << ":"
+ << (int)systime.wMilliseconds
+ << " (" << (UInt64)ulFileTime.QuadPart << ")\n";
+}
+
+static void test_time()
+{
+ time_t tps_unx = time(0);
+
+ printf("Test Time (1):\n");
+ printf("===========\n");
+ SYSTEMTIME systimeGM;
+ GetSystemTime(&systimeGM);
+
+ LARGE_INTEGER ul = UnixTimeToUL(tps_unx);
+ g_StdOut<<" unix time = " << (UInt64)tps_unx << " (" << (UInt64)ul.QuadPart << ")\n";
+
+ g_StdOut<<" gmtime : " << asctime(gmtime(&tps_unx))<<"\n";
+ g_StdOut<<" localtime : " << asctime(localtime(&tps_unx))<<"\n";
+
+ display(" GetSystemTime : ", systimeGM);
+}
+
+static void test_time2()
+{
+ UInt32 dosTime = 0x30d0094C;
+ FILETIME utcFileTime;
+ FILETIME localFileTime;
+ FILETIME localFileTime2;
+ UInt32 dosTime2 = 0;
+
+ printf("Test Time (2):\n");
+ printf("===========\n");
+ NTime::DosTimeToFileTime(dosTime, localFileTime);
+ NTime::FileTimeToDosTime(localFileTime, dosTime2);
+ assert(dosTime == dosTime2);
+
+ printf("Test Time (3):\n");
+ printf("===========\n");
+ /* DosTime To utcFileTime */
+
+ if (NTime::DosTimeToFileTime(dosTime, localFileTime)) /* DosDateTimeToFileTime */
+ {
+ if (!LocalFileTimeToFileTime(&localFileTime, &utcFileTime))
+ utcFileTime.dwHighDateTime = utcFileTime.dwLowDateTime = 0;
+ }
+
+ printf(" - 0x%x => 0x%x 0x%x => 0x%x 0x%x\n",(unsigned)dosTime,
+ (unsigned)localFileTime.dwHighDateTime,(unsigned)localFileTime.dwLowDateTime,
+ (unsigned)utcFileTime.dwHighDateTime,(unsigned)utcFileTime.dwLowDateTime);
+
+
+ /* utcFileTime to DosTime */
+
+ FileTimeToLocalFileTime(&utcFileTime, &localFileTime2);
+ NTime::FileTimeToDosTime(localFileTime2, dosTime2); /* FileTimeToDosDateTime */
+
+ printf(" - 0x%x <= 0x%x 0x%x <= 0x%x 0x%x\n",(unsigned)dosTime2,
+ (unsigned)localFileTime2.dwHighDateTime,(unsigned)localFileTime2.dwLowDateTime,
+ (unsigned)utcFileTime.dwHighDateTime,(unsigned)utcFileTime.dwLowDateTime);
+
+ assert(dosTime == dosTime2);
+ assert(localFileTime.dwHighDateTime == localFileTime2.dwHighDateTime);
+ assert(localFileTime.dwLowDateTime == localFileTime2.dwLowDateTime);
+}
+
+static void test_semaphore()
+{
+ g_StdOut << "\nTEST SEMAPHORE :\n";
+
+ NWindows::NSynchronization::CSynchro sync;
+ NWindows::NSynchronization::CSemaphoreWFMO sema;
+ bool bres;
+ DWORD waitResult;
+ int i;
+
+ sync.Create();
+ sema.Create(&sync,2,10);
+
+ g_StdOut << " - Release(1)\n";
+ for(i = 0 ;i < 8;i++)
+ {
+ // g_StdOut << " - Release(1) : "<< i << "\n";
+ bres = sema.Release(1);
+ assert(bres == S_OK);
+ }
+ // g_StdOut << " - Release(1) : done\n";
+ bres = sema.Release(1);
+ assert(bres == S_FALSE);
+
+ g_StdOut << " - WaitForMultipleObjects(INFINITE)\n";
+ HANDLE events[1] = { sema };
+ for(i=0;i<10;i++)
+ {
+ waitResult = ::WaitForMultipleObjects(1, events, FALSE, INFINITE);
+ assert(waitResult == WAIT_OBJECT_0);
+ }
+
+ g_StdOut << " Done\n";
+}
+
+
+/****************************************************************************************/
+
+
+static int threads_count = 0;
+
+static THREAD_FUNC_RET_TYPE thread_fct(void * /* param */ ) {
+ threads_count++;
+ return 0;
+}
+
+#define MAX_THREADS 100000
+
+int test_thread(void) {
+ ::CThread thread;
+
+ Thread_Construct(&thread);
+
+ threads_count = 0;
+
+ printf("test_thread : %d threads\n",MAX_THREADS);
+
+ for(int i=0;i<MAX_THREADS;i++) {
+ Thread_Create(&thread, thread_fct, 0);
+
+ Thread_Wait(&thread);
+
+ Thread_Close(&thread);
+ }
+
+ assert(threads_count == MAX_THREADS);
+
+ return 0;
+}
+
+
+void dumpStr(const char *title,const char *txt)
+{
+ size_t i,len = strlen(txt);
+
+ printf("%s - %d :",title,(int)len);
+
+ for(i = 0 ; i<len;i++) {
+ printf(" 0x%02x",(unsigned)(txt[i] & 255));
+ }
+
+ printf("\n");
+}
+
+
+void dumpWStr(const char *title,const wchar_t *txt)
+{
+ size_t i,len = wcslen(txt);
+
+ printf("%s - %d :",title,(int)len);
+
+ for(i = 0 ; i<len;i++) {
+ printf(" 0x%02x",(unsigned)(txt[i]));
+ }
+
+ printf("\n");
+}
+
+#ifdef __APPLE_CC__
+
+void testMaxOSX_stringConvert()
+{
+/*
+ 0xE8, // latin small letter e with grave
+ 0xE9, // latin small letter e with acute
+ L'a',
+ 0xE0, // latin small letter a with grave
+ 0x20AC, // euro sign
+*/
+ struct
+ {
+ char astr [256];
+ wchar_t ustr [256];
+ }
+ tab [] =
+ {
+ {
+ // 'a' , 'e with acute' , 'e with grave' , 'a with grave' , 'u with grave' , 'b' , '.' , 't' , 'x' , 't'
+ { 0x61, 0x65, 0xcc, 0x81 , 0x65, 0xcc, 0x80, 0x61, 0xcc, 0x80, 0x75, 0xcc, 0x80, 0x62, 0x2e, 0x74, 0x78, 0x74, 0 },
+ { 0x61, 0xe9, 0xe8, 0xe0, 0xf9, 0x62, 0x2e, 0x74, 0x78, 0x74, 0 }
+ },
+ {
+ // 'a' , 'euro sign' , 'b' , '.' , 't' , 'x' , 't' , '\n'
+ { 0x61, 0xe2, 0x82, 0xac, 0x62, 0x2e, 0x74, 0x78, 0x74, 0x0a, 0 },
+ { 0x61, 0x20AC, 0x62, 0x2e, 0x74, 0x78, 0x74, 0x0a, 0 }
+ },
+ {
+ { 0 },
+ { 0 }
+ }
+ };
+
+ int i;
+
+ printf("testMaxOSX_stringConvert : \n");
+
+ i = 0;
+ while (tab[i].astr[0])
+ {
+ printf(" %s\n",tab[i].astr);
+
+ UString ustr = GetUnicodeString(tab[i].astr);
+
+ // dumpWStr("1",&ustr[0]);
+
+ assert(MyStringCompare(&ustr[0],tab[i].ustr) == 0);
+ assert(ustr.Length() == wcslen(tab[i].ustr) );
+
+
+ AString astr = GetAnsiString(ustr);
+ assert(MyStringCompare(&astr[0],tab[i].astr) == 0);
+ assert(astr.Length() == strlen(tab[i].astr) );
+
+ i++;
+ }
+}
+
+void testMacOSX()
+{
+// char texte1[]= { 0xc3 , 0xa9 , 0xc3, 0xa0, 0};
+
+ wchar_t wpath1[4096] = {
+ 0xE9, // latin small letter e with acute
+ 0xE0,
+ 0xc7,
+ 0x25cc,
+ 0x327,
+ 0xe4,
+ 0xe2,
+ 0xc2,
+ 0xc3,
+ 0x2e,
+ 0x74,
+ 0x78,
+ 0x74,
+/*
+ L'e',
+ 0xE8, // latin small letter e with grave
+ 0xE9, // latin small letter e with acute
+ L'a',
+ 0xE0, // latin small letter a with grave
+ 0x20AC, // euro sign
+ L'b',
+*/
+ 0 };
+
+ char utf8[4096];
+ wchar_t wpath2[4096];
+
+
+
+ // dumpStr("UTF8 standart",texte1);
+
+ dumpWStr("UCS32 standard",wpath1);
+
+// Translate into FS pathname
+ {
+ const wchar_t * wcs = wpath1;
+
+ UniChar unipath[4096];
+
+ long n = wcslen(wcs);
+
+ for(long i = 0 ; i<= n ;i++) {
+ unipath[i] = wcs[i];
+ }
+
+ CFStringRef cfpath = CFStringCreateWithCharacters(NULL,unipath,n);
+
+ CFMutableStringRef cfpath2 = CFStringCreateMutableCopy(NULL,0,cfpath);
+ CFRelease(cfpath);
+ CFStringNormalize(cfpath2,kCFStringNormalizationFormD);
+
+ CFStringGetCString(cfpath2,(char *)utf8,4096,kCFStringEncodingUTF8);
+
+ CFRelease(cfpath2);
+ }
+
+ dumpStr("UTF8 MacOSX",utf8);
+
+// Translate from FS pathname
+ {
+ const char * path = utf8;
+
+ long n = strlen(path);
+
+ CFStringRef cfpath = CFStringCreateWithCString(NULL,path,kCFStringEncodingUTF8);
+
+ if (cfpath)
+ {
+
+ CFMutableStringRef cfpath2 = CFStringCreateMutableCopy(NULL,0,cfpath);
+ CFRelease(cfpath);
+ CFStringNormalize(cfpath2,kCFStringNormalizationFormC);
+
+ n = CFStringGetLength(cfpath2);
+ for(long i = 0 ; i<= n ;i++) {
+ wpath2[i] = CFStringGetCharacterAtIndex(cfpath2,i);
+ }
+ wpath2[n] = 0;
+
+ CFRelease(cfpath2);
+ }
+ else
+ {
+ wpath2[0] = 0;
+ }
+ }
+
+ dumpWStr("UCS32 standard (2)",wpath2);
+
+/*
+ {
+ CFStringRef cfpath;
+
+ cfpath = CFStringCreateWithCString(kCFAllocatorDefault, texte1, kCFStringEncodingUTF8);
+
+ // TODO str = null ?
+
+ CFMutableStringRef cfpath2 = CFStringCreateMutableCopy(NULL,0,cfpaht);
+ CFRealease(cfpath);
+
+
+
+
+ }
+*/
+
+
+}
+#endif // __APPLE_CC__
+
+
+static const TCHAR *kMainDll = TEXT("7z.dll");
+
+static CSysString ConvertUInt32ToString(UInt32 value)
+{
+ TCHAR buffer[32];
+ ConvertUInt32ToString(value, buffer);
+ return buffer;
+}
+
+
+void test_csystring(void)
+{
+ {
+ const CSysString baseFolder = TEXT("bin/");
+ const CSysString b2 = baseFolder + kMainDll;
+
+ assert(MyStringCompare(&b2[0],TEXT("bin/7z.dll")) == 0);
+ }
+
+ {
+ LPCTSTR dirPath=TEXT("/tmp/");
+ LPCTSTR prefix=TEXT("foo");
+ CSysString resultPath;
+
+ UINT number = 12345;
+ UInt32 count = 6789;
+
+/*
+ TCHAR * buf = resultPath.GetBuffer(MAX_PATH);
+ ::swprintf(buf,MAX_PATH,L"%ls%ls#%d@%d.tmp",dirPath,prefix,(unsigned)number,count);
+ buf[MAX_PATH-1]=0;
+ resultPath.ReleaseBuffer();
+*/
+ resultPath = dirPath;
+ resultPath += prefix;
+ resultPath += TEXT('#');
+ resultPath += ConvertUInt32ToString(number);
+ resultPath += TEXT('@');
+ resultPath += ConvertUInt32ToString(count);
+ resultPath += TEXT(".tmp");
+
+ // printf("##%ls##\n",&resultPath[0]);
+
+ assert(MyStringCompare(&resultPath[0],TEXT("/tmp/foo#12345 at 6789.tmp")) == 0);
+ }
+
+}
+
+static void test_AString()
+{
+ AString a;
+
+ a = "abc";
+ assert(MyStringCompare(&a[0],"abc") == 0);
+ assert(a.Length() == 3);
+
+ a = GetAnsiString(L"abc");
+ assert(MyStringCompare(&a[0],"abc") == 0);
+ assert(a.Length() == 3);
+}
+
+
+const TCHAR kAnyStringWildcard = '*';
+
+static void test_UString2(const UString &phyPrefix)
+{
+ UString tmp = phyPrefix + wchar_t(kAnyStringWildcard);
+ printf("Enum(%ls-%ls-%lc)\n",&tmp[0],&phyPrefix[0],wchar_t(kAnyStringWildcard));
+}
+
+
+
+static void test_UString()
+{
+ UString us = L"7za433_tar";
+
+ test_UString2(L"7za433_tar");
+
+ UString u1(us);
+ test_UString2(u1);
+ u1 = L"";
+ test_UString2(u1);
+ u1 = us;
+ test_UString2(u1);
+
+ UString u2 = us;
+ test_UString2(u2);
+ u2 = L"";
+ test_UString2(u2);
+ u2 = u1;
+ test_UString2(u2);
+
+ u1 = L"abc";
+ assert(MyStringCompare(&u1[0],L"abc") == 0);
+ assert(u1.Length() == 3);
+
+ u1 = GetUnicodeString("abc");
+ assert(MyStringCompare(&u1[0],L"abc") == 0);
+ assert(u1.Length() == 3);
+}
+
+/****************************************************************************************/
+int main() {
+
+ // return test_thread();
+
+
+#ifdef ENV_HAVE_LOCALE
+ setlocale(LC_ALL,"");
+#endif
+
+#if defined(BIG_ENDIAN)
+ printf("BIG_ENDIAN : %d\n",(int)BIG_ENDIAN);
+#endif
+#if defined(LITTLE_ENDIAN)
+ printf("LITTLE_ENDIAN : %d\n",(int)LITTLE_ENDIAN);
+#endif
+
+ printf("sizeof(Byte) : %d\n",(int)sizeof(Byte));
+ printf("sizeof(UInt16) : %d\n",(int)sizeof(UInt16));
+ printf("sizeof(UInt32) : %d\n",(int)sizeof(UInt32));
+ printf("sizeof(UINT32) : %d\n",(int)sizeof(UINT32));
+ printf("sizeof(UInt64) : %d\n",(int)sizeof(UInt64));
+ printf("sizeof(UINT64) : %d\n",(int)sizeof(UINT64));
+ printf("sizeof(void *) : %d\n",(int)sizeof(void *));
+ printf("sizeof(size_t) : %d\n",(int)sizeof(size_t));
+ printf("sizeof(ptrdiff_t) : %d\n",(int)sizeof(ptrdiff_t));
+ printf("sizeof(off_t) : %d\n",(int)sizeof(off_t));
+ printf("sizeof(wchar_t) : %d\n",(int)sizeof(wchar_t));
+#ifdef __APPLE_CC__
+ printf("sizeof(UniChar) : %d\n",(int)sizeof(UniChar));
+#endif
+ printf("sizeof(CPpmd_See) : %d\n",(int)sizeof(CPpmd_See));
+ printf("sizeof(CPpmd_State) : %d\n",(int)sizeof(CPpmd_State));
+
+ // size tests
+ assert(sizeof(Byte)==1);
+ assert(sizeof(UInt16)==2);
+ assert(sizeof(UInt32)==4);
+ assert(sizeof(UINT32)==4);
+ assert(sizeof(UInt64)==8);
+ assert(sizeof(UINT64)==8);
+
+ // alignement tests
+ assert(sizeof(CPpmd_See)==4);
+ assert(sizeof(CPpmd_State)==6);
+
+ union {
+ Byte b[2];
+ UInt16 s;
+ } u;
+ u.s = 0x1234;
+
+ if ((u.b[0] == 0x12) && (u.b[1] == 0x34)) {
+ printf("CPU : big endian\n");
+ } else if ((u.b[0] == 0x34) && (u.b[1] == 0x12)) {
+ printf("CPU : little endian\n");
+ } else {
+ printf("CPU : unknown endianess\n");
+ }
+
+#if defined(ENV_HAVE_WCHAR__H) && defined(ENV_HAVE_MBSTOWCS) && defined(ENV_HAVE_WCSTOMBS)
+ test_mbs();
+#endif
+
+ test_astring(12345);
+ test_split_astring();
+
+ test_csystring();
+ test_AString();
+ test_UString();
+
+ test_time();
+
+ test_time2();
+
+ test_semaphore();
+
+#ifdef __APPLE_CC__
+ testMacOSX();
+ testMaxOSX_stringConvert();
+#endif
+
+
+{
+ LANGID langID;
+ WORD primLang;
+ WORD subLang;
+
+ langID = GetUserDefaultLangID();
+ printf("langID=0x%x\n",langID);
+
+ primLang = (WORD)(PRIMARYLANGID(langID));
+ subLang = (WORD)(SUBLANGID(langID));
+
+ printf("primLang=%d subLang=%d\n",(unsigned)primLang,(unsigned)subLang);
+}
+
+ printf("\n### All Done ###\n\n");
+
+ return 0;
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,741 @@
+
+#include "StdAfx.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+#include <wchar.h>
+#include <ctype.h>
+#include <string.h>
+
+#ifdef __APPLE__
+#define UInt32 mac_UInt32
+#include <CoreFoundation/CoreFoundation.h>
+#undef UInt32
+#endif // __APPLE__
+
+
+// #define TRACE printf
+
+typedef DWORD LCID;
+typedef void * ULONG_PTR; /* typedef unsigned long ULONG_PTR; */
+
+#define SORT_DEFAULT 0x0
+
+#define LANG_NEUTRAL 0x00
+#define LANG_ENGLISH 0x09
+
+#define SUBLANG_DEFAULT 0x01 /* user default */
+
+#define MAKELCID(l, s) ( (l & 0xFFFF) | ((s & 0xFFFF)<<16))
+#define MAKELANGID(p, s) ((((WORD)(s))<<10) | (WORD)(p))
+
+#define LANGIDFROMLCID(lcid) ((WORD)(lcid))
+
+static LCID lcid_LC_MESSAGES = 0;
+static LCID lcid_LC_CTYPE = 0;
+
+struct locale_name
+{
+ WCHAR win_name[128]; /* Windows name ("en-US") */
+ WCHAR lang[128]; /* language ("en") (note: buffer contains the other strings too) */
+ WCHAR *country; /* country ("US") */
+ WCHAR *charset; /* charset ("UTF-8") for Unix format only */
+ WCHAR *script; /* script ("Latn") for Windows format only */
+ WCHAR *modifier; /* modifier or sort order */
+ LCID lcid; /* corresponding LCID */
+ int matches; /* number of elements matching LCID (0..4) */
+ UINT codepage; /* codepage corresponding to charset */
+};
+#define WINE_UNICODE_INLINE static
+
+/***********************************************************/
+typedef struct {
+ const WCHAR * LOCALE_SNAME;
+ const WCHAR * LOCALE_SISO639LANGNAME;
+ const WCHAR * LOCALE_SISO3166CTRYNAME;
+ unsigned int LOCALE_IDEFAULTUNIXCODEPAGE;
+ unsigned int LOCALE_ILANGUAGE;
+} t_info;
+
+static t_info g_langInfo[] = {
+ { L"af-ZA" , L"af" , L"ZA" , 28591 , 0x0436 }, /* afk.nls */
+ { L"ar-SA" , L"ar" , L"SA" , 28596 , 0x0401 }, /* ara.nls */
+ { L"ar-LB" , L"ar" , L"LB" , 28596 , 0x3001 }, /* arb.nls */
+ { L"ar-EG" , L"ar" , L"EG" , 28596 , 0x0c01 }, /* are.nls */
+ { L"ar-DZ" , L"ar" , L"DZ" , 28596 , 0x1401 }, /* arg.nls */
+ { L"ar-BH" , L"ar" , L"BH" , 28596 , 0x3c01 }, /* arh.nls */
+ { L"ar-IQ" , L"ar" , L"IQ" , 28596 , 0x0801 }, /* ari.nls */
+ { L"ar-JO" , L"ar" , L"JO" , 28596 , 0x2c01 }, /* arj.nls */
+ { L"ar-KW" , L"ar" , L"KW" , 28596 , 0x3401 }, /* ark.nls */
+ { L"ar-LY" , L"ar" , L"LY" , 28596 , 0x1001 }, /* arl.nls */
+ { L"ar-MA" , L"ar" , L"MA" , 28596 , 0x1801 }, /* arm.nls */
+ { L"ar-OM" , L"ar" , L"OM" , 28596 , 0x2001 }, /* aro.nls */
+ { L"ar-QA" , L"ar" , L"QA" , 28596 , 0x4001 }, /* arq.nls */
+ { L"ar-SY" , L"ar" , L"SY" , 28596 , 0x2801 }, /* ars.nls */
+ { L"ar-TN" , L"ar" , L"TN" , 28596 , 0x1c01 }, /* art.nls */
+ { L"ar-AE" , L"ar" , L"AE" , 28596 , 0x3801 }, /* aru.nls */
+ { L"ar-YE" , L"ar" , L"YE" , 28596 , 0x2401 }, /* ary.nls */
+ { L"az-AZ" , L"az" , L"AZ" , 28595 , 0x082c }, /* aze.nls */
+ { L"az-Latn-AZ" , L"az" , L"AZ" , 28599 , 0x042c }, /* azl.nls */
+ { L"be-BY" , L"be" , L"BY" , 1251 , 0x0423 }, /* bel.nls */
+ { L"bg-BG" , L"bg" , L"BG" , 1251 , 0x0402 }, /* bgr.nls */
+ { L"br-FR" , L"br" , L"FR" , 28605 , 0x0493 }, /* brf.nls */
+ { L"ca-ES" , L"ca" , L"ES" , 28605 , 0x0403 }, /* cat.nls */
+ { L"zh-CN" , L"zh" , L"CN" , 936 , 0x0804 }, /* chs.nls */
+ { L"zh-TW" , L"zh" , L"TW" , 950 , 0x0404 }, /* cht.nls */
+ { L"kw-GB" , L"kw" , L"GB" , 28605 , 0x04891 }, /* cor.nls */
+ { L"cs-CZ" , L"cs" , L"CZ" , 28592 , 0x0405 }, /* csy.nls */
+ { L"cy-GB" , L"cy" , L"GB" , 28604 , 0x0492 }, /* cym.nls */
+ { L"da-DK" , L"da" , L"DK" , 28605 , 0x0406 }, /* dan.nls */
+ { L"de-AT" , L"de" , L"AT" , 28605 , 0x0c07 }, /* dea.nls */
+ { L"de-LI" , L"de" , L"LI" , 28605 , 0x1407 }, /* dec.nls */
+ { L"de-LU" , L"de" , L"LU" , 28605 , 0x1007 }, /* del.nls */
+ { L"de-CH" , L"de" , L"CH" , 28605 , 0x0807 }, /* des.nls */
+ { L"de-DE" , L"de" , L"DE" , 28605 , 0x0407 }, /* deu.nls */
+ { L"dv-MV" , L"dv" , L"MV" , 65001 , 0x0465 }, /* div.nls */
+ { L"el-GR" , L"el" , L"GR" , 28597 , 0x0408 }, /* ell.nls */
+ { L"en-AU" , L"en" , L"AU" , 28591 , 0x0c09 }, /* ena.nls */
+ { L"en-CB" , L"en" , L"CB" , 28591 , 0x2409 }, /* enb.nls */
+ { L"en-CA" , L"en" , L"CA" , 28591 , 0x1009 }, /* enc.nls */
+ { L"en-GB" , L"en" , L"GB" , 28605 , 0x0809 }, /* eng.nls */
+ { L"en-IE" , L"en" , L"IE" , 28605 , 0x1809 }, /* eni.nls */
+ { L"en-JM" , L"en" , L"JM" , 28591 , 0x2009 }, /* enj.nls */
+ { L"en-BZ" , L"en" , L"BZ" , 28591 , 0x2809 }, /* enl.nls */
+ { L"en-PH" , L"en" , L"PH" , 28591 , 0x3409 }, /* enp.nls */
+ { L"en-ZA" , L"en" , L"ZA" , 28591 , 0x1c09 }, /* ens.nls */
+ { L"en-TT" , L"en" , L"TT" , 28591 , 0x2c09 }, /* ent.nls */
+ { L"en-US" , L"en" , L"US" , 28591 , 0x0409 }, /* enu.nls */
+ { L"en-ZW" , L"en" , L"ZW" , 28591 , 0x3009 }, /* enw.nls */
+ { L"en-NZ" , L"en" , L"NZ" , 28591 , 0x1409 }, /* enz.nls */
+ { L"eo" , L"eo" , L"" , 65001 , 0x048f }, /* eox.nls */
+ { L"es-PA" , L"es" , L"PA" , 28591 , 0x180a }, /* esa.nls */
+ { L"es-BO" , L"es" , L"BO" , 28591 , 0x400a }, /* esb.nls */
+ { L"es-CR" , L"es" , L"CR" , 28591 , 0x140a }, /* esc.nls */
+ { L"es-DO" , L"es" , L"DO" , 28591 , 0x1c0a }, /* esd.nls */
+ { L"es-SV" , L"es" , L"SV" , 28591 , 0x440a }, /* ese.nls */
+ { L"es-EC" , L"es" , L"EC" , 28591 , 0x300a }, /* esf.nls */
+ { L"es-GT" , L"es" , L"GT" , 28591 , 0x100a }, /* esg.nls */
+ { L"es-HN" , L"es" , L"HN" , 28591 , 0x480a }, /* esh.nls */
+ { L"es-NI" , L"es" , L"NI" , 28591 , 0x4c0a }, /* esi.nls */
+ { L"es-C" , L"es" , L"C" , 28591 , 0x340a }, /* esl.nls */
+ { L"es-MX" , L"es" , L"MX" , 28591 , 0x080a }, /* esm.nls */
+ { L"es-ES_modern" , L"es" , L"ES" , 28605 , 0x0c0a }, /* esn.nls */
+ { L"es-CO" , L"es" , L"CO" , 28591 , 0x240a }, /* eso.nls */
+ { L"es-ES" , L"es" , L"ES" , 28605 , 0x040a }, /* esp.nls */
+ { L"es-PE" , L"es" , L"PE" , 28591 , 0x280a }, /* esr.nls */
+ { L"es-AR" , L"es" , L"AR" , 28591 , 0x2c0a }, /* ess.nls */
+ { L"es-PR" , L"es" , L"PR" , 28591 , 0x500a }, /* esu.nls */
+ { L"es-VE" , L"es" , L"VE" , 28591 , 0x200a }, /* esv.nls */
+ { L"es-UY" , L"es" , L"UY" , 28591 , 0x380a }, /* esy.nls */
+ { L"es-PY" , L"es" , L"PY" , 28591 , 0x3c0a }, /* esz.nls */
+ { L"et-EE" , L"et" , L"EE" , 28605 , 0x0425 }, /* eti.nls */
+ { L"eu-ES" , L"eu" , L"ES" , 28605 , 0x042d }, /* euq.nls */
+ { L"fa-IR" , L"fa" , L"IR" , 65001 , 0x0429 }, /* far.nls */
+ { L"fi-FI" , L"fi" , L"FI" , 28605 , 0x040b }, /* fin.nls */
+ { L"fo-FO" , L"fo" , L"FO" , 28605 , 0x0438 }, /* fos.nls */
+ { L"fr-FR" , L"fr" , L"FR" , 28605 , 0x040c }, /* fra.nls */
+ { L"fr-BE" , L"fr" , L"BE" , 28605 , 0x080c }, /* frb.nls */
+ { L"fr-CA" , L"fr" , L"CA" , 28591 , 0x0c0c }, /* frc.nls */
+ { L"fr-LU" , L"fr" , L"LU" , 28605 , 0x140c }, /* frl.nls */
+ { L"fr-MC" , L"fr" , L"MC" , 28605 , 0x180c }, /* frm.nls */
+ { L"fr-CH" , L"fr" , L"CH" , 28605 , 0x100c }, /* frs.nls */
+ { L"ga-IE" , L"ga" , L"IE" , 28605 , 0x043c }, /* gae.nls */
+ { L"gd-GB" , L"gd" , L"GB" , 28605 , 0x083c }, /* gdh.nls */
+ { L"gv-GB" , L"gv" , L"GB" , 28605 , 0x0c3c }, /* gdv.nls */
+ { L"gl-ES" , L"gl" , L"ES" , 28605 , 0x0456 }, /* glc.nls */
+ { L"gu-IN" , L"gu" , L"IN" , 65001 , 0x0447 }, /* guj.nls */
+ { L"he-I" , L"he" , L"I" , 28598 , 0x040d }, /* heb.nls */
+ { L"hi-IN" , L"hi" , L"IN" , 65001 , 0x0439 }, /* hin.nls */
+ { L"hr-HR" , L"hr" , L"HR" , 28592 , 0x041a }, /* hrv.nls */
+ { L"hu-HU" , L"hu" , L"HU" , 28592 , 0x040e }, /* hun.nls */
+ { L"hy-AM" , L"hy" , L"AM" , 65001 , 0x042b }, /* hye.nls */
+ { L"id-ID" , L"id" , L"ID" , 28591 , 0x0421 }, /* ind.nls */
+ { L"is-IS" , L"is" , L"IS" , 28605 , 0x040f }, /* isl.nls */
+ { L"it-IT" , L"it" , L"IT" , 28605 , 0x0410 }, /* ita.nls */
+ { L"it-CH" , L"it" , L"CH" , 28605 , 0x0810 }, /* its.nls */
+ { L"ja-JP" , L"ja" , L"JP" , 20932 , 0x0411 }, /* jpn.nls */
+ { L"kn-IN" , L"kn" , L"IN" , 65001 , 0x044b }, /* kan.nls */
+ { L"ka-GE" , L"ka" , L"GE" , 65001 , 0x0437 }, /* kat.nls */
+ { L"kk-KZ" , L"kk" , L"KZ" , 28595 , 0x043f }, /* kkz.nls */
+ { L"kok-IN" , L"kok" , L"IN" , 65001 , 0x0457 }, /* knk.nls */
+ { L"ko-KR" , L"ko" , L"KR" , 949 , 0x0412 }, /* kor.nls */
+ { L"ky-KG" , L"ky" , L"KG" , 28595 , 0x0440 }, /* kyr.nls */
+ { L"lt-LT" , L"lt" , L"LT" , 28603 , 0x0427 }, /* lth.nls */
+ { L"lv-LV" , L"lv" , L"LV" , 28603 , 0x0426 }, /* lvi.nls */
+ { L"mr-IN" , L"mr" , L"IN" , 65001 , 0x044e }, /* mar.nls */
+ { L"mk-MK" , L"mk" , L"MK" , 28595 , 0x042f }, /* mki.nls */
+ { L"mn-MN" , L"mn" , L"MN" , 28595 , 0x0450 }, /* mon.nls */
+ { L"ms-BN" , L"ms" , L"BN" , 28591 , 0x083e }, /* msb.nls */
+ { L"ms-MY" , L"ms" , L"MY" , 28591 , 0x043e }, /* msl.nls */
+ { L"nl-BE" , L"nl" , L"BE" , 28605 , 0x0813 }, /* nlb.nls */
+ { L"nl-N" , L"nl" , L"N" , 28605 , 0x0413 }, /* nld.nls */
+ { L"nl-SR" , L"nl" , L"SR" , 28605 , 0x0c13 }, /* nls.nls */
+ { L"nn-NO" , L"nn" , L"NO" , 28605 , 0x0814 }, /* non.nls */
+ { L"nb-NO" , L"nb" , L"NO" , 28605 , 0x0414 }, /* nor.nls */
+ { L"pa-IN" , L"pa" , L"IN" , 65001 , 0x0446 }, /* pan.nls */
+ { L"pl-P" , L"pl" , L"P" , 28592 , 0x0415 }, /* plk.nls */
+ { L"pt-BR" , L"pt" , L"BR" , 28591 , 0x0416 }, /* ptb.nls */
+ { L"pt-PT" , L"pt" , L"PT" , 28605 , 0x0816 }, /* ptg.nls */
+ { L"rm-CH" , L"rm" , L"CH" , 28605 , 0x0417 }, /* rmc.nls */
+ { L"ro-RO" , L"ro" , L"RO" , 28592 , 0x0418 }, /* rom.nls */
+ { L"ru-RU" , L"ru" , L"RU" , 20866 , 0x0419 }, /* rus.nls */
+ { L"sa-IN" , L"sa" , L"IN" , 65001 , 0x044f }, /* san.nls */
+ { L"sk-SK" , L"sk" , L"SK" , 28592 , 0x041b }, /* sky.nls */
+ { L"sl-SI" , L"sl" , L"SI" , 28592 , 0x0424 }, /* slv.nls */
+ { L"sq-A" , L"sq" , L"A" , 28592 , 0x041c }, /* sqi.nls */
+ { L"sr-SP" , L"sr" , L"SP" , 28595 , 0x0c1a }, /* srb.nls */
+ { L"sr-Latn-SP" , L"sr" , L"SP" , 28592 , 0x081a }, /* srl.nls */
+ { L"sv-SE" , L"sv" , L"SE" , 28605 , 0x041d }, /* sve.nls */
+ { L"sv-FI" , L"sv" , L"FI" , 28605 , 0x081d }, /* svf.nls */
+ { L"sw-KE" , L"sw" , L"KE" , 28591 , 0x0441 }, /* swk.nls */
+ { L"syr-SY" , L"syr" , L"SY" , 65001 , 0x045a }, /* syr.nls */
+ { L"ta-IN" , L"ta" , L"IN" , 65001 , 0x0449 }, /* tam.nls */
+ { L"te-IN" , L"te" , L"IN" , 65001 , 0x044a }, /* tel.nls */
+ { L"th-TH" , L"th" , L"TH" , 874 , 0x041e }, /* tha.nls */
+ { L"tr-TR" , L"tr" , L"TR" , 28599 , 0x041f }, /* trk.nls */
+ { L"tt-TA" , L"tt" , L"TA" , 28595 , 0x0444 }, /* ttt.nls */
+ { L"uk-UA" , L"uk" , L"UA" , 21866 , 0x0422 }, /* ukr.nls */
+ { L"ur-PK" , L"ur" , L"PK" , 1256 , 0x0420 }, /* urd.nls */
+ { L"uz-UZ" , L"uz" , L"UZ" , 28595 , 0x0843 }, /* uzb.nls */
+ { L"uz-Latn-UZ" , L"uz" , L"UZ" , 28605 , 0x0443 }, /* uzl.nls */
+ { L"vi-VN" , L"vi" , L"VN" , 1258 , 0x042a }, /* vit.nls */
+ { L"wa-BE" , L"wa" , L"BE" , 28605 , 0x0490 }, /* wal.nls */
+ { L"zh-HK" , L"zh" , L"HK" , 950 , 0x0c04 }, /* zhh.nls */
+ { L"zh-SG" , L"zh" , L"SG" , 936 , 0x1004 }, /* zhi.nls */
+ { L"zh-MO" , L"zh" , L"MO" , 950 , 0x1404 }, /* zhm.nls */
+ { 0 , 0 , 0 , 0, 0 }
+};
+
+/***********************************************************/
+WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch )
+{
+ do { if (*str == ch) return (WCHAR *)(ULONG_PTR)str; } while (*str++);
+ return NULL;
+}
+
+WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
+{
+ for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)(ULONG_PTR)str;
+ return NULL;
+}
+
+
+/***********************************************************/
+
+WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str )
+{
+ const WCHAR *s = str;
+ while (*s) s++;
+ return s - str;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src )
+{
+ WCHAR *p = dst;
+ while ((*p++ = *src++));
+ return dst;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src )
+{
+ strcpyW( dst + strlenW(dst), src );
+ return dst;
+}
+
+WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 )
+{
+ while (*str1 && (*str1 == *str2)) { str1++; str2++; }
+ return *str1 - *str2;
+}
+
+
+WINE_UNICODE_INLINE LPWSTR lstrcpynW( LPWSTR dst, LPCWSTR src, int n )
+{
+ {
+ LPWSTR d = dst;
+ LPCWSTR s = src;
+ UINT count = n;
+
+ while ((count > 1) && *s)
+ {
+ count--;
+ *d++ = *s++;
+ }
+ if (count) *d = 0;
+ }
+ return dst;
+}
+
+/* Copy Ascii string to Unicode without using codepages */
+static inline void strcpynAtoW( WCHAR *dst, const char *src, size_t n )
+{
+ while (n > 1 && *src)
+ {
+ *dst++ = (unsigned char)*src++;
+ n--;
+ }
+ if (n) *dst = 0;
+}
+
+/*******************************************************/
+
+/* Charset to codepage map, sorted by name. */
+static const struct charset_entry
+{
+ const char *charset_name;
+ UINT codepage;
+} charset_names[] =
+{
+ { "BIG5", 950 },
+ { "CP1250", 1250 },
+ { "CP1251", 1251 },
+ { "CP1252", 1252 },
+ { "CP1253", 1253 },
+ { "CP1254", 1254 },
+ { "CP1255", 1255 },
+ { "CP1256", 1256 },
+ { "CP1257", 1257 },
+ { "CP1258", 1258 },
+ { "CP932", 932 },
+ { "CP936", 936 },
+ { "CP949", 949 },
+ { "CP950", 950 },
+ { "EUCJP", 20932 },
+ { "GB2312", 936 },
+ { "IBM037", 37 },
+ { "IBM1026", 1026 },
+ { "IBM424", 424 },
+ { "IBM437", 437 },
+ { "IBM500", 500 },
+ { "IBM850", 850 },
+ { "IBM852", 852 },
+ { "IBM855", 855 },
+ { "IBM857", 857 },
+ { "IBM860", 860 },
+ { "IBM861", 861 },
+ { "IBM862", 862 },
+ { "IBM863", 863 },
+ { "IBM864", 864 },
+ { "IBM865", 865 },
+ { "IBM866", 866 },
+ { "IBM869", 869 },
+ { "IBM874", 874 },
+ { "IBM875", 875 },
+ { "ISO88591", 28591 },
+ { "ISO885910", 28600 },
+ { "ISO885913", 28603 },
+ { "ISO885914", 28604 },
+ { "ISO885915", 28605 },
+ { "ISO885916", 28606 },
+ { "ISO88592", 28592 },
+ { "ISO88593", 28593 },
+ { "ISO88594", 28594 },
+ { "ISO88595", 28595 },
+ { "ISO88596", 28596 },
+ { "ISO88597", 28597 },
+ { "ISO88598", 28598 },
+ { "ISO88599", 28599 },
+ { "KOI8R", 20866 },
+ { "KOI8U", 21866 },
+ { "UTF8", CP_UTF8 }
+};
+
+static int charset_cmp( const void *name, const void *entry )
+{
+ const struct charset_entry *charset = (const struct charset_entry *)entry;
+ return strcasecmp( (const char *)name, charset->charset_name );
+}
+
+static UINT find_charset( const WCHAR *name )
+{
+ const struct charset_entry *entry;
+ char charset_name[16];
+ size_t i, j;
+
+ /* remove punctuation characters from charset name */
+ for (i = j = 0; name[i] && j < sizeof(charset_name)-1; i++)
+ if (isalnum((unsigned char)name[i])) charset_name[j++] = name[i];
+ charset_name[j] = 0;
+
+ entry = (const struct charset_entry *)bsearch( charset_name, charset_names,
+ sizeof(charset_names)/sizeof(charset_names[0]),
+ sizeof(charset_names[0]), charset_cmp );
+ if (entry) return entry->codepage;
+
+ return 0;
+}
+/*******************************************************/
+
+static BOOL find_locale_id_callback(/* LPCWSTR name, ? */ const t_info * tab, struct locale_name *data)
+{
+ // WCHAR buffer[128];
+ int matches = 0;
+ WORD LangID = tab->LOCALE_ILANGUAGE & 0xFFFF; /* FIXME */
+ LCID lcid = MAKELCID( LangID, SORT_DEFAULT ); /* FIXME: handle sort order */
+
+ if (PRIMARYLANGID(LangID) == LANG_NEUTRAL) return TRUE; /* continue search */
+
+ /* first check exact name */
+ if (data->win_name[0] && tab->LOCALE_SNAME[0])
+ /* GetLocaleInfoW( lcid, LOCALE_SNAME | LOCALE_NOUSEROVERRIDE,
+ buffer, sizeof(buffer)/sizeof(WCHAR) )) */
+ {
+ if (!strcmpW( data->win_name, tab->LOCALE_SNAME ))
+ {
+ matches = 4; /* everything matches */
+ goto done;
+ }
+ }
+
+ /*if (!GetLocaleInfoW( lcid, LOCALE_SISO639LANGNAME | LOCALE_NOUSEROVERRIDE,
+ buffer, sizeof(buffer)/sizeof(WCHAR) )) */
+ if (tab->LOCALE_SISO639LANGNAME[0] == 0)
+ return TRUE;
+
+ if (strcmpW( tab->LOCALE_SISO639LANGNAME , data->lang )) return TRUE;
+ matches++; /* language name matched */
+
+ if (data->country)
+ {
+ /* if (GetLocaleInfoW( lcid, LOCALE_SISO3166CTRYNAME|LOCALE_NOUSEROVERRIDE,
+ buffer, sizeof(buffer)/sizeof(WCHAR) )) */
+ if (tab->LOCALE_SISO3166CTRYNAME[0])
+ {
+ if (strcmpW(tab->LOCALE_SISO3166CTRYNAME , data->country )) goto done;
+ matches++; /* country name matched */
+ }
+ }
+ else /* match default language */
+ {
+ if (SUBLANGID(LangID) == SUBLANG_DEFAULT) matches++;
+ }
+
+ if (data->codepage)
+ {
+ UINT unix_cp;
+ /* if (GetLocaleInfoW( lcid, LOCALE_IDEFAULTUNIXCODEPAGE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&unix_cp, sizeof(unix_cp)/sizeof(WCHAR) )) */
+ unix_cp = tab->LOCALE_IDEFAULTUNIXCODEPAGE;
+ {
+ if (unix_cp == data->codepage) matches++;
+ }
+ }
+
+ /* FIXME: check sort order */
+
+done:
+ if (matches > data->matches)
+ {
+ data->lcid = lcid;
+ data->matches = matches;
+ }
+ return (data->matches < 4); /* no need to continue for perfect match */
+}
+
+
+/***********************************************************************
+ * parse_locale_name
+ *
+ * Parse a locale name into a struct locale_name, handling both Windows and Unix formats.
+ * Unix format is: lang[_country][.charset][@modifier]
+ * Windows format is: lang[-script][-country][_modifier]
+ */
+static void parse_locale_name( const WCHAR *str, struct locale_name *name )
+{
+ static const WCHAR sepW[] = {'-','_','.','@',0};
+ static const WCHAR winsepW[] = {'-','_',0};
+ static const WCHAR posixW[] = {'P','O','S','I','X',0};
+ static const WCHAR cW[] = {'C',0};
+ static const WCHAR latinW[] = {'l','a','t','i','n',0};
+ static const WCHAR latnW[] = {'-','L','a','t','n',0};
+ WCHAR *p;
+ int ind;
+
+ // TRACE("%s\n", debugstr_w(str));
+
+ name->country = name->charset = name->script = name->modifier = NULL;
+ name->lcid = MAKELCID( MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT), SORT_DEFAULT );
+ name->matches = 0;
+ name->codepage = 0;
+ name->win_name[0] = 0;
+ lstrcpynW( name->lang, str, sizeof(name->lang)/sizeof(WCHAR) );
+
+ if (!(p = strpbrkW( name->lang, sepW )))
+ {
+ if (!strcmpW( name->lang, posixW ) || !strcmpW( name->lang, cW ))
+ {
+ name->matches = 4; /* perfect match for default English lcid */
+ return;
+ }
+ strcpyW( name->win_name, name->lang );
+ }
+ else if (*p == '-') /* Windows format */
+ {
+ strcpyW( name->win_name, name->lang );
+ *p++ = 0;
+ name->country = p;
+ if (!(p = strpbrkW( p, winsepW ))) goto done;
+ if (*p == '-')
+ {
+ *p++ = 0;
+ name->script = name->country;
+ name->country = p;
+ if (!(p = strpbrkW( p, winsepW ))) goto done;
+ }
+ *p++ = 0;
+ name->modifier = p;
+ }
+ else /* Unix format */
+ {
+ if (*p == '_')
+ {
+ *p++ = 0;
+ name->country = p;
+ p = strpbrkW( p, sepW + 2 );
+ }
+ if (p && *p == '.')
+ {
+ *p++ = 0;
+ name->charset = p;
+ p = strchrW( p, '@' );
+ }
+ if (p)
+ {
+ *p++ = 0;
+ name->modifier = p;
+ }
+
+ if (name->charset)
+ name->codepage = find_charset( name->charset );
+
+ /* rebuild a Windows name if possible */
+
+ if (name->charset) goto done; /* can't specify charset in Windows format */
+ if (name->modifier && strcmpW( name->modifier, latinW ))
+ goto done; /* only Latn script supported for now */
+ strcpyW( name->win_name, name->lang );
+ if (name->modifier) strcatW( name->win_name, latnW );
+ if (name->country)
+ {
+ p = name->win_name + strlenW(name->win_name);
+ *p++ = '-';
+ strcpyW( p, name->country );
+ }
+ }
+done:
+ ;
+
+/* DEBUG
+ printf("EnumResourceLanguagesW(...):\n");
+ printf(" name->win_name=%ls\n", name->win_name);
+ printf(" name->lang=%ls\n", name->lang);
+ printf(" name->country=%ls\n", name->country);
+ printf(" name->codepage=%d\n", name->codepage);
+*/
+// EnumResourceLanguagesW( kernel32_handle, (LPCWSTR)RT_STRING, (LPCWSTR)LOCALE_ILANGUAGE,
+// find_locale_id_callback, (LPARAM)name );
+
+ ind = 0;
+ while (g_langInfo[ind].LOCALE_SNAME)
+ {
+ BOOL ret = find_locale_id_callback(&g_langInfo[ind],name);
+ if (ret == FALSE)
+ break;
+
+ ind++;
+ }
+}
+
+
+
+
+/********************************/
+
+static UINT setup_unix_locales(void)
+{
+ struct locale_name locale_name;
+ // WCHAR buffer[128];
+ WCHAR ctype_buff[128];
+ char *locale;
+ UINT unix_cp = 0;
+
+ if ((locale = setlocale( LC_CTYPE, NULL )))
+ {
+ strcpynAtoW( ctype_buff, locale, sizeof(ctype_buff)/sizeof(WCHAR) );
+ parse_locale_name( ctype_buff, &locale_name );
+ lcid_LC_CTYPE = locale_name.lcid;
+ unix_cp = locale_name.codepage;
+ }
+ if (!lcid_LC_CTYPE) /* this one needs a default value */
+ lcid_LC_CTYPE = MAKELCID( MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT), SORT_DEFAULT );
+
+#if 0
+ TRACE( "got lcid %04x (%d matches) for LC_CTYPE=%s\n",
+ locale_name.lcid, locale_name.matches, debugstr_a(locale) );
+
+#define GET_UNIX_LOCALE(cat) do \
+ if ((locale = setlocale( cat, NULL ))) \
+ { \
+ strcpynAtoW( buffer, locale, sizeof(buffer)/sizeof(WCHAR) ); \
+ if (!strcmpW( buffer, ctype_buff )) lcid_##cat = lcid_LC_CTYPE; \
+ else { \
+ parse_locale_name( buffer, &locale_name ); \
+ lcid_##cat = locale_name.lcid; \
+ TRACE( "got lcid %04x (%d matches) for " #cat "=%s\n", \
+ locale_name.lcid, locale_name.matches, debugstr_a(locale) ); \
+ } \
+ } while (0)
+
+ GET_UNIX_LOCALE( LC_COLLATE );
+ GET_UNIX_LOCALE( LC_MESSAGES );
+ GET_UNIX_LOCALE( LC_MONETARY );
+ GET_UNIX_LOCALE( LC_NUMERIC );
+ GET_UNIX_LOCALE( LC_TIME );
+#ifdef LC_PAPER
+ GET_UNIX_LOCALE( LC_PAPER );
+#endif
+#ifdef LC_MEASUREMENT
+ GET_UNIX_LOCALE( LC_MEASUREMENT );
+#endif
+#ifdef LC_TELEPHONE
+ GET_UNIX_LOCALE( LC_TELEPHONE );
+#endif
+
+#undef GET_UNIX_LOCALE
+
+#endif // #if 0
+
+ return unix_cp;
+}
+
+/********************************/
+
+static void LOCALE_Init(void)
+{
+ /*
+ extern void __wine_init_codepages( const union cptable *ansi_cp, const union cptable *oem_cp,
+ const union cptable *unix_cp );
+ */
+
+ // UINT ansi_cp = 1252, oem_cp = 437, mac_cp = 10000, unix_cp;
+ UINT unix_cp = 0;
+
+#ifdef __APPLE__
+ /* MacOS doesn't set the locale environment variables so we have to do it ourselves */
+ CFArrayRef preferred_locales, all_locales;
+ CFStringRef user_language_string_ref = NULL;
+ char user_locale[50];
+
+ CFLocaleRef user_locale_ref = CFLocaleCopyCurrent();
+ CFStringRef user_locale_string_ref = CFLocaleGetIdentifier( user_locale_ref );
+
+ CFStringGetCString( user_locale_string_ref, user_locale, sizeof(user_locale), kCFStringEncodingUTF8 );
+ CFRelease( user_locale_ref );
+ if (!strchr( user_locale, '.' )) strcat( user_locale, ".UTF-8" );
+ unix_cp = CP_UTF8; /* default to utf-8 even if we don't get a valid locale */
+ setenv( "LANG", user_locale, 0 );
+ // TRACE( "setting locale to '%s'\n", user_locale );
+
+ /* We still want to set the retrieve the preferred language as chosen in
+ System Preferences.app, because it can differ from CFLocaleCopyCurrent().
+ */
+ all_locales = CFLocaleCopyAvailableLocaleIdentifiers();
+ preferred_locales = CFBundleCopyLocalizationsForPreferences( all_locales, NULL );
+ if (preferred_locales && CFArrayGetCount( preferred_locales ))
+ user_language_string_ref = (CFStringRef)CFArrayGetValueAtIndex( preferred_locales, 0 ); // FIXME
+ CFRelease( all_locales );
+#endif /* __APPLE__ */
+
+ // FIXME setlocale( LC_ALL, "" );
+
+ unix_cp = setup_unix_locales();
+ if (!lcid_LC_MESSAGES) lcid_LC_MESSAGES = lcid_LC_CTYPE;
+
+#ifdef __APPLE__
+ /* Override lcid_LC_MESSAGES with user_language if LC_MESSAGES is set to default */
+ if (lcid_LC_MESSAGES == lcid_LC_CTYPE && user_language_string_ref)
+ {
+ struct locale_name locale_name;
+ WCHAR buffer[128];
+ CFStringGetCString( user_language_string_ref, user_locale, sizeof(user_locale), kCFStringEncodingUTF8 );
+ strcpynAtoW( buffer, user_locale, sizeof(buffer)/sizeof(WCHAR) );
+ parse_locale_name( buffer, &locale_name );
+ lcid_LC_MESSAGES = locale_name.lcid;
+ // TRACE( "setting lcid_LC_MESSAGES to '%s'\n", user_locale );
+ }
+ if (preferred_locales)
+ CFRelease( preferred_locales );
+#endif
+
+#if 0 // FIXME
+ NtSetDefaultUILanguage( LANGIDFROMLCID(lcid_LC_MESSAGES) );
+ NtSetDefaultLocale( TRUE, lcid_LC_MESSAGES );
+ NtSetDefaultLocale( FALSE, lcid_LC_CTYPE );
+
+ ansi_cp = get_lcid_codepage( LOCALE_USER_DEFAULT );
+ GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTMACCODEPAGE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&mac_cp, sizeof(mac_cp)/sizeof(WCHAR) );
+ GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&oem_cp, sizeof(oem_cp)/sizeof(WCHAR) );
+ if (!unix_cp)
+ GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTUNIXCODEPAGE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&unix_cp, sizeof(unix_cp)/sizeof(WCHAR) );
+
+ if (!(ansi_cptable = wine_cp_get_table( ansi_cp )))
+ ansi_cptable = wine_cp_get_table( 1252 );
+ if (!(oem_cptable = wine_cp_get_table( oem_cp )))
+ oem_cptable = wine_cp_get_table( 437 );
+ if (!(mac_cptable = wine_cp_get_table( mac_cp )))
+ mac_cptable = wine_cp_get_table( 10000 );
+ if (unix_cp != CP_UTF8)
+ {
+ if (!(unix_cptable = wine_cp_get_table( unix_cp )))
+ unix_cptable = wine_cp_get_table( 28591 );
+ }
+
+ __wine_init_codepages( ansi_cptable, oem_cptable, unix_cptable );
+
+ TRACE( "ansi=%03d oem=%03d mac=%03d unix=%03d\n",
+ ansi_cptable->info.codepage, oem_cptable->info.codepage,
+ mac_cptable->info.codepage, unix_cp );
+
+ setlocale(LC_NUMERIC, "C"); /* FIXME: oleaut32 depends on this */
+#endif
+}
+
+LANGID GetUserDefaultLangID(void)
+{
+ // return LANGIDFROMLCID(GetUserDefaultLCID());
+ if (lcid_LC_MESSAGES == 0) LOCALE_Init();
+ return LANGIDFROMLCID(lcid_LC_MESSAGES);
+}
+
+LANGID GetSystemDefaultLangID(void)
+{
+ // return LANGIDFROMLCID(GetSystemDefaultLCID());
+ if (lcid_LC_MESSAGES == 0) LOCALE_Init();
+ return LANGIDFROMLCID(lcid_LC_MESSAGES);
+}
+
+#ifdef TEST
+int main()
+{
+ LANGID langID;
+ WORD primLang;
+ WORD subLang;
+
+ setlocale( LC_ALL, "" );
+
+ langID = GetUserDefaultLangID();
+ printf("langID=0x%x\n",langID);
+
+ primLang = (WORD)(PRIMARYLANGID(langID));
+ subLang = (WORD)(SUBLANGID(langID));
+
+ printf("primLang=%d subLang=%d\n",(unsigned)primLang,(unsigned)subLang);
+
+ return 0;
+}
+#endif
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_date_and_time.cpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_date_and_time.cpp?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_date_and_time.cpp (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/CPP/myWindows/wine_date_and_time.cpp Sun Dec 16 23:23:25 2012
@@ -0,0 +1,434 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h> /* gettimeofday */
+#include <dirent.h>
+#include <unistd.h>
+#include <time.h>
+
+#include <windows.h>
+
+// #define TRACEN(u) u;
+#define TRACEN(u) /* */
+
+typedef LONG NTSTATUS;
+#define STATUS_SUCCESS 0x00000000
+
+#define TICKSPERSEC 10000000
+#define TICKSPERMSEC 10000
+#define SECSPERDAY 86400
+#define SECSPERHOUR 3600
+#define SECSPERMIN 60
+#define MINSPERHOUR 60
+#define HOURSPERDAY 24
+#define EPOCHWEEKDAY 1 /* Jan 1, 1601 was Monday */
+#define DAYSPERWEEK 7
+#define EPOCHYEAR 1601
+#define DAYSPERNORMALYEAR 365
+#define DAYSPERLEAPYEAR 366
+#define MONSPERYEAR 12
+#define DAYSPERQUADRICENTENNIUM (365 * 400 + 97)
+#define DAYSPERNORMALCENTURY (365 * 100 + 24)
+#define DAYSPERNORMALQUADRENNIUM (365 * 4 + 1)
+
+/* 1601 to 1970 is 369 years plus 89 leap days */
+#define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
+#define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
+/* 1601 to 1980 is 379 years plus 91 leap days */
+#define SECS_1601_TO_1980 ((379 * 365 + 91) * (ULONGLONG)SECSPERDAY)
+#define TICKS_1601_TO_1980 (SECS_1601_TO_1980 * TICKSPERSEC)
+typedef short CSHORT;
+
+static LONG TIME_GetBias() {
+ time_t utc = time(NULL);
+ struct tm *ptm = localtime(&utc);
+ int localdaylight = ptm->tm_isdst; /* daylight for local timezone */
+ ptm = gmtime(&utc);
+ ptm->tm_isdst = localdaylight; /* use local daylight, not that of Greenwich */
+ LONG bias = (int)(mktime(ptm)-utc);
+ TRACEN((printf("TIME_GetBias %ld\n",(long)bias)))
+ return bias;
+}
+
+static inline void RtlSystemTimeToLocalTime( const LARGE_INTEGER *SystemTime,
+ LARGE_INTEGER *LocalTime ) {
+ LONG bias = TIME_GetBias();
+ LocalTime->QuadPart = SystemTime->QuadPart - bias * (LONGLONG)TICKSPERSEC;
+}
+
+void WINAPI RtlSecondsSince1970ToFileTime( DWORD Seconds, FILETIME * ft ) {
+ ULONGLONG secs = Seconds * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
+ ft->dwLowDateTime = (DWORD)secs;
+ ft->dwHighDateTime = (DWORD)(secs >> 32);
+ TRACEN((printf("RtlSecondsSince1970ToFileTime %lx => %lx %lx\n",(long)Seconds,(long)ft->dwHighDateTime,(long)ft->dwLowDateTime)))
+}
+
+/*
+void WINAPI RtlSecondsSince1970ToTime( DWORD Seconds, LARGE_INTEGER *Time )
+{
+ ULONGLONG secs = Seconds * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
+ // Time->u.LowPart = (DWORD)secs; Time->u.HighPart = (DWORD)(secs >> 32);
+ Time->QuadPart = secs;
+}
+ */
+
+BOOL WINAPI DosDateTimeToFileTime( WORD fatdate, WORD fattime, FILETIME * ft)
+{
+ struct tm newtm;
+#ifndef ENV_HAVE_TIMEGM
+ struct tm *gtm;
+ time_t time1, time2;
+#endif
+
+ TRACEN((printf("DosDateTimeToFileTime\n")))
+
+ newtm.tm_sec = (fattime & 0x1f) * 2;
+ newtm.tm_min = (fattime >> 5) & 0x3f;
+ newtm.tm_hour = (fattime >> 11);
+ newtm.tm_mday = (fatdate & 0x1f);
+ newtm.tm_mon = ((fatdate >> 5) & 0x0f) - 1;
+ newtm.tm_year = (fatdate >> 9) + 80;
+ newtm.tm_isdst = -1;
+#ifdef ENV_HAVE_TIMEGM
+ RtlSecondsSince1970ToFileTime( timegm(&newtm), ft );
+#else
+ newtm.tm_isdst = 0;
+ time1 = mktime(&newtm);
+ gtm = gmtime(&time1);
+ time2 = mktime(gtm);
+ RtlSecondsSince1970ToFileTime( 2*time1-time2, ft );
+#endif
+ TRACEN((printf("DosDateTimeToFileTime(%ld,%ld) => %lx %lx\n",
+ (long)fatdate,(long)fattime,
+ (long)ft->dwHighDateTime,(long)ft->dwLowDateTime)))
+
+ return TRUE;
+}
+
+/*
+BOOL WINAPI DosDateTimeToFileTime( WORD fatdate, WORD fattime, FILETIME * ft) {
+ struct tm newtm;
+
+ TRACEN((printf("DosDateTimeToFileTime\n")))
+
+ memset(&newtm,0,sizeof(newtm));
+ newtm.tm_sec = (fattime & 0x1f) * 2;
+ newtm.tm_min = (fattime >> 5) & 0x3f;
+ newtm.tm_hour = (fattime >> 11);
+ newtm.tm_mday = (fatdate & 0x1f);
+ newtm.tm_mon = ((fatdate >> 5) & 0x0f) - 1;
+ newtm.tm_year = (fatdate >> 9) + 80;
+ newtm.tm_isdst = -1;
+
+ time_t time1 = mktime(&newtm);
+ LONG bias = TIME_GetBias();
+ RtlSecondsSince1970ToFileTime( time1 - bias, ft );
+
+
+ TRACEN((printf("DosDateTimeToFileTime(%ld,%ld) t1=%ld => %lx %lx\n",
+ (long)fatdate,(long)fattime,(long)time1,
+ (long)ft->dwHighDateTime,(long)ft->dwLowDateTime)))
+
+ return TRUE;
+}
+*/
+
+BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *Time, DWORD *Seconds ) {
+ ULONGLONG tmp = Time->QuadPart;
+ TRACEN((printf("RtlTimeToSecondsSince1970-1 %llx\n",tmp)))
+ tmp /= TICKSPERSEC;
+ tmp -= SECS_1601_TO_1970;
+ TRACEN((printf("RtlTimeToSecondsSince1970-2 %llx\n",tmp)))
+ if (tmp > 0xffffffff) return FALSE;
+ *Seconds = (DWORD)tmp;
+ return TRUE;
+}
+
+BOOL WINAPI FileTimeToDosDateTime( const FILETIME *ft, WORD *fatdate, WORD *fattime ) {
+ LARGE_INTEGER li;
+ ULONG t;
+ time_t unixtime;
+ struct tm* tm;
+ WORD fat_d,fat_t;
+
+ TRACEN((printf("FileTimeToDosDateTime\n")))
+ li.QuadPart = ft->dwHighDateTime;
+ li.QuadPart = (li.QuadPart << 32) | ft->dwLowDateTime;
+ RtlTimeToSecondsSince1970( &li, &t );
+ unixtime = t; /* unixtime = t; * FIXME unixtime = t - TIME_GetBias(); */
+
+ tm = gmtime( &unixtime );
+
+ fat_t = (tm->tm_hour << 11) + (tm->tm_min << 5) + (tm->tm_sec / 2);
+ fat_d = ((tm->tm_year - 80) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday;
+ if (fattime)
+ *fattime = fat_t;
+ if (fatdate)
+ *fatdate = fat_d;
+
+ TRACEN((printf("FileTimeToDosDateTime : %lx %lx => %d %d\n",
+ (long)ft->dwHighDateTime,(long)ft->dwLowDateTime,(unsigned)fat_d,(unsigned)fat_t)))
+
+ return TRUE;
+}
+
+BOOL WINAPI FileTimeToLocalFileTime( const FILETIME *utcft, FILETIME * localft ) {
+ LARGE_INTEGER local, utc;
+
+ TRACEN((printf("FileTimeToLocalFileTime\n")))
+ utc.QuadPart = utcft->dwHighDateTime;
+ utc.QuadPart = (utc.QuadPart << 32) | utcft->dwLowDateTime;
+ RtlSystemTimeToLocalTime( &utc, &local );
+ localft->dwLowDateTime = (DWORD)local.QuadPart;
+ localft->dwHighDateTime = (DWORD)(local.QuadPart >> 32);
+
+ return TRUE;
+}
+
+typedef struct _TIME_FIELDS {
+ CSHORT Year;
+ CSHORT Month;
+ CSHORT Day;
+ CSHORT Hour;
+ CSHORT Minute;
+ CSHORT Second;
+ CSHORT Milliseconds;
+ CSHORT Weekday;
+} TIME_FIELDS;
+
+static const int MonthLengths[2][MONSPERYEAR] =
+{
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
+ { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+};
+
+static inline int IsLeapYear(int Year) {
+ return Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0) ? 1 : 0;
+}
+
+static inline VOID WINAPI RtlTimeToTimeFields(
+ const LARGE_INTEGER *liTime,
+ TIME_FIELDS * TimeFields) {
+ int SecondsInDay;
+ long int cleaps, years, yearday, months;
+ long int Days;
+ LONGLONG Time;
+
+ /* Extract millisecond from time and convert time into seconds */
+ TimeFields->Milliseconds =
+ (CSHORT) (( liTime->QuadPart % TICKSPERSEC) / TICKSPERMSEC);
+ Time = liTime->QuadPart / TICKSPERSEC;
+
+ /* The native version of RtlTimeToTimeFields does not take leap seconds
+ * into account */
+
+ /* Split the time into days and seconds within the day */
+ Days = Time / SECSPERDAY;
+ SecondsInDay = Time % SECSPERDAY;
+
+ /* compute time of day */
+ TimeFields->Hour = (CSHORT) (SecondsInDay / SECSPERHOUR);
+ SecondsInDay = SecondsInDay % SECSPERHOUR;
+ TimeFields->Minute = (CSHORT) (SecondsInDay / SECSPERMIN);
+ TimeFields->Second = (CSHORT) (SecondsInDay % SECSPERMIN);
+
+ /* compute day of week */
+ TimeFields->Weekday = (CSHORT) ((EPOCHWEEKDAY + Days) % DAYSPERWEEK);
+
+ /* compute year, month and day of month. */
+ cleaps=( 3 * ((4 * Days + 1227) / DAYSPERQUADRICENTENNIUM) + 3 ) / 4;
+ Days += 28188 + cleaps;
+ years = (20 * Days - 2442) / (5 * DAYSPERNORMALQUADRENNIUM);
+ yearday = Days - (years * DAYSPERNORMALQUADRENNIUM)/4;
+ months = (64 * yearday) / 1959;
+ /* the result is based on a year starting on March.
+ * To convert take 12 from Januari and Februari and
+ * increase the year by one. */
+ if( months < 14 ) {
+ TimeFields->Month = months - 1;
+ TimeFields->Year = years + 1524;
+ } else {
+ TimeFields->Month = months - 13;
+ TimeFields->Year = years + 1525;
+ }
+ /* calculation of day of month is based on the wonderful
+ * sequence of INT( n * 30.6): it reproduces the
+ * 31-30-31-30-31-31 month lengths exactly for small n's */
+ TimeFields->Day = yearday - (1959 * months) / 64 ;
+}
+
+
+BOOL WINAPI FileTimeToSystemTime( const FILETIME *ft, SYSTEMTIME * syst ) {
+ TIME_FIELDS tf;
+ LARGE_INTEGER t;
+
+ TRACEN((printf("FileTimeToSystemTime\n")))
+ t.QuadPart = ft->dwHighDateTime;
+ t.QuadPart = (t.QuadPart << 32) | ft->dwLowDateTime;
+ RtlTimeToTimeFields(&t, &tf);
+
+ syst->wYear = tf.Year;
+ syst->wMonth = tf.Month;
+ syst->wDay = tf.Day;
+ syst->wHour = tf.Hour;
+ syst->wMinute = tf.Minute;
+ syst->wSecond = tf.Second;
+ syst->wMilliseconds = tf.Milliseconds;
+ syst->wDayOfWeek = tf.Weekday;
+ return TRUE;
+}
+
+
+static inline NTSTATUS WINAPI RtlLocalTimeToSystemTime( const LARGE_INTEGER *LocalTime,
+ LARGE_INTEGER *SystemTime) {
+
+ TRACEN((printf("RtlLocalTimeToSystemTime\n")))
+ LONG bias = TIME_GetBias();
+ SystemTime->QuadPart = LocalTime->QuadPart + bias * (LONGLONG)TICKSPERSEC;
+ return STATUS_SUCCESS;
+}
+
+BOOL WINAPI LocalFileTimeToFileTime( const FILETIME *localft, FILETIME * utcft ) {
+ LARGE_INTEGER local, utc;
+
+ TRACEN((printf("LocalFileTimeToFileTime\n")))
+ local.QuadPart = localft->dwHighDateTime;
+ local.QuadPart = (local.QuadPart << 32) | localft->dwLowDateTime;
+ RtlLocalTimeToSystemTime( &local, &utc );
+ utcft->dwLowDateTime = (DWORD)utc.QuadPart;
+ utcft->dwHighDateTime = (DWORD)(utc.QuadPart >> 32);
+
+ return TRUE;
+}
+
+/*********************************************************************
+ * GetSystemTime (KERNEL32.@)
+ *
+ * Get the current system time.
+ *
+ * RETURNS
+ * Nothing.
+ */
+VOID WINAPI GetSystemTime(SYSTEMTIME * systime) /* [O] Destination for current time */
+{
+ FILETIME ft;
+ LARGE_INTEGER t;
+
+ TRACEN((printf("GetSystemTime\n")))
+
+ struct timeval now;
+ gettimeofday( &now, 0 );
+ t.QuadPart = now.tv_sec * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
+ t.QuadPart += now.tv_usec * 10;
+
+ ft.dwLowDateTime = (DWORD)(t.QuadPart);
+ ft.dwHighDateTime = (DWORD)(t.QuadPart >> 32);
+ FileTimeToSystemTime(&ft, systime);
+}
+
+/******************************************************************************
+ * RtlTimeFieldsToTime [NTDLL.@]
+ *
+ * Convert a TIME_FIELDS structure into a time.
+ *
+ * PARAMS
+ * ftTimeFields [I] TIME_FIELDS structure to convert.
+ * Time [O] Destination for the converted time.
+ *
+ * RETURNS
+ * Success: TRUE.
+ * Failure: FALSE.
+ */
+static BOOLEAN WINAPI RtlTimeFieldsToTime(
+ TIME_FIELDS * tfTimeFields,
+ LARGE_INTEGER *Time)
+{
+ int month, year, cleaps, day;
+
+ TRACEN((printf("RtlTimeFieldsToTime\n")))
+
+ /* FIXME: normalize the TIME_FIELDS structure here */
+ /* No, native just returns 0 (error) if the fields are not */
+ if( tfTimeFields->Milliseconds< 0 || tfTimeFields->Milliseconds > 999 ||
+ tfTimeFields->Second < 0 || tfTimeFields->Second > 59 ||
+ tfTimeFields->Minute < 0 || tfTimeFields->Minute > 59 ||
+ tfTimeFields->Hour < 0 || tfTimeFields->Hour > 23 ||
+ tfTimeFields->Month < 1 || tfTimeFields->Month > 12 ||
+ tfTimeFields->Day < 1 ||
+ tfTimeFields->Day > MonthLengths
+ [ tfTimeFields->Month ==2 || IsLeapYear(tfTimeFields->Year)]
+ [ tfTimeFields->Month - 1] ||
+ tfTimeFields->Year < 1601 )
+ return FALSE;
+
+ /* now calculate a day count from the date
+ * First start counting years from March. This way the leap days
+ * are added at the end of the year, not somewhere in the middle.
+ * Formula's become so much less complicate that way.
+ * To convert: add 12 to the month numbers of Jan and Feb, and
+ * take 1 from the year */
+ if(tfTimeFields->Month < 3) {
+ month = tfTimeFields->Month + 13;
+ year = tfTimeFields->Year - 1;
+ } else {
+ month = tfTimeFields->Month + 1;
+ year = tfTimeFields->Year;
+ }
+ cleaps = (3 * (year / 100) + 3) / 4; /* nr of "century leap years"*/
+ day = (36525 * year) / 100 - cleaps + /* year * dayperyr, corrected */
+ (1959 * month) / 64 + /* months * daypermonth */
+ tfTimeFields->Day - /* day of the month */
+ 584817 ; /* zero that on 1601-01-01 */
+ /* done */
+
+ Time->QuadPart = (((((LONGLONG) day * HOURSPERDAY +
+ tfTimeFields->Hour) * MINSPERHOUR +
+ tfTimeFields->Minute) * SECSPERMIN +
+ tfTimeFields->Second ) * 1000 +
+ tfTimeFields->Milliseconds ) * TICKSPERMSEC;
+
+ return TRUE;
+}
+
+/*********************************************************************
+ * SystemTimeToFileTime (KERNEL32.@)
+ */
+BOOL WINAPI SystemTimeToFileTime( const SYSTEMTIME *syst, FILETIME * ft ) {
+ TIME_FIELDS tf;
+ LARGE_INTEGER t;
+
+ TRACEN((printf("SystemTimeToFileTime\n")))
+
+ tf.Year = syst->wYear;
+ tf.Month = syst->wMonth;
+ tf.Day = syst->wDay;
+ tf.Hour = syst->wHour;
+ tf.Minute = syst->wMinute;
+ tf.Second = syst->wSecond;
+ tf.Milliseconds = syst->wMilliseconds;
+
+ RtlTimeFieldsToTime(&tf, &t);
+ ft->dwLowDateTime = (DWORD)t.QuadPart;
+ ft->dwHighDateTime = (DWORD)(t.QuadPart>>32);
+ return TRUE;
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/License.txt
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/License.txt?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/License.txt (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/License.txt Sun Dec 16 23:23:25 2012
@@ -0,0 +1,52 @@
+ 7-Zip source code
+ ~~~~~~~~~~~~~~~~~
+ License for use and distribution
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ 7-Zip Copyright (C) 1999-2010 Igor Pavlov.
+
+ Licenses for files are:
+
+ 1) CPP/7zip/Compress/Rar* files: GNU LGPL + unRAR restriction
+ 2) All other files: GNU LGPL
+
+ The GNU LGPL + unRAR restriction means that you must follow both
+ GNU LGPL rules and unRAR restriction rules.
+
+
+ GNU LGPL information
+ --------------------
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+ unRAR restriction
+ -----------------
+
+ The decompression engine for RAR archives was developed using source
+ code of unRAR program.
+ All copyrights to original unRAR code are owned by Alexander Roshal.
+
+ The license for original unRAR code has the following restriction:
+
+ The unRAR sources cannot be used to re-create the RAR compression algorithm,
+ which is proprietary. Distribution of modified unRAR sources in separate form
+ or as a part of other software is permitted, provided that it is clearly
+ stated in the documentation and source comments that the code may
+ not be used to develop a RAR (WinRAR) compatible archiver.
+
+
+ --
+ Igor Pavlov
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/Makefile?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/Makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/Makefile Sun Dec 16 23:23:25 2012
@@ -0,0 +1,272 @@
+LEVEL = ../../..
+
+include $(LEVEL)/Makefile.config
+
+PROG = 7zip-benchmark
+RUN_OPTIONS = b
+
+CFLAGS += -DBREAK_HANDLER -DUNICODE -D_UNICODE -I$(PROJ_SRC_DIR)/C \
+ -I$(PROJ_SRC_DIR)/CPP/myWindows -I$(PROJ_SRC_DIR)/CPP/include_windows \
+ -I$(PROJ_SRC_DIR)/CPP -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
+ -DNDEBUG -D_REENTRANT -DENV_UNIX -D_7ZIP_LARGE_PAGES
+
+CXXFLAGS += -DBREAK_HANDLER -DUNICODE -D_UNICODE -I$(PROJ_SRC_DIR)/C \
+ -I$(PROJ_SRC_DIR)/CPP/myWindows -I$(PROJ_SRC_DIR)/CPP/include_windows \
+ -I$(PROJ_SRC_DIR)/CPP -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
+ -DNDEBUG -D_REENTRANT -DENV_UNIX -D_7ZIP_LARGE_PAGES
+
+Source = \
+CPP/myWindows/myGetTickCount.cpp \
+CPP/myWindows/wine_date_and_time.cpp \
+CPP/myWindows/myAddExeFlag.cpp \
+CPP/myWindows/mySplitCommandLine.cpp \
+CPP/7zip/UI/Console/BenchCon.cpp \
+CPP/7zip/UI/Console/ConsoleClose.cpp \
+CPP/7zip/UI/Console/ExtractCallbackConsole.cpp \
+CPP/7zip/UI/Console/List.cpp \
+CPP/7zip/UI/Console/Main.cpp \
+CPP/7zip/UI/Console/MainAr.cpp \
+CPP/7zip/UI/Console/OpenCallbackConsole.cpp \
+CPP/7zip/UI/Console/PercentPrinter.cpp \
+CPP/7zip/UI/Console/UpdateCallbackConsole.cpp \
+CPP/7zip/UI/Console/UserInputUtils.cpp \
+CPP/Common/CommandLineParser.cpp \
+CPP/Common/CRC.cpp \
+CPP/Common/IntToString.cpp \
+CPP/Common/ListFileUtils.cpp \
+CPP/Common/StdInStream.cpp \
+CPP/Common/StdOutStream.cpp \
+CPP/Common/MyString.cpp \
+CPP/Common/StringConvert.cpp \
+CPP/Common/StringToInt.cpp \
+CPP/Common/UTFConvert.cpp \
+CPP/Common/MyWindows.cpp \
+CPP/Common/MyVector.cpp \
+CPP/Common/Wildcard.cpp \
+CPP/Windows/Error.cpp \
+CPP/Windows/FileDir.cpp \
+CPP/Windows/FileFind.cpp \
+CPP/Windows/FileIO.cpp \
+CPP/Windows/FileName.cpp \
+CPP/Windows/PropVariant.cpp \
+CPP/Windows/PropVariantConversions.cpp \
+CPP/Windows/Synchronization.cpp \
+CPP/Windows/System.cpp \
+CPP/Windows/Time.cpp \
+CPP/7zip/Common/CreateCoder.cpp \
+CPP/7zip/Common/CWrappers.cpp \
+CPP/7zip/Common/FilePathAutoRename.cpp \
+CPP/7zip/Common/FileStreams.cpp \
+CPP/7zip/Common/FilterCoder.cpp \
+CPP/7zip/Common/InBuffer.cpp \
+CPP/7zip/Common/InOutTempBuffer.cpp \
+CPP/7zip/Common/LimitedStreams.cpp \
+CPP/7zip/Common/LockedStream.cpp \
+CPP/7zip/Common/MemBlocks.cpp \
+CPP/7zip/Common/MethodId.cpp \
+CPP/7zip/Common/MethodProps.cpp \
+CPP/7zip/Common/OffsetStream.cpp \
+CPP/7zip/Common/OutBuffer.cpp \
+CPP/7zip/Common/OutMemStream.cpp \
+CPP/7zip/Common/ProgressMt.cpp \
+CPP/7zip/Common/ProgressUtils.cpp \
+CPP/7zip/Common/StreamBinder.cpp \
+CPP/7zip/Common/StreamObjects.cpp \
+CPP/7zip/Common/StreamUtils.cpp \
+CPP/7zip/Common/VirtThread.cpp \
+CPP/7zip/UI/Common/ArchiveCommandLine.cpp \
+CPP/7zip/UI/Common/ArchiveExtractCallback.cpp \
+CPP/7zip/UI/Common/ArchiveOpenCallback.cpp \
+CPP/7zip/UI/Common/Bench.cpp \
+CPP/7zip/UI/Common/DefaultName.cpp \
+CPP/7zip/UI/Common/EnumDirItems.cpp \
+CPP/7zip/UI/Common/Extract.cpp \
+CPP/7zip/UI/Common/ExtractingFilePath.cpp \
+CPP/7zip/UI/Common/LoadCodecs.cpp \
+CPP/7zip/UI/Common/OpenArchive.cpp \
+CPP/7zip/UI/Common/PropIDUtils.cpp \
+CPP/7zip/UI/Common/SetProperties.cpp \
+CPP/7zip/UI/Common/SortUtils.cpp \
+CPP/7zip/UI/Common/TempFiles.cpp \
+CPP/7zip/UI/Common/Update.cpp \
+CPP/7zip/UI/Common/UpdateAction.cpp \
+CPP/7zip/UI/Common/UpdateCallback.cpp \
+CPP/7zip/UI/Common/UpdatePair.cpp \
+CPP/7zip/UI/Common/UpdateProduce.cpp \
+CPP/7zip/Archive/Bz2Handler.cpp \
+CPP/7zip/Archive/DeflateProps.cpp \
+CPP/7zip/Archive/GzHandler.cpp \
+CPP/7zip/Archive/LzmaHandler.cpp \
+CPP/7zip/Archive/PpmdHandler.cpp \
+CPP/7zip/Archive/SplitHandler.cpp \
+CPP/7zip/Archive/XzHandler.cpp \
+CPP/7zip/Archive/ZHandler.cpp \
+CPP/7zip/Archive/Common/CoderMixer2.cpp \
+CPP/7zip/Archive/Common/CoderMixer2MT.cpp \
+CPP/7zip/Archive/Common/CrossThreadProgress.cpp \
+CPP/7zip/Archive/Common/DummyOutStream.cpp \
+CPP/7zip/Archive/Common/FindSignature.cpp \
+CPP/7zip/Archive/Common/HandlerOut.cpp \
+CPP/7zip/Archive/Common/InStreamWithCRC.cpp \
+CPP/7zip/Archive/Common/ItemNameUtils.cpp \
+CPP/7zip/Archive/Common/MultiStream.cpp \
+CPP/7zip/Archive/Common/OutStreamWithCRC.cpp \
+CPP/7zip/Archive/Common/ParseProperties.cpp \
+CPP/7zip/Archive/7z/7zCompressionMode.cpp \
+CPP/7zip/Archive/7z/7zDecode.cpp \
+CPP/7zip/Archive/7z/7zEncode.cpp \
+CPP/7zip/Archive/7z/7zExtract.cpp \
+CPP/7zip/Archive/7z/7zFolderInStream.cpp \
+CPP/7zip/Archive/7z/7zFolderOutStream.cpp \
+CPP/7zip/Archive/7z/7zHandler.cpp \
+CPP/7zip/Archive/7z/7zHandlerOut.cpp \
+CPP/7zip/Archive/7z/7zHeader.cpp \
+CPP/7zip/Archive/7z/7zIn.cpp \
+CPP/7zip/Archive/7z/7zOut.cpp \
+CPP/7zip/Archive/7z/7zProperties.cpp \
+CPP/7zip/Archive/7z/7zSpecStream.cpp \
+CPP/7zip/Archive/7z/7zUpdate.cpp \
+CPP/7zip/Archive/7z/7zRegister.cpp \
+CPP/7zip/Archive/Cab/CabBlockInStream.cpp \
+CPP/7zip/Archive/Cab/CabHandler.cpp \
+CPP/7zip/Archive/Cab/CabHeader.cpp \
+CPP/7zip/Archive/Cab/CabIn.cpp \
+CPP/7zip/Archive/Cab/CabRegister.cpp \
+CPP/7zip/Archive/Tar/TarHandler.cpp \
+CPP/7zip/Archive/Tar/TarHandlerOut.cpp \
+CPP/7zip/Archive/Tar/TarHeader.cpp \
+CPP/7zip/Archive/Tar/TarIn.cpp \
+CPP/7zip/Archive/Tar/TarOut.cpp \
+CPP/7zip/Archive/Tar/TarUpdate.cpp \
+CPP/7zip/Archive/Tar/TarRegister.cpp \
+CPP/7zip/Archive/Zip/ZipAddCommon.cpp \
+CPP/7zip/Archive/Zip/ZipHandler.cpp \
+CPP/7zip/Archive/Zip/ZipHandlerOut.cpp \
+CPP/7zip/Archive/Zip/ZipHeader.cpp \
+CPP/7zip/Archive/Zip/ZipIn.cpp \
+CPP/7zip/Archive/Zip/ZipItem.cpp \
+CPP/7zip/Archive/Zip/ZipOut.cpp \
+CPP/7zip/Archive/Zip/ZipUpdate.cpp \
+CPP/7zip/Archive/Zip/ZipRegister.cpp \
+CPP/7zip/Compress/Bcj2Coder.cpp \
+CPP/7zip/Compress/Bcj2Register.cpp \
+CPP/7zip/Compress/BcjCoder.cpp \
+CPP/7zip/Compress/BcjRegister.cpp \
+CPP/7zip/Compress/BitlDecoder.cpp \
+CPP/7zip/Compress/BranchCoder.cpp \
+CPP/7zip/Compress/BranchMisc.cpp \
+CPP/7zip/Compress/BranchRegister.cpp \
+CPP/7zip/Compress/ByteSwap.cpp \
+CPP/7zip/Compress/BZip2Crc.cpp \
+CPP/7zip/Compress/BZip2Decoder.cpp \
+CPP/7zip/Compress/BZip2Encoder.cpp \
+CPP/7zip/Compress/BZip2Register.cpp \
+CPP/7zip/Compress/CopyCoder.cpp \
+CPP/7zip/Compress/CopyRegister.cpp \
+CPP/7zip/Compress/Deflate64Register.cpp \
+CPP/7zip/Compress/DeflateDecoder.cpp \
+CPP/7zip/Compress/DeflateEncoder.cpp \
+CPP/7zip/Compress/DeflateRegister.cpp \
+CPP/7zip/Compress/DeltaFilter.cpp \
+CPP/7zip/Compress/ImplodeDecoder.cpp \
+CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp \
+CPP/7zip/Compress/Lzma2Decoder.cpp \
+CPP/7zip/Compress/Lzma2Encoder.cpp \
+CPP/7zip/Compress/Lzma2Register.cpp \
+CPP/7zip/Compress/LzmaDecoder.cpp \
+CPP/7zip/Compress/LzmaEncoder.cpp \
+CPP/7zip/Compress/LzmaRegister.cpp \
+CPP/7zip/Compress/LzOutWindow.cpp \
+CPP/7zip/Compress/Lzx86Converter.cpp \
+CPP/7zip/Compress/LzxDecoder.cpp \
+CPP/7zip/Compress/PpmdDecoder.cpp \
+CPP/7zip/Compress/PpmdEncoder.cpp \
+CPP/7zip/Compress/PpmdRegister.cpp \
+CPP/7zip/Compress/PpmdZip.cpp \
+CPP/7zip/Compress/QuantumDecoder.cpp \
+CPP/7zip/Compress/ShrinkDecoder.cpp \
+CPP/7zip/Compress/ZDecoder.cpp \
+CPP/7zip/Crypto/7zAes.cpp \
+CPP/7zip/Crypto/7zAesRegister.cpp \
+CPP/7zip/Crypto/HmacSha1.cpp \
+CPP/7zip/Crypto/MyAes.cpp \
+CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp \
+CPP/7zip/Crypto/RandGen.cpp \
+CPP/7zip/Crypto/Sha1.cpp \
+CPP/7zip/Crypto/WzAes.cpp \
+CPP/7zip/Crypto/ZipCrypto.cpp \
+CPP/7zip/Crypto/ZipStrong.cpp \
+C/7zStream.c \
+C/Aes.c \
+C/Alloc.c \
+C/Bra.c \
+C/Bra86.c \
+C/BraIA64.c \
+C/BwtSort.c \
+C/Delta.c \
+C/HuffEnc.c \
+C/LzFind.c \
+C/LzFindMt.c \
+C/Lzma2Dec.c \
+C/Lzma2Enc.c \
+C/LzmaDec.c \
+C/LzmaEnc.c \
+C/MtCoder.c \
+C/Ppmd7.c \
+C/Ppmd7Dec.c \
+C/Ppmd7Enc.c \
+C/Ppmd8.c \
+C/Ppmd8Dec.c \
+C/Ppmd8Enc.c \
+C/Sha256.c \
+C/Sort.c \
+C/Threads.c \
+C/Xz.c \
+C/XzCrc64.c \
+C/XzDec.c \
+C/XzEnc.c \
+C/XzIn.c \
+C/7zCrc.c \
+C/7zCrcOpt.c
+
+SUBDIRS = \
+C \
+CPP/7zip/Archive \
+CPP/7zip/Archive/7z \
+CPP/7zip/Archive/Cab \
+CPP/7zip/Archive/Common \
+CPP/7zip/Archive/Tar \
+CPP/7zip/Archive/Zip \
+CPP/7zip/Common \
+CPP/7zip/Compress \
+CPP/7zip/Crypto \
+CPP/7zip/UI/Common \
+CPP/7zip/UI/Console \
+CPP/Common \
+CPP/Windows \
+CPP/myWindows
+
+# We need to define some special rules to compile 7zip since moving
+# all of the different source files into one main directory breaks the
+# build due to the way 7zip's includes are structured.
+define SUBDIR_template
+Output/%.o: $(1)/%.c Output/.dir
+ -$$(CC) $$(CPPFLAGS) $$(CFLAGS) $$(OPTFLAGS) $$(TARGET_FLAGS) -c $$< -o $$@
+Output/%.o: $(1)/%.cpp Output/.dir
+ -$$(CXX) $$(CPPFLAGS) $$(CXXFLAGS) $$(OPTFLAGS) $$(TARGET_FLAGS) -c $$< -o $$@
+Output/%.llvm.o: $(1)/%.c Output/.dir
+ $$(RUNSAFELYLOCAL) /dev/null $$@.compile \
+ $$(LCC) $$(CPPFLAGS) $$(CFLAGS) $$(OPTFLAGS) $$(TARGET_FLAGS) -c $$< -o $$@
+Output/%.llvm.o: $(1)/%.cpp Output/.dir
+ $$(RUNSAFELYLOCAL) /dev/null $$@.compile \
+ $$(LCXX) $$(CPPFLAGS) $$(CXXFLAGS) $$(OPTFLAGS) $$(TARGET_FLAGS) -c $$< -o $$@
+endef
+
+$(foreach dir,$(SUBDIRS),$(eval $(call SUBDIR_template,$(PROJ_SRC_DIR)/$(dir))))
+
+# Since this test just runs the benchmark provided in 7zip, the output
+# will be different everytime since the output includes timing information.
+PROGRAM_IS_NONDETERMINISTIC=1
+
+include $(LEVEL)/Multisource/Makefile.multisrc
+
Added: test-suite/trunk/MultiSource/Benchmarks/7zip/unRarLicense.txt
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/7zip/unRarLicense.txt?rev=170306&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/7zip/unRarLicense.txt (added)
+++ test-suite/trunk/MultiSource/Benchmarks/7zip/unRarLicense.txt Sun Dec 16 23:23:25 2012
@@ -0,0 +1,41 @@
+ ****** ***** ****** unRAR - free utility for RAR archives
+ ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ****** ******* ****** License for use and distribution of
+ ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ** ** ** ** ** ** FREE portable version
+ ~~~~~~~~~~~~~~~~~~~~~
+
+ The source code of unRAR utility is freeware. This means:
+
+ 1. All copyrights to RAR and the utility unRAR are exclusively
+ owned by the author - Alexander Roshal.
+
+ 2. The unRAR sources may be used in any software to handle RAR
+ archives without limitations free of charge, but cannot be used
+ to re-create the RAR compression algorithm, which is proprietary.
+ Distribution of modified unRAR sources in separate form or as a
+ part of other software is permitted, provided that it is clearly
+ stated in the documentation and source comments that the code may
+ not be used to develop a RAR (WinRAR) compatible archiver.
+
+ 3. The unRAR utility may be freely distributed. No person or company
+ may charge a fee for the distribution of unRAR without written
+ permission from the copyright holder.
+
+ 4. THE RAR ARCHIVER AND THE UNRAR UTILITY ARE DISTRIBUTED "AS IS".
+ NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT
+ YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS,
+ DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING
+ OR MISUSING THIS SOFTWARE.
+
+ 5. Installing and using the unRAR utility signifies acceptance of
+ these terms and conditions of the license.
+
+ 6. If you don't agree with terms of the license you must remove
+ unRAR files from your storage devices and cease to use the
+ utility.
+
+ Thank you for your interest in RAR and unRAR.
+
+
+ Alexander L. Roshal
\ No newline at end of file
Modified: test-suite/trunk/MultiSource/Benchmarks/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Makefile?rev=170306&r1=170305&r2=170306&view=diff
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Makefile (original)
+++ test-suite/trunk/MultiSource/Benchmarks/Makefile Sun Dec 16 23:23:25 2012
@@ -19,7 +19,7 @@
endif
ifndef DISABLE_CXX
-PARALLEL_DIRS += Prolangs-C++ PAQ8p tramp3d-v4 Bullet
+PARALLEL_DIRS += Prolangs-C++ PAQ8p tramp3d-v4 Bullet 7zip
endif
ifndef SMALL_PROBLEM_SIZE
More information about the llvm-commits
mailing list