⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmddata.cpp

📁 RAR源码相关
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#endif        default :          BadSwitch(Switch);          break;      }      break;    case 'R':      switch(etoupper(Switch[1]))      {        case 0:          Recurse=RECURSE_ALWAYS;          break;        case '-':          Recurse=0;          break;        case '0':          Recurse=RECURSE_WILDCARDS;          break;#ifndef _WIN_CE        case 'I':          {            Priority=atoi(Switch+2);            char *ChPtr=strchr(Switch+2,':');            if (ChPtr!=NULL)            {              SleepTime=atoi(ChPtr+1);              InitSystemOptions(SleepTime);            }            SetPriority(Priority);          }          break;#endif      }      break;    case 'Y':      AllYes=true;      break;    case 'N':    case 'X':      if (Switch[1]!=0)      {        StringList *Args=etoupper(Switch[0])=='N' ? InclArgs:ExclArgs;        if (Switch[1]=='@' && !IsWildcard(Switch))        {          RAR_CHARSET Charset=FilelistCharset;#if defined(_WIN_32) && !defined(GUI)          // for compatibility reasons we use OEM encoding          // in Win32 console version by default          if (Charset==RCH_DEFAULT)            Charset=RCH_OEM;#endif          ReadTextFile(Switch+2,Args,false,true,Charset,true,true);        }        else          Args->AddString(Switch+1);      }      break;    case 'E':      switch(etoupper(Switch[1]))      {        case 'P':          switch(Switch[2])          {            case 0:              ExclPath=EXCL_SKIPWHOLEPATH;              break;            case '1':              ExclPath=EXCL_BASEPATH;              break;            case '2':              ExclPath=EXCL_SAVEFULLPATH;              break;            case '3':              ExclPath=EXCL_ABSPATH;              break;          }          break;        case 'D':          ExclEmptyDir=true;          break;        case 'E':          ProcessEA=false;          break;        case 'N':          NoEndBlock=true;          break;        default:          if (Switch[1]=='+')          {            InclFileAttr=GetExclAttr(&Switch[2]);            InclAttrSet=true;          }          else            ExclFileAttr=GetExclAttr(&Switch[1]);          break;      }      break;    case 'P':      if (Switch[1]==0)      {        GetPassword(PASSWORD_GLOBAL,NULL,Password,sizeof(Password));        eprintf("\n");      }      else        strncpyz(Password,Switch+1,ASIZE(Password));      break;    case 'H':      if (etoupper(Switch[1])=='P')      {        EncryptHeaders=true;        if (Switch[2]!=0)          strncpyz(Password,Switch+2,ASIZE(Password));        else          if (*Password==0)          {            GetPassword(PASSWORD_GLOBAL,NULL,Password,sizeof(Password));            eprintf("\n");          }      }      break;    case 'Z':      strncpyz(CommentFile,Switch[1]!=0 ? Switch+1:"stdin",ASIZE(CommentFile));      break;    case 'M':      switch(etoupper(Switch[1]))      {        case 'C':          {            char *Str=Switch+2;            if (*Str=='-')              for (int I=0;I<sizeof(FilterModes)/sizeof(FilterModes[0]);I++)                FilterModes[I].State=FILTER_DISABLE;            else              while (*Str)              {                int Param1=0,Param2=0;                FilterState State=FILTER_AUTO;                FilterType Type=FILTER_NONE;                if (isdigit(*Str))                {                  Param1=atoi(Str);                  while (isdigit(*Str))                    Str++;                }                if (*Str==':' && isdigit(Str[1]))                {                  Param2=atoi(++Str);                  while (isdigit(*Str))                    Str++;                }                switch(etoupper(*(Str++)))                {                  case 'T': Type=FILTER_PPM;         break;                  case 'E': Type=FILTER_E8;          break;                  case 'D': Type=FILTER_DELTA;       break;                  case 'A': Type=FILTER_AUDIO;       break;                  case 'C': Type=FILTER_RGB;         break;                  case 'I': Type=FILTER_ITANIUM;     break;                  case 'L': Type=FILTER_UPCASETOLOW; break;                }                if (*Str=='+' || *Str=='-')                  State=*(Str++)=='+' ? FILTER_FORCE:FILTER_DISABLE;                FilterModes[Type].State=State;                FilterModes[Type].Param1=Param1;                FilterModes[Type].Param2=Param2;              }            }          break;        case 'M':          break;        case 'D':          {            if ((WinSize=atoi(&Switch[2]))==0)              WinSize=0x10000<<(etoupper(Switch[2])-'A');            else              WinSize*=1024;            if (!CheckWinSize())              BadSwitch(Switch);          }          break;        case 'S':          {            char *Names=Switch+2,DefNames[512];            if (*Names==0)            {              strcpy(DefNames,DefaultStoreList);              Names=DefNames;            }            while (*Names!=0)            {              char *End=strchr(Names,';');              if (End!=NULL)                *End=0;              if (*Names=='.')                Names++;              char Mask[NM];              if (strpbrk(Names,"*?.")==NULL)                sprintf(Mask,"*.%s",Names);              else                strcpy(Mask,Names);              StoreArgs->AddString(Mask);              if (End==NULL)                break;              Names=End+1;            }          }          break;#ifdef PACK_SMP        case 'T':          Threads=atoi(Switch+2);          if (Threads>MaxSearchThreads)            BadSwitch(Switch);          else          {          }          break;#endif        default:          Method=Switch[1]-'0';          if (Method>5 || Method<0)            BadSwitch(Switch);          break;      }      break;    case 'V':      switch(etoupper(Switch[1]))      {#ifdef _WIN_32        case 'D':          EraseDisk=true;          break;#endif        case 'N':          OldNumbering=true;          break;        case 'P':          VolumePause=true;          break;        case 'E':          if (etoupper(Switch[2])=='R')            VersionControl=atoi(Switch+3)+1;          break;        case '-':          VolSize=0;          break;        default:          {            Int64 NewVolSize=atoil(&Switch[1]);            if (NewVolSize==0)              NewVolSize=INT64ERR;            else              switch (Switch[strlen(Switch)-1])              {                case 'f':                case 'F':                  switch(int64to32(NewVolSize))                  {                    case 360:                      NewVolSize=362496;                      break;                    case 720:                      NewVolSize=730112;                      break;                    case 1200:                      NewVolSize=1213952;                      break;                    case 1440:                      NewVolSize=1457664;                      break;                    case 2880:                      NewVolSize=2915328;                      break;                  }                  break;                case 'k':                  NewVolSize*=1024;                  break;                case 'm':                  NewVolSize*=1024*1024;                  break;                case 'M':                  NewVolSize*=1000*1000;                  break;                case 'g':                  NewVolSize*=1024*1024;                  NewVolSize*=1024;                  break;                case 'G':                  NewVolSize*=1000*1000;                  NewVolSize*=1000;                  break;                case 'b':                case 'B':                  break;                default:                  NewVolSize*=1000;                  break;              }            if (VolSize==0)              VolSize=NewVolSize;            else              NextVolSizes.Push(NewVolSize);          }          break;      }      break;    case 'F':      if (Switch[1]==0)        FreshFiles=true;      else        BadSwitch(Switch);      break;    case 'U':      if (Switch[1]==0)        UpdateFiles=true;      else        BadSwitch(Switch);      break;    case 'W':      strncpyz(TempPath,&Switch[1],ASIZE(TempPath));      AddEndSlash(TempPath);      break;    case 'S':      if (strnicomp(Switch,"SFX",3)==0)      {        const char *SFXName=Switch[3] ? Switch+3:DefSFXName;        if (PointToName(SFXName)!=SFXName || FileExist(SFXName))          strcpy(SFXModule,SFXName);        else          GetConfigName(SFXName,SFXModule,true);      }      if (isdigit(Switch[1]))      {        Solid|=SOLID_COUNT;        SolidCount=atoi(&Switch[1]);      }      else        switch(etoupper(Switch[1]))        {          case 0:            Solid|=SOLID_NORMAL;            break;          case '-':            Solid=SOLID_NONE;            break;          case 'E':            Solid|=SOLID_FILEEXT;            break;          case 'V':            Solid|=Switch[2]=='-' ? SOLID_VOLUME_DEPENDENT:SOLID_VOLUME_INDEPENDENT;            break;          case 'D':            Solid|=SOLID_VOLUME_DEPENDENT;            break;          case 'L':            if (isdigit(Switch[2]))              FileSizeLess=atoil(Switch+2);            break;          case 'M':            if (isdigit(Switch[2]))              FileSizeMore=atoil(Switch+2);            break;          case 'C':            {              RAR_CHARSET rch;              switch(etoupper(Switch[2]))              {                case 'A':                  rch=RCH_ANSI;                  break;                case 'O':                  rch=RCH_OEM;                  break;                case 'U':                  rch=RCH_UNICODE;                  break;                default :                  BadSwitch(Switch);                  break;              };              if (Switch[3]==0)                CommentCharset=FilelistCharset=rch;              else                for (int I=3;Switch[I]!=0;I++)                  switch(etoupper(Switch[I]))                  {                    case 'C':                      CommentCharset=rch;                      break;                    case 'L':                      FilelistCharset=rch;                      break;                    default:                      BadSwitch(Switch);                      break;                  }            }            break;        }      break;    case 'C':      if (Switch[2]==0)        switch(etoupper(Switch[1]))        {          case '-':            DisableComment=true;            break;          case 'U':            ConvertNames=NAMES_UPPERCASE;            break;          case 'L':            ConvertNames=NAMES_LOWERCASE;            break;        }      break;    case 'K':      switch(etoupper(Switch[1]))      {        case 'B':          KeepBroken=true;          break;        case 0:          Lock=true;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -