misc/libphysfs/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
--- a/misc/libphysfs/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs	Wed May 16 18:22:28 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-using System;
-using System.IO;
-namespace SevenZip
-{
-	using CommandLineParser;
-	
-	public class CDoubleStream: Stream
-	{
-		public System.IO.Stream s1;
-		public System.IO.Stream s2;
-		public int fileIndex;
-		public long skipSize;
-		
-		public override bool CanRead { get { return true; }}
-		public override bool CanWrite { get { return false; }}
-		public override bool CanSeek { get { return false; }}
-		public override long Length { get { return s1.Length + s2.Length - skipSize; } }
-		public override long Position
-		{
-			get { return 0;	}
-			set { }
-		}
-		public override void Flush() { }
-		public override int Read(byte[] buffer, int offset, int count) 
-		{
-			int numTotal = 0;
-			while (count > 0)
-			{
-				if (fileIndex == 0)
-				{
-					int num = s1.Read(buffer, offset, count);
-					offset += num;
-					count -= num;
-					numTotal += num;
-					if (num == 0)
-						fileIndex++;
-				}
-				if (fileIndex == 1)
-				{
-					numTotal += s2.Read(buffer, offset, count);
-					return numTotal;
-				}
-			}
-			return numTotal;
-		}
-		public override void Write(byte[] buffer, int offset, int count)
-		{
-			throw (new Exception("can't Write"));
-		}
-		public override long Seek(long offset, System.IO.SeekOrigin origin)
-		{
-			throw (new Exception("can't Seek"));
-		}
-		public override void SetLength(long value)
-		{
-			throw (new Exception("can't SetLength"));
-		}
-	}
-	
-	class LzmaAlone
-	{
-		enum Key
-		{
-			Help1 = 0,
-			Help2,
-			Mode,
-			Dictionary,
-			FastBytes,
-			LitContext,
-			LitPos,
-			PosBits,
-			MatchFinder,
-			EOS,
-			StdIn,
-			StdOut,
-			Train
-		};
-
-		static void PrintHelp()
-		{
-			System.Console.WriteLine("\nUsage:  LZMA <e|d> [<switches>...] inputFile outputFile\n" +
-				"  e: encode file\n" +
-				"  d: decode file\n" +
-				"  b: Benchmark\n" +
-				"<Switches>\n" +
-				// "  -a{N}:  set compression mode - [0, 1], default: 1 (max)\n" +
-				"  -d{N}:  set dictionary - [0, 29], default: 23 (8MB)\n" +
-				"  -fb{N}: set number of fast bytes - [5, 273], default: 128\n" +
-				"  -lc{N}: set number of literal context bits - [0, 8], default: 3\n" +
-				"  -lp{N}: set number of literal pos bits - [0, 4], default: 0\n" +
-				"  -pb{N}: set number of pos bits - [0, 4], default: 2\n" +
-				"  -mf{MF_ID}: set Match Finder: [bt2, bt4], default: bt4\n" +
-				"  -eos:   write End Of Stream marker\n"
-				// + "  -si:    read data from stdin\n"
-				// + "  -so:    write data to stdout\n"
-				);
-		}
-
-		static bool GetNumber(string s, out Int32 v)
-		{
-			v = 0;
-			for (int i = 0; i < s.Length; i++)
-			{
-				char c = s[i];
-				if (c < '0' || c > '9')
-					return false;
-				v *= 10;
-				v += (Int32)(c - '0');
-			}
-			return true;
-		}
-
-		static int IncorrectCommand()
-		{
-			throw (new Exception("Command line error"));
-			// System.Console.WriteLine("\nCommand line error\n");
-			// return 1;
-		}
-		static int Main2(string[] args)
-		{
-			System.Console.WriteLine("\nLZMA# 4.49 Copyright (c) 1999-2007 Igor Pavlov  2006-07-05\n");
-
-			if (args.Length == 0)
-			{
-				PrintHelp();
-				return 0;
-			}
-
-			SwitchForm[] kSwitchForms = new SwitchForm[13];
-			int sw = 0;
-			kSwitchForms[sw++] = new SwitchForm("?", SwitchType.Simple, false);
-			kSwitchForms[sw++] = new SwitchForm("H", SwitchType.Simple, false);
-			kSwitchForms[sw++] = new SwitchForm("A", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("D", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("FB", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("LC", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("LP", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("PB", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("MF", SwitchType.UnLimitedPostString, false, 1);
-			kSwitchForms[sw++] = new SwitchForm("EOS", SwitchType.Simple, false);
-			kSwitchForms[sw++] = new SwitchForm("SI", SwitchType.Simple, false);
-			kSwitchForms[sw++] = new SwitchForm("SO", SwitchType.Simple, false);
-			kSwitchForms[sw++] = new SwitchForm("T", SwitchType.UnLimitedPostString, false, 1);
-
-
-			Parser parser = new Parser(sw);
-			try
-			{
-				parser.ParseStrings(kSwitchForms, args);
-			}
-			catch
-			{
-				return IncorrectCommand();
-			}
-
-			if (parser[(int)Key.Help1].ThereIs || parser[(int)Key.Help2].ThereIs)
-			{
-				PrintHelp();
-				return 0;
-			}
-
-			System.Collections.ArrayList nonSwitchStrings = parser.NonSwitchStrings;
-
-			int paramIndex = 0;
-			if (paramIndex >= nonSwitchStrings.Count)
-				return IncorrectCommand();
-			string command = (string)nonSwitchStrings[paramIndex++];
-			command = command.ToLower();
-
-			bool dictionaryIsDefined = false;
-			Int32 dictionary = 1 << 21;
-			if (parser[(int)Key.Dictionary].ThereIs)
-			{
-				Int32 dicLog;
-				if (!GetNumber((string)parser[(int)Key.Dictionary].PostStrings[0], out dicLog))
-					IncorrectCommand();
-				dictionary = (Int32)1 << dicLog;
-				dictionaryIsDefined = true;
-			}
-			string mf = "bt4";
-			if (parser[(int)Key.MatchFinder].ThereIs)
-				mf = (string)parser[(int)Key.MatchFinder].PostStrings[0];
-			mf = mf.ToLower();
-
-			if (command == "b")
-			{
-				const Int32 kNumDefaultItereations = 10;
-				Int32 numIterations = kNumDefaultItereations;
-				if (paramIndex < nonSwitchStrings.Count)
-					if (!GetNumber((string)nonSwitchStrings[paramIndex++], out numIterations))
-						numIterations = kNumDefaultItereations;
-				return LzmaBench.LzmaBenchmark(numIterations, (UInt32)dictionary);
-			}
-
-			string train = "";
-			if (parser[(int)Key.Train].ThereIs)
-				train = (string)parser[(int)Key.Train].PostStrings[0];
-
-			bool encodeMode = false;
-			if (command == "e")
-				encodeMode = true;
-			else if (command == "d")
-				encodeMode = false;
-			else
-				IncorrectCommand();
-
-			bool stdInMode = parser[(int)Key.StdIn].ThereIs;
-			bool stdOutMode = parser[(int)Key.StdOut].ThereIs;
-
-			Stream inStream = null;
-			if (stdInMode)
-			{
-				throw (new Exception("Not implemeted"));
-			}
-			else
-			{
-				if (paramIndex >= nonSwitchStrings.Count)
-					IncorrectCommand();
-				string inputName = (string)nonSwitchStrings[paramIndex++];
-				inStream = new FileStream(inputName, FileMode.Open, FileAccess.Read);
-			}
-
-			FileStream outStream = null;
-			if (stdOutMode)
-			{
-				throw (new Exception("Not implemeted"));
-			}
-			else
-			{
-				if (paramIndex >= nonSwitchStrings.Count)
-					IncorrectCommand();
-				string outputName = (string)nonSwitchStrings[paramIndex++];
-				outStream = new FileStream(outputName, FileMode.Create, FileAccess.Write);
-			}
-
-			FileStream trainStream = null;
-			if (train.Length != 0)
-				trainStream = new FileStream(train, FileMode.Open, FileAccess.Read);
-
-			if (encodeMode)
-			{
-				if (!dictionaryIsDefined)
-					dictionary = 1 << 23;
-
-				Int32 posStateBits = 2;
-				Int32 litContextBits = 3; // for normal files
-				// UInt32 litContextBits = 0; // for 32-bit data
-				Int32 litPosBits = 0;
-				// UInt32 litPosBits = 2; // for 32-bit data
-				Int32 algorithm = 2;
-				Int32 numFastBytes = 128;
-
-				bool eos = parser[(int)Key.EOS].ThereIs || stdInMode;
-
-				if (parser[(int)Key.Mode].ThereIs)
-					if (!GetNumber((string)parser[(int)Key.Mode].PostStrings[0], out algorithm))
-						IncorrectCommand();
-
-				if (parser[(int)Key.FastBytes].ThereIs)
-					if (!GetNumber((string)parser[(int)Key.FastBytes].PostStrings[0], out numFastBytes))
-						IncorrectCommand();
-				if (parser[(int)Key.LitContext].ThereIs)
-					if (!GetNumber((string)parser[(int)Key.LitContext].PostStrings[0], out litContextBits))
-						IncorrectCommand();
-				if (parser[(int)Key.LitPos].ThereIs)
-					if (!GetNumber((string)parser[(int)Key.LitPos].PostStrings[0], out litPosBits))
-						IncorrectCommand();
-				if (parser[(int)Key.PosBits].ThereIs)
-					if (!GetNumber((string)parser[(int)Key.PosBits].PostStrings[0], out posStateBits))
-						IncorrectCommand();
-
-				CoderPropID[] propIDs = 
-				{
-					CoderPropID.DictionarySize,
-					CoderPropID.PosStateBits,
-					CoderPropID.LitContextBits,
-					CoderPropID.LitPosBits,
-					CoderPropID.Algorithm,
-					CoderPropID.NumFastBytes,
-					CoderPropID.MatchFinder,
-					CoderPropID.EndMarker
-				};
-				object[] properties = 
-				{
-					(Int32)(dictionary),
-					(Int32)(posStateBits),
-					(Int32)(litContextBits),
-					(Int32)(litPosBits),
-					(Int32)(algorithm),
-					(Int32)(numFastBytes),
-					mf,
-					eos
-				};
-
-				Compression.LZMA.Encoder encoder = new Compression.LZMA.Encoder();
-				encoder.SetCoderProperties(propIDs, properties);
-				encoder.WriteCoderProperties(outStream);
-				Int64 fileSize;
-				if (eos || stdInMode)
-					fileSize = -1;
-				else
-					fileSize = inStream.Length;
-				for (int i = 0; i < 8; i++)
-					outStream.WriteByte((Byte)(fileSize >> (8 * i)));
-				if (trainStream != null)
-				{
-					CDoubleStream doubleStream = new CDoubleStream();
-					doubleStream.s1 = trainStream;
-					doubleStream.s2 = inStream;
-					doubleStream.fileIndex = 0;
-					inStream = doubleStream;
-					long trainFileSize = trainStream.Length;
-					doubleStream.skipSize = 0;
-					if (trainFileSize > dictionary)
-						doubleStream.skipSize = trainFileSize - dictionary;
-					trainStream.Seek(doubleStream.skipSize, SeekOrigin.Begin);
-					encoder.SetTrainSize((uint)(trainFileSize - doubleStream.skipSize));
-				}
-				encoder.Code(inStream, outStream, -1, -1, null);
-			}
-			else if (command == "d")
-			{
-				byte[] properties = new byte[5];
-				if (inStream.Read(properties, 0, 5) != 5)
-					throw (new Exception("input .lzma is too short"));
-				Compression.LZMA.Decoder decoder = new Compression.LZMA.Decoder();
-				decoder.SetDecoderProperties(properties);
-				if (trainStream != null)
-				{
-					if (!decoder.Train(trainStream))
-						throw (new Exception("can't train"));
-				}
-				long outSize = 0;
-				for (int i = 0; i < 8; i++)
-				{
-					int v = inStream.ReadByte();
-					if (v < 0)
-						throw (new Exception("Can't Read 1"));
-					outSize |= ((long)(byte)v) << (8 * i);
-				}
-				long compressedSize = inStream.Length - inStream.Position;
-				decoder.Code(inStream, outStream, compressedSize, outSize, null);
-			}
-			else
-				throw (new Exception("Command Error"));
-			return 0;
-		}
-
-		[STAThread]
-		static int Main(string[] args)
-		{
-			try
-			{
-				return Main2(args);
-			}
-			catch (Exception e)
-			{
-				Console.WriteLine("{0} Caught exception #1.", e);
-				// throw e;
-				return 1;
-			}
-		}
-	}
-}