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

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

?? recvol.cpp

?? source code for unrar3.3.4,uppack the .rar files,for multi-os
?? CPP
字號:
#include "rar.hpp"#define RECVOL_BUFSIZE  0x800RecVolumes::RecVolumes(){  Buf.Alloc(RECVOL_BUFSIZE*256);  memset(SrcFile,0,sizeof(SrcFile));}RecVolumes::~RecVolumes(){  for (int I=0;I<sizeof(SrcFile)/sizeof(SrcFile[0]);I++)    delete SrcFile[I];}bool RecVolumes::Restore(RAROptions *Cmd,const char *Name,                         const wchar *NameW,bool Silent){  char ArcName[NM];  wchar ArcNameW[NM];  strcpy(ArcName,Name);  strcpyw(ArcNameW,NameW);  char *Ext=GetExt(ArcName);  bool NewStyle=false;  bool RevName=Ext!=NULL && stricomp(Ext,".rev")==0;  if (RevName)  {    for (int DigitGroup=0;Ext>ArcName && DigitGroup<3;Ext--)      if (!isdigit(*Ext))        if (isdigit(*(Ext-1)) && (*Ext=='_' || DigitGroup<2))          DigitGroup++;        else          if (DigitGroup<2)          {            NewStyle=true;            break;          }    while (isdigit(*Ext) && Ext>ArcName+1)      Ext--;    strcpy(Ext,"*.*");    FindFile Find;    Find.SetMask(ArcName);    struct FindData FD;    while (Find.Next(&FD))    {      Archive Arc(Cmd);      if (Arc.WOpen(FD.Name,FD.NameW) && Arc.IsArchive(true))      {        strcpy(ArcName,FD.Name);        *ArcNameW=0;        break;      }    }  }  Archive Arc(Cmd);  if (!Arc.WCheckOpen(ArcName,ArcNameW))    return(false);  if (!Arc.Volume)  {#ifndef SILENT    Log(ArcName,St(MNotVolume),ArcName);#endif    return(false);  }  bool NewNumbering=(Arc.NewMhd.Flags & MHD_NEWNUMBERING);  Arc.Close();  char *VolNumStart=VolNameToFirstName(ArcName,ArcName,NewNumbering);  char RecVolMask[NM];  strcpy(RecVolMask,ArcName);  int BaseNamePartLength=VolNumStart-ArcName;  strcpy(RecVolMask+BaseNamePartLength,"*.rev");#ifndef SILENT  Int64 RecFileSize=0;#endif  FindFile Find;  Find.SetMask(RecVolMask);  struct FindData RecData;  int FileNumber=0,RecVolNumber=0,FoundRecVolumes=0,MissingVolumes=0;  char PrevName[NM];  while (Find.Next(&RecData))  {    char *Name=RecData.Name;    int P[3];    if (!RevName && !NewStyle)    {      NewStyle=true;      char *Dot=GetExt(Name);      if (Dot!=NULL)      {        int LineCount=0;        Dot--;        while (Dot>Name && *Dot!='.')        {          if (*Dot=='_')            LineCount++;          Dot--;        }        if (LineCount==2)          NewStyle=false;      }    }    if (NewStyle)    {      File CurFile;      CurFile.TOpen(Name);      CurFile.Seek(0,SEEK_END);      Int64 Length=CurFile.Tell();      CurFile.Seek(Length-7,SEEK_SET);      for (int I=0;I<3;I++)        P[2-I]=CurFile.GetByte()+1;      uint FileCRC=0;      for (int I=0;I<4;I++)        FileCRC|=CurFile.GetByte()<<(I*8);      if (FileCRC!=CalcFileCRC(&CurFile,Length-4))      {#ifndef SILENT        mprintf(St(MCRCFailed),Name);#endif        continue;      }    }    else    {      char *Dot=GetExt(Name);      if (Dot==NULL)        continue;      bool WrongParam=false;      for (int I=0;I<sizeof(P)/sizeof(P[0]);I++)      {        do        {          Dot--;        } while (isdigit(*Dot) && Dot>=Name+BaseNamePartLength);        P[I]=atoi(Dot+1);        if (P[I]==0 || P[I]>255)          WrongParam=true;      }      if (WrongParam)        continue;    }    if (P[1]+P[2]>255)      continue;    if (RecVolNumber!=0 && RecVolNumber!=P[1] || FileNumber!=0 && FileNumber!=P[2])    {#ifndef SILENT      Log(NULL,St(MRecVolDiffSets),Name,PrevName);#endif      return(false);    }    RecVolNumber=P[1];    FileNumber=P[2];    strcpy(PrevName,Name);    File *NewFile=new File;    NewFile->TOpen(Name);    SrcFile[FileNumber+P[0]-1]=NewFile;    FoundRecVolumes++;#ifndef SILENT    if (RecFileSize==0)      RecFileSize=NewFile->FileLength();#endif  }#ifndef SILENT  if (!Silent || FoundRecVolumes!=0)  {    mprintf(St(MRecVolFound),FoundRecVolumes);  }#endif  if (FoundRecVolumes==0)    return(false);  bool WriteFlags[256];  memset(WriteFlags,0,sizeof(WriteFlags));  char LastVolName[NM];  *LastVolName=0;  for (int CurArcNum=0;CurArcNum<FileNumber;CurArcNum++)  {    Archive *NewFile=new Archive;    bool ValidVolume=FileExist(ArcName);    if (ValidVolume)    {      NewFile->TOpen(ArcName);      ValidVolume=NewFile->IsArchive(false);      if (ValidVolume)      {        bool EndFound=false,EndBlockRequired=false;        while (!EndFound && NewFile->ReadHeader()!=0)        {          if (NewFile->GetHeaderType()==FILE_HEAD)          {            if (NewFile->NewLhd.UnpVer>=29)              EndBlockRequired=true;            if (!EndBlockRequired && (NewFile->NewLhd.Flags & LHD_SPLIT_AFTER))              EndFound=true;          }          if (NewFile->GetHeaderType()==ENDARC_HEAD)          {            if ((NewFile->EndArcHead.Flags&EARC_DATACRC)!=0 &&                 NewFile->EndArcHead.ArcDataCRC!=CalcFileCRC(NewFile,NewFile->CurBlockPos))            {              ValidVolume=false;#ifndef SILENT              mprintf(St(MCRCFailed),ArcName);#endif            }            EndFound=true;          }          NewFile->SeekToNext();        }        if (!EndFound)          ValidVolume=false;      }      if (!ValidVolume)      {        NewFile->Close();        char NewName[NM];        strcpy(NewName,ArcName);        strcat(NewName,".bad");#ifndef SILENT        mprintf(St(MBadArc),ArcName);        mprintf(St(MRenaming),ArcName,NewName);#endif        rename(ArcName,NewName);      }      NewFile->Seek(0,SEEK_SET);    }    if (!ValidVolume)    {      NewFile->TCreate(ArcName);      WriteFlags[CurArcNum]=true;      MissingVolumes++;      if (CurArcNum==FileNumber-1)        strcpy(LastVolName,ArcName);#ifndef SILENT      mprintf(St(MAbsNextVol),ArcName);#endif    }    SrcFile[CurArcNum]=(File*)NewFile;    NextVolumeName(ArcName,!NewNumbering);  }#ifndef SILENT  mprintf(St(MRecVolMissing),MissingVolumes);#endif  if (MissingVolumes==0)  {#ifndef SILENT    mprintf(St(MRecVolAllExist));#endif    return(false);  }  if (MissingVolumes>FoundRecVolumes)  {#ifndef SILENT    mprintf(St(MRecVolCannotFix));#endif    return(false);  }#ifndef SILENT  mprintf(St(MReconstructing));#endif  RSCoder RSC(RecVolNumber);  int TotalFiles=FileNumber+RecVolNumber;  int Erasures[256],EraSize=0;  for (int I=0;I<TotalFiles;I++)    if (WriteFlags[I] || SrcFile[I]==NULL)      Erasures[EraSize++]=I;#ifndef SILENT  Int64 ProcessedSize=0;#ifndef GUI  int LastPercent=-1;  mprintf("     ");#endif#endif  int RecCount=0;  while (true)  {    if ((++RecCount & 15)==0)      Wait();    int MaxRead=0;    for (int I=0;I<TotalFiles;I++)      if (WriteFlags[I] || SrcFile[I]==NULL)        memset(&Buf[I*RECVOL_BUFSIZE],0,RECVOL_BUFSIZE);      else      {        int ReadSize=SrcFile[I]->Read(&Buf[I*RECVOL_BUFSIZE],RECVOL_BUFSIZE);        if (ReadSize!=RECVOL_BUFSIZE)          memset(&Buf[I*RECVOL_BUFSIZE+ReadSize],0,RECVOL_BUFSIZE-ReadSize);        if (ReadSize>MaxRead)          MaxRead=ReadSize;      }    if (MaxRead==0)      break;#ifndef SILENT    int CurPercent=ToPercent(ProcessedSize,RecFileSize);    if (!Cmd->DisablePercentage && CurPercent!=LastPercent)    {      mprintf("\b\b\b\b%3d%%",CurPercent);      LastPercent=CurPercent;    }    ProcessedSize+=MaxRead;#endif    for (int BufPos=0;BufPos<MaxRead;BufPos++)    {      byte Data[256];      for (int I=0;I<TotalFiles;I++)        Data[I]=Buf[I*RECVOL_BUFSIZE+BufPos];      RSC.Decode(Data,TotalFiles,Erasures,EraSize);      for (int I=0;I<EraSize;I++)        Buf[Erasures[I]*RECVOL_BUFSIZE+BufPos]=Data[Erasures[I]];/*      for (int I=0;I<FileNumber;I++)        Buf[I*RECVOL_BUFSIZE+BufPos]=Data[I];*/    }    for (int I=0;I<FileNumber;I++)      if (WriteFlags[I])        SrcFile[I]->Write(&Buf[I*RECVOL_BUFSIZE],MaxRead);  }  for (int I=0;I<RecVolNumber+FileNumber;I++)    if (SrcFile[I]!=NULL)    {      File *CurFile=SrcFile[I];      if (NewStyle && WriteFlags[I])      {        Int64 Length=CurFile->Tell();        CurFile->Seek(Length-7,SEEK_SET);        for (int J=0;J<7;J++)          CurFile->PutByte(0);      }      CurFile->Close();      SrcFile[I]=NULL;    }  if (*LastVolName)  {    Archive Arc(Cmd);    if (Arc.Open(LastVolName,NULL,false,true) && Arc.IsArchive(true) &&        Arc.SearchBlock(ENDARC_HEAD))    {      Arc.Seek(Arc.NextBlockPos,SEEK_SET);      char Buf[8192];      int ReadSize=Arc.Read(Buf,sizeof(Buf));      int ZeroCount=0;      while (ZeroCount<ReadSize && Buf[ZeroCount]==0)        ZeroCount++;      if (ZeroCount==ReadSize)      {        Arc.Seek(Arc.NextBlockPos,SEEK_SET);        Arc.Truncate();      }    }  }#if !defined(GUI) && !defined(SILENT)  if (!Cmd->DisablePercentage)    mprintf("\b\b\b\b100%%");  if (!Silent)    mprintf(St(MDone));#endif  return(true);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人午夜电影| av一区二区三区黑人| 国产iv一区二区三区| 91久久人澡人人添人人爽欧美 | 日韩av电影免费观看高清完整版| 久久成人免费网| 欧美午夜精品电影| 中文字幕 久热精品 视频在线| 天使萌一区二区三区免费观看| 99久久99久久精品国产片果冻| 精品国产不卡一区二区三区| 午夜国产精品一区| 91日韩在线专区| 国产精品久久久久7777按摩| 激情成人综合网| 日韩三级视频中文字幕| 亚洲成人久久影院| 在线亚洲精品福利网址导航| 亚洲国产精品99久久久久久久久| 老司机精品视频导航| 91麻豆精品久久久久蜜臀| 亚洲精品成人精品456| 99久久精品国产一区二区三区| 久久久综合激的五月天| 麻豆精品国产传媒mv男同| 欧美精品黑人性xxxx| 亚洲va在线va天堂| 欧美日韩一区二区三区在线看| 亚洲人成网站在线| 色偷偷成人一区二区三区91| 综合色中文字幕| www.日韩av| 综合色天天鬼久久鬼色| 色婷婷av一区二区三区大白胸| 中文字幕中文字幕一区二区| 波多野结衣中文字幕一区| 久久精品综合网| 国产成人精品影视| 中文字幕免费一区| www.亚洲色图.com| 一区二区三区欧美在线观看| 在线观看日韩精品| 五月天欧美精品| 日韩欧美在线网站| 国产自产视频一区二区三区| 国产日本欧美一区二区| zzijzzij亚洲日本少妇熟睡| 玉足女爽爽91| 91精品国产全国免费观看| 蜜臀精品一区二区三区在线观看 | 欧美一区二区日韩一区二区| 视频一区在线播放| 日韩免费性生活视频播放| 国产老肥熟一区二区三区| 国产精品成人免费在线| 精品视频一区三区九区| 久久国产尿小便嘘嘘| 国产日韩欧美亚洲| 欧美在线观看一区二区| 麻豆久久一区二区| 国产精品嫩草影院com| 欧美在线视频不卡| 国产麻豆精品在线| 亚洲精品综合在线| 精品日韩欧美在线| 一本一道久久a久久精品综合蜜臀| 午夜欧美2019年伦理| 久久久久久99精品| 欧美亚洲一区三区| 国产福利电影一区二区三区| 一区二区三区电影在线播| 2021国产精品久久精品| 日本黄色一区二区| 国产曰批免费观看久久久| 《视频一区视频二区| 精品伦理精品一区| 欧美优质美女网站| 丁香六月综合激情| 午夜激情综合网| 亚洲人成精品久久久久| 欧美xxxxx裸体时装秀| 欧美这里有精品| 成人动漫一区二区在线| 日韩av电影天堂| 亚洲精品成人悠悠色影视| 久久精品一区二区| 欧美一区二区免费视频| 色欧美片视频在线观看在线视频| 麻豆极品一区二区三区| 亚洲一级二级三级在线免费观看| 久久精品视频一区| 777久久久精品| 色8久久人人97超碰香蕉987| 国产精品亚洲综合一区在线观看| 亚洲图片欧美色图| 亚洲欧美区自拍先锋| 国产农村妇女精品| 337p日本欧洲亚洲大胆色噜噜| 欧美性生交片4| 99精品久久只有精品| 风间由美一区二区三区在线观看 | 亚洲一区二区三区四区五区中文| 久久久久国产一区二区三区四区 | 欧美午夜精品久久久| 99热这里都是精品| 国产精品1区二区.| 韩国视频一区二区| 久久精品国产成人一区二区三区| 日韩avvvv在线播放| 亚洲福利一区二区| 夜夜嗨av一区二区三区网页 | 欧美亚洲国产一区在线观看网站| 成人av午夜影院| 国产a精品视频| 国产一区二区在线免费观看| 九一久久久久久| 激情久久久久久久久久久久久久久久| 日本欧洲一区二区| 蜜桃久久av一区| 美女网站在线免费欧美精品| 免费成人小视频| 麻豆成人91精品二区三区| 久久精品72免费观看| 久久er精品视频| 国产精品自产自拍| 成人影视亚洲图片在线| 成人午夜电影久久影院| 91视频精品在这里| 欧美午夜精品一区二区蜜桃| 555www色欧美视频| 精品久久人人做人人爰| 亚洲精品一区二区三区蜜桃下载| 精品粉嫩超白一线天av| 亚洲国产成人午夜在线一区| 亚洲欧美偷拍卡通变态| 亚洲成人精品一区| 国产最新精品精品你懂的| jiyouzz国产精品久久| 欧亚一区二区三区| 日韩女优av电影| 中文字幕二三区不卡| 亚洲日本丝袜连裤袜办公室| 一区二区欧美视频| 美女任你摸久久 | 欧美日韩精品专区| 欧美一卡二卡三卡四卡| 久久精品一区二区三区不卡 | 色一区在线观看| 欧美一卡二卡三卡四卡| 中文字幕第一区综合| 香蕉影视欧美成人| 国产伦精品一区二区三区免费迷| 91亚洲男人天堂| 日韩一区二区三区视频| 国产精品久久久久一区| 五月婷婷久久综合| 国产精品66部| 欧美人妖巨大在线| 欧美国产日韩亚洲一区| 亚洲成人动漫av| 成人免费视频免费观看| 欧美精品乱人伦久久久久久| 国产丝袜在线精品| 日韩电影在线一区| 91日韩在线专区| 2019国产精品| 天天综合天天综合色| 成人午夜激情影院| 欧美变态tickling挠脚心| 亚洲激情自拍视频| 国产999精品久久| 日韩一级视频免费观看在线| 中文字幕一区二区三区在线播放| 美女视频一区在线观看| 91传媒视频在线播放| 国产农村妇女毛片精品久久麻豆| 日韩精品欧美精品| 色综合久久综合网欧美综合网| 久久这里只有精品6| 日本色综合中文字幕| 在线观看不卡一区| 亚洲男女毛片无遮挡| 高清久久久久久| 久久久久成人黄色影片| 久久国产三级精品| 日韩欧美在线123| 三级一区在线视频先锋| 在线观看亚洲一区| 亚洲欧美另类综合偷拍| av午夜一区麻豆| 中文字幕国产一区| 成人免费av在线| 国产蜜臀av在线一区二区三区| 久久电影网站中文字幕| 91精品福利在线一区二区三区| 亚洲伊人伊色伊影伊综合网| 日本韩国一区二区三区视频| 中文字幕一区二区三区视频| 成人夜色视频网站在线观看| 国产日韩欧美综合一区|