亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lzmaalone.cpp

?? 壓縮解壓工具7-zip源代碼
?? CPP
字號:
// LzmaAlone.cpp

#include "StdAfx.h"

#include "../../../Common/MyWindows.h"
#include "../../../Common/MyInitGuid.h"

#include <stdio.h>

#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
#include <fcntl.h>
#include <io.h>
#define MY_SET_BINARY_MODE(file) _setmode(_fileno(file), O_BINARY)
#else
#define MY_SET_BINARY_MODE(file)
#endif

#include "../../../Common/CommandLineParser.h"
#include "../../../Common/StringConvert.h"
#include "../../../Common/StringToInt.h"

#include "../../Common/FileStreams.h"
#include "../../Common/StreamUtils.h"

#include "../LzmaDecoder.h"
#include "../LzmaEncoder.h"

#include "LzmaBenchCon.h"

#ifdef COMPRESS_MF_MT
#include "../../../Windows/System.h"
#endif

extern "C"
{
  #include "../../../../C/7zVersion.h"
  #include "../../../../C/Alloc.h"
  #include "../../../../C/LzmaUtil/Lzma86Dec.h"
  #include "../../../../C/LzmaUtil/Lzma86Enc.h"
}

using namespace NCommandLineParser;

#ifdef _WIN32
bool g_IsNT = false;
static inline bool IsItWindowsNT()
{
  OSVERSIONINFO versionInfo;
  versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);
  if (!::GetVersionEx(&versionInfo))
    return false;
  return (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT);
}
#endif

static const char *kCantAllocate = "Can not allocate memory";
static const char *kReadError = "Read error";
static const char *kWriteError = "Write error";

namespace NKey {
enum Enum
{
  kHelp1 = 0,
  kHelp2,
  kAlgo,
  kDict,
  kFb,
  kMc,
  kLc,
  kLp,
  kPb,
  kMatchFinder,
  kMultiThread,
  kEOS,
  kStdIn,
  kStdOut,
  kFilter86
};
}

static const CSwitchForm kSwitchForms[] =
{
  { L"?",  NSwitchType::kSimple, false },
  { L"H",  NSwitchType::kSimple, false },
  { L"A", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"D", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"FB", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"MC", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"LC", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"LP", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"PB", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"MF", NSwitchType::kUnLimitedPostString, false, 1 },
  { L"MT", NSwitchType::kUnLimitedPostString, false, 0 },
  { L"EOS", NSwitchType::kSimple, false },
  { L"SI",  NSwitchType::kSimple, false },
  { L"SO",  NSwitchType::kSimple, false },
  { L"F86",  NSwitchType::kPostChar, false, 0, 0, L"+" }
};

static const int kNumSwitches = sizeof(kSwitchForms) / sizeof(kSwitchForms[0]);

static void PrintHelp()
{
  fprintf(stderr, "\nUsage:  LZMA <e|d> inputFile outputFile [<switches>...]\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 size - [12, 30], default: 23 (8MB)\n"
    "  -fb{N}: set number of fast bytes - [5, 273], default: 128\n"
    "  -mc{N}: set number of cycles for match finder\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, bt3, bt4, hc4], default: bt4\n"
    "  -mt{N}: set number of CPU threads\n"
    "  -eos:   write End Of Stream marker\n"
    "  -si:    read data from stdin\n"
    "  -so:    write data to stdout\n"
    );
}

static void PrintHelpAndExit(const char *s)
{
  fprintf(stderr, "\nError: %s\n\n", s);
  PrintHelp();
  throw -1;
}

static void IncorrectCommand()
{
  PrintHelpAndExit("Incorrect command");
}

static void WriteArgumentsToStringList(int numArguments, const char *arguments[],
    UStringVector &strings)
{
  for(int i = 1; i < numArguments; i++)
    strings.Add(MultiByteToUnicodeString(arguments[i]));
}

static bool GetNumber(const wchar_t *s, UInt32 &value)
{
  value = 0;
  if (MyStringLen(s) == 0)
    return false;
  const wchar_t *end;
  UInt64 res = ConvertStringToUInt64(s, &end);
  if (*end != L'\0')
    return false;
  if (res > 0xFFFFFFFF)
    return false;
  value = UInt32(res);
  return true;
}

static void ParseUInt32(const CParser &parser, int index, UInt32 &res)
{
  if (parser[index].ThereIs)
    if (!GetNumber(parser[index].PostStrings[0], res))
      IncorrectCommand();
}

int main2(int n, const char *args[])
{
  #ifdef _WIN32
  g_IsNT = IsItWindowsNT();
  #endif

  fprintf(stderr, "\nLZMA " MY_VERSION_COPYRIGHT_DATE "\n");

  if (n == 1)
  {
    PrintHelp();
    return 0;
  }

  bool unsupportedTypes = (sizeof(Byte) != 1 || sizeof(UInt32) < 4 || sizeof(UInt64) < 4);
  if (unsupportedTypes)
  {
    fprintf(stderr, "Unsupported base types. Edit Common/Types.h and recompile");
    return 1;
  }

  UStringVector commandStrings;
  WriteArgumentsToStringList(n, args, commandStrings);
  CParser parser(kNumSwitches);
  try
  {
    parser.ParseStrings(kSwitchForms, commandStrings);
  }
  catch(...)
  {
    IncorrectCommand();
  }

  if(parser[NKey::kHelp1].ThereIs || parser[NKey::kHelp2].ThereIs)
  {
    PrintHelp();
    return 0;
  }
  const UStringVector &nonSwitchStrings = parser.NonSwitchStrings;

  int paramIndex = 0;
  if (paramIndex >= nonSwitchStrings.Size())
    IncorrectCommand();
  const UString &command = nonSwitchStrings[paramIndex++];

  bool dictDefined = false;
  UInt32 dict = (UInt32)-1;
  if(parser[NKey::kDict].ThereIs)
  {
    UInt32 dicLog;
    if (!GetNumber(parser[NKey::kDict].PostStrings[0], dicLog))
      IncorrectCommand();
    dict = 1 << dicLog;
    dictDefined = true;
  }
  UString mf = L"BT4";
  if (parser[NKey::kMatchFinder].ThereIs)
    mf = parser[NKey::kMatchFinder].PostStrings[0];

  UInt32 numThreads = (UInt32)-1;

  #ifdef COMPRESS_MF_MT
  if (parser[NKey::kMultiThread].ThereIs)
  {
    UInt32 numCPUs = NWindows::NSystem::GetNumberOfProcessors();
    const UString &s = parser[NKey::kMultiThread].PostStrings[0];
    if (s.IsEmpty())
      numThreads = numCPUs;
    else
      if (!GetNumber(s, numThreads))
        IncorrectCommand();
  }
  #endif

  if (command.CompareNoCase(L"b") == 0)
  {
    const UInt32 kNumDefaultItereations = 1;
    UInt32 numIterations = kNumDefaultItereations;
    {
      if (paramIndex < nonSwitchStrings.Size())
        if (!GetNumber(nonSwitchStrings[paramIndex++], numIterations))
          numIterations = kNumDefaultItereations;
    }
    return LzmaBenchCon(stderr, numIterations, numThreads, dict);
  }

  if (numThreads == (UInt32)-1)
    numThreads = 1;

  bool encodeMode = false;
  if (command.CompareNoCase(L"e") == 0)
    encodeMode = true;
  else if (command.CompareNoCase(L"d") == 0)
    encodeMode = false;
  else
    IncorrectCommand();

  bool stdInMode = parser[NKey::kStdIn].ThereIs;
  bool stdOutMode = parser[NKey::kStdOut].ThereIs;

  CMyComPtr<ISequentialInStream> inStream;
  CInFileStream *inStreamSpec = 0;
  if (stdInMode)
  {
    inStream = new CStdInFileStream;
    MY_SET_BINARY_MODE(stdin);
  }
  else
  {
    if (paramIndex >= nonSwitchStrings.Size())
      IncorrectCommand();
    const UString &inputName = nonSwitchStrings[paramIndex++];
    inStreamSpec = new CInFileStream;
    inStream = inStreamSpec;
    if (!inStreamSpec->Open(GetSystemString(inputName)))
    {
      fprintf(stderr, "\nError: can not open input file %s\n",
          (const char *)GetOemString(inputName));
      return 1;
    }
  }

  CMyComPtr<ISequentialOutStream> outStream;
  COutFileStream *outStreamSpec = NULL;
  if (stdOutMode)
  {
    outStream = new CStdOutFileStream;
    MY_SET_BINARY_MODE(stdout);
  }
  else
  {
    if (paramIndex >= nonSwitchStrings.Size())
      IncorrectCommand();
    const UString &outputName = nonSwitchStrings[paramIndex++];
    outStreamSpec = new COutFileStream;
    outStream = outStreamSpec;
    if (!outStreamSpec->Create(GetSystemString(outputName), true))
    {
      fprintf(stderr, "\nError: can not open output file %s\n",
        (const char *)GetOemString(outputName));
      return 1;
    }
  }

  if (parser[NKey::kFilter86].ThereIs)
  {
    // -f86 switch is for x86 filtered mode: BCJ + LZMA.
    if (parser[NKey::kEOS].ThereIs || stdInMode)
      throw "Can not use stdin in this mode";
    UInt64 fileSize;
    inStreamSpec->File.GetLength(fileSize);
    if (fileSize > 0xF0000000)
      throw "File is too big";
    size_t inSize = (size_t)fileSize;
    Byte *inBuffer = 0;
    if (inSize != 0)
    {
      inBuffer = (Byte *)MyAlloc((size_t)inSize);
      if (inBuffer == 0)
        throw kCantAllocate;
    }
    
    if (ReadStream_FAIL(inStream, inBuffer, inSize) != S_OK)
      throw "Can not read";

    Byte *outBuffer = 0;
    size_t outSize;
    if (encodeMode)
    {
      // we allocate 105% of original size for output buffer
      outSize = (size_t)fileSize / 20 * 21 + (1 << 16);
      if (outSize != 0)
      {
        outBuffer = (Byte *)MyAlloc((size_t)outSize);
        if (outBuffer == 0)
          throw kCantAllocate;
      }
      if (!dictDefined)
        dict = 1 << 23;
      int res = Lzma86_Encode(outBuffer, &outSize, inBuffer, inSize,
          5, dict, parser[NKey::kFilter86].PostCharIndex == 0 ? SZ_FILTER_YES : SZ_FILTER_AUTO);
      if (res != 0)
      {
        fprintf(stderr, "\nEncoder error = %d\n", (int)res);
        return 1;
      }
    }
    else
    {
      UInt64 outSize64;
      if (Lzma86_GetUnpackSize(inBuffer, inSize, &outSize64) != 0)
        throw "data error";
      outSize = (size_t)outSize64;
      if (outSize != outSize64)
        throw "too big";
      if (outSize != 0)
      {
        outBuffer = (Byte *)MyAlloc(outSize);
        if (outBuffer == 0)
          throw kCantAllocate;
      }
      int res = Lzma86_Decode(outBuffer, &outSize, inBuffer, &inSize);
      if (inSize != (size_t)fileSize)
        throw "incorrect processed size";
      if (res != 0)
        throw "LzmaDecoder error";
    }
    if (WriteStream(outStream, outBuffer, outSize) != S_OK)
      throw kWriteError;
    MyFree(outBuffer);
    MyFree(inBuffer);
    return 0;
  }


  UInt64 fileSize;
  if (encodeMode)
  {
    NCompress::NLzma::CEncoder *encoderSpec = new NCompress::NLzma::CEncoder;
    CMyComPtr<ICompressCoder> encoder = encoderSpec;

    if (!dictDefined)
      dict = 1 << 23;

    UInt32 pb = 2;
    UInt32 lc = 3; // = 0; for 32-bit data
    UInt32 lp = 0; // = 2; for 32-bit data
    UInt32 algo = 1;
    UInt32 fb = 128;
    UInt32 mc = 16 + fb / 2;
    bool mcDefined = false;

    bool eos = parser[NKey::kEOS].ThereIs || stdInMode;
 
    ParseUInt32(parser, NKey::kAlgo, algo);
    ParseUInt32(parser, NKey::kFb, fb);
    ParseUInt32(parser, NKey::kLc, lc);
    ParseUInt32(parser, NKey::kLp, lp);
    ParseUInt32(parser, NKey::kPb, pb);

    mcDefined = parser[NKey::kMc].ThereIs;
    if (mcDefined)
      if (!GetNumber(parser[NKey::kMc].PostStrings[0], mc))
        IncorrectCommand();
    
    PROPID propIDs[] =
    {
      NCoderPropID::kDictionarySize,
      NCoderPropID::kPosStateBits,
      NCoderPropID::kLitContextBits,
      NCoderPropID::kLitPosBits,
      NCoderPropID::kAlgorithm,
      NCoderPropID::kNumFastBytes,
      NCoderPropID::kMatchFinder,
      NCoderPropID::kEndMarker,
      NCoderPropID::kNumThreads,
      NCoderPropID::kMatchFinderCycles,
    };
    const int kNumPropsMax = sizeof(propIDs) / sizeof(propIDs[0]);

    PROPVARIANT props[kNumPropsMax];
    for (int p = 0; p < 6; p++)
      props[p].vt = VT_UI4;

    props[0].ulVal = (UInt32)dict;
    props[1].ulVal = (UInt32)pb;
    props[2].ulVal = (UInt32)lc;
    props[3].ulVal = (UInt32)lp;
    props[4].ulVal = (UInt32)algo;
    props[5].ulVal = (UInt32)fb;

    props[6].vt = VT_BSTR;
    props[6].bstrVal = (BSTR)(const wchar_t *)mf;

    props[7].vt = VT_BOOL;
    props[7].boolVal = eos ? VARIANT_TRUE : VARIANT_FALSE;

    props[8].vt = VT_UI4;
    props[8].ulVal = (UInt32)numThreads;

    // it must be last in property list
    props[9].vt = VT_UI4;
    props[9].ulVal = (UInt32)mc;

    int numProps = kNumPropsMax;
    if (!mcDefined)
      numProps--;

    if (encoderSpec->SetCoderProperties(propIDs, props, numProps) != S_OK)
      IncorrectCommand();
    encoderSpec->WriteCoderProperties(outStream);

    if (eos || stdInMode)
      fileSize = (UInt64)(Int64)-1;
    else
      inStreamSpec->File.GetLength(fileSize);

    for (int i = 0; i < 8; i++)
    {
      Byte b = Byte(fileSize >> (8 * i));
      if (outStream->Write(&b, 1, 0) != S_OK)
      {
        fprintf(stderr, kWriteError);
        return 1;
      }
    }
    HRESULT result = encoder->Code(inStream, outStream, 0, 0, 0);
    if (result == E_OUTOFMEMORY)
    {
      fprintf(stderr, "\nError: Can not allocate memory\n");
      return 1;
    }
    else if (result != S_OK)
    {
      fprintf(stderr, "\nEncoder error = %X\n", (unsigned int)result);
      return 1;
    }
  }
  else
  {
    NCompress::NLzma::CDecoder *decoderSpec = new NCompress::NLzma::CDecoder;
    CMyComPtr<ICompressCoder> decoder = decoderSpec;
    decoderSpec->FinishStream = true;
    const UInt32 kPropertiesSize = 5;
    Byte header[kPropertiesSize + 8];
    if (ReadStream_FALSE(inStream, header, kPropertiesSize + 8) != S_OK)
    {
      fprintf(stderr, kReadError);
      return 1;
    }
    if (decoderSpec->SetDecoderProperties2(header, kPropertiesSize) != S_OK)
    {
      fprintf(stderr, "SetDecoderProperties error");
      return 1;
    }
    fileSize = 0;
    for (int i = 0; i < 8; i++)
      fileSize |= ((UInt64)header[kPropertiesSize + i]) << (8 * i);

    if (decoder->Code(inStream, outStream, 0, (fileSize == (UInt64)(Int64)-1) ? 0 : &fileSize, 0) != S_OK)
    {
      fprintf(stderr, "Decoder error");
      return 1;
    }
  }
  if (outStreamSpec != NULL)
  {
    if (outStreamSpec->Close() != S_OK)
    {
      fprintf(stderr, "File closing error");
      return 1;
    }
  }
  return 0;
}

int MY_CDECL main(int n, const char *args[])
{
  try { return main2(n, args); }
  catch(const char *s)
  {
    fprintf(stderr, "\nError: %s\n", s);
    return 1;
  }
  catch(...)
  {
    fprintf(stderr, "\nError\n");
    return 1;
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一区二区三区四区 | 欧美中文字幕亚洲一区二区va在线| 欧美中文字幕一二三区视频| 精品成人在线观看| 一区二区在线看| 国产米奇在线777精品观看| 色天天综合久久久久综合片| 久久精品一区二区| 美腿丝袜一区二区三区| 色8久久精品久久久久久蜜| 久久久综合视频| 亚洲成人激情自拍| 色欧美乱欧美15图片| 久久日韩精品一区二区五区| 亚洲成在人线在线播放| av电影在线观看完整版一区二区| 欧美大片在线观看| 日韩av在线播放中文字幕| 色综合久久九月婷婷色综合| 久久精品夜色噜噜亚洲aⅴ| 日日夜夜免费精品| 欧美专区日韩专区| 一区二区三区在线观看动漫| 成人污视频在线观看| xfplay精品久久| 久久国产麻豆精品| 日韩欧美一区二区在线视频| 日精品一区二区| 欧美日韩综合在线| 一个色妞综合视频在线观看| 色先锋aa成人| 一区二区三区四区不卡视频| 91久久香蕉国产日韩欧美9色| 自拍av一区二区三区| av电影天堂一区二区在线| 国产午夜精品一区二区| 国产成人亚洲综合a∨婷婷| 久久午夜色播影院免费高清| 国产伦精品一区二区三区视频青涩 | 精品国产免费人成电影在线观看四季 | 久久久久国色av免费看影院| 国产在线视频精品一区| 2021国产精品久久精品| 国产综合成人久久大片91| 欧美成人性战久久| 国产麻豆精品一区二区| 国产精品素人视频| 91美女片黄在线观看91美女| 一区二区三区在线观看视频| 欧美日本免费一区二区三区| 日本女人一区二区三区| 欧美成人精品福利| 国产成人8x视频一区二区| 国产精品国产三级国产普通话蜜臀 | 日精品一区二区| 精品毛片乱码1区2区3区| 国产精品亚洲一区二区三区在线| 国产精品天干天干在线综合| 在线观看av一区| 蜜乳av一区二区三区| 国产日韩欧美制服另类| 91视频www| 日本一区中文字幕| 久久九九全国免费| 欧洲精品在线观看| 激情成人午夜视频| 国产精品不卡一区| 欧美剧情片在线观看| 国产精品影音先锋| 亚洲伊人色欲综合网| 337p粉嫩大胆噜噜噜噜噜91av| 成a人片亚洲日本久久| 午夜日韩在线观看| 国产日韩欧美精品电影三级在线| 日本福利一区二区| 国产精品一级在线| 国产在线麻豆精品观看| 日韩伦理免费电影| 欧美videofree性高清杂交| 91影视在线播放| 精品在线观看免费| 夜色激情一区二区| 久久精品亚洲一区二区三区浴池| 欧美吞精做爰啪啪高潮| 国产成人欧美日韩在线电影| 日韩不卡一二三区| 亚洲免费资源在线播放| 久久久久久久性| 91精品国产综合久久久久久久久久 | 日韩欧美国产综合| 色婷婷综合久久久久中文一区二区| 美女视频第一区二区三区免费观看网站| 国产精品区一区二区三区| 欧美一区二区三区免费观看视频| 91麻豆国产福利在线观看| 国产精品综合二区| 日本三级韩国三级欧美三级| 亚洲伊人色欲综合网| 亚洲欧美在线视频| 久久久久久久久免费| 日韩欧美精品在线| 欧美乱妇20p| 欧美视频一区在线| 91捆绑美女网站| 99久久久久久99| 99这里只有久久精品视频| 国产精品一级片| 国产福利精品导航| 国产精品一区免费视频| 精彩视频一区二区| 六月丁香综合在线视频| 日本美女一区二区三区视频| 午夜精品福利在线| 日日夜夜免费精品视频| 午夜电影网一区| 日日嗨av一区二区三区四区| 亚洲成人7777| 图片区小说区国产精品视频| 亚洲h动漫在线| 婷婷国产v国产偷v亚洲高清| 婷婷成人激情在线网| 日韩专区欧美专区| 日日摸夜夜添夜夜添国产精品| 天堂影院一区二区| 日韩精品国产精品| 久久99精品国产麻豆不卡| 久久狠狠亚洲综合| 国产呦萝稀缺另类资源| 成人做爰69片免费看网站| av午夜一区麻豆| 91福利在线播放| 337p亚洲精品色噜噜狠狠| 91精品国产免费| 久久天堂av综合合色蜜桃网| 国产欧美日韩在线视频| 国产精品久久久久久久浪潮网站| 亚洲视频你懂的| 香蕉久久夜色精品国产使用方法 | 五月激情综合婷婷| 免费一级片91| 风流少妇一区二区| 一本色道久久综合狠狠躁的推荐| 欧美日韩精品一区视频| 精品三级av在线| 国产精品久久网站| 亚洲影视资源网| 国产真实乱对白精彩久久| av爱爱亚洲一区| 91麻豆精品国产综合久久久久久| 精品国内片67194| 亚洲免费电影在线| 日本少妇一区二区| www.色精品| 欧美另类z0zxhd电影| 久久久国产综合精品女国产盗摄| 亚洲手机成人高清视频| 水蜜桃久久夜色精品一区的特点| 国产宾馆实践打屁股91| 欧美三级乱人伦电影| 久久精品一区二区三区不卡| 亚洲一区在线观看网站| 国产精品影音先锋| 欧美男生操女生| 国产精品国产三级国产aⅴ原创 | 卡一卡二国产精品 | 免费欧美在线视频| 国产盗摄视频一区二区三区| 欧美日韩欧美一区二区| 久久久久久夜精品精品免费| 亚洲国产精品久久人人爱蜜臀| 国产a级毛片一区| 日韩精品一区二| 亚洲国产欧美一区二区三区丁香婷| 黑人精品欧美一区二区蜜桃 | 国产高清成人在线| 欧美日韩黄色一区二区| 国产精品久久久久久久蜜臀| 久久99最新地址| 91精品婷婷国产综合久久竹菊| 亚洲女爱视频在线| 岛国一区二区三区| 欧美成人欧美edvon| 午夜成人免费电影| 91麻豆文化传媒在线观看| 国产三级久久久| 激情六月婷婷久久| 欧美成人三级在线| 日本午夜一区二区| 91精品国产全国免费观看| 一区二区三区四区视频精品免费 | 国产夜色精品一区二区av| 美女一区二区视频| 在线不卡免费欧美| 午夜精品久久久久久久久| 欧美三日本三级三级在线播放| 亚洲免费大片在线观看| 色一情一乱一乱一91av| 亚洲欧美日韩小说| 91传媒视频在线播放| 一区二区三区中文在线观看|