[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 &params,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 &params)
+{
+	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 &param) 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 &param) 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( &ltime, &dw );
+    buf.actime = dw;
+  }
+
+  if (lpLastWriteTime)
+  {
+    LARGE_INTEGER  ltime;
+    DWORD dw;
+    ltime.QuadPart = lpLastWriteTime->dwHighDateTime;
+    ltime.QuadPart = (ltime.QuadPart << 32) | lpLastWriteTime->dwLowDateTime;
+    RtlTimeToSecondsSince1970( &ltime, &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( &ltime, &dw );
+     _lastAccessTime = dw;
+  }
+  if (mTime) {
+     ltime.QuadPart = mTime->dwHighDateTime;
+     ltime.QuadPart = (ltime.QuadPart << 32) | mTime->dwLowDateTime;
+     RtlTimeToSecondsSince1970( &ltime, &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(&ltime, &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