~ubuntu-branches/ubuntu/lucid/unrar-nonfree/lucid

« back to all changes in this revision

Viewing changes to cmddata.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Martin Meredith
  • Date: 2009-06-06 17:46:05 UTC
  • mfrom: (1.1.11 upstream) (5.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090606174605-h4ciqxlpy39jmjx0
Tags: 1:3.9.3-1
* New upstream release
* Updated Copyright file (Closes: #531432)

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
  *ArcNameW=0;
23
23
  FileLists=false;
24
24
  NoMoreSwitches=false;
25
 
  TimeConverted=false;
26
25
 
27
26
  FileArgs=new StringList;
28
27
  ExclArgs=new StringList;
162
161
  for (int I=1;I<argc;I++)
163
162
    if (IsSwitch(*argv[I]))
164
163
    {
 
164
      if (stricomp(&argv[I][1],"-")==0)
 
165
        break;
165
166
      if (stricomp(&argv[I][1],"cfg-")==0)
166
167
        ConfigEnabled=false;
167
168
#ifndef GUI
175
176
#endif
176
177
      if (strnicomp(&argv[I][1],"sc",2)==0)
177
178
      {
178
 
        // process -cs before reading any file lists
 
179
        // Process -sc before reading any file lists.
179
180
        ProcessSwitch(&argv[I][1]);
180
181
      }
181
182
    }
368
369
            strncpyz(GenerateMask,Switch+2,ASIZE(GenerateMask));
369
370
          }
370
371
          break;
 
372
        case 'I':
 
373
          IgnoreGeneralAttr=true;
 
374
          break;
371
375
        case 'N': //reserved for archive name
372
376
          break;
373
377
        case 'O':
444
448
          Recurse=RECURSE_ALWAYS;
445
449
          break;
446
450
        case '-':
447
 
          Recurse=0;
 
451
          Recurse=RECURSE_DISABLE;
448
452
          break;
449
453
        case '0':
450
454
          Recurse=RECURSE_WILDCARDS;
644
648
#ifdef PACK_SMP
645
649
        case 'T':
646
650
          Threads=atoi(Switch+2);
647
 
          if (Threads>MaxSearchThreads)
 
651
          if (Threads>16)
648
652
            BadSwitch(Switch);
649
653
          else
650
654
          {
681
685
          break;
682
686
        default:
683
687
          {
684
 
            Int64 NewVolSize=atoil(&Switch[1]);
 
688
            int64 NewVolSize=atoil(&Switch[1]);
685
689
 
686
690
            if (NewVolSize==0)
687
 
              NewVolSize=INT64ERR;
 
691
              NewVolSize=INT64NDF; // Autodetecting volume size.
688
692
            else
689
693
              switch (Switch[strlen(Switch)-1])
690
694
              {
691
695
                case 'f':
692
696
                case 'F':
693
 
                  switch(int64to32(NewVolSize))
 
697
                  switch(NewVolSize)
694
698
                  {
695
699
                    case 360:
696
700
                      NewVolSize=362496;
799
803
            break;
800
804
          case 'C':
801
805
            {
 
806
              // Switch is already found bad, avoid reporting it several times.
 
807
              bool AlreadyBad=false;
 
808
 
802
809
              RAR_CHARSET rch=RCH_DEFAULT;
803
810
              switch(etoupper(Switch[2]))
804
811
              {
813
820
                  break;
814
821
                default :
815
822
                  BadSwitch(Switch);
 
823
                  AlreadyBad=true;
816
824
                  break;
817
825
              };
818
 
              if (Switch[3]==0)
819
 
                CommentCharset=FilelistCharset=rch;
820
 
              else
821
 
                for (int I=3;Switch[I]!=0;I++)
822
 
                  switch(etoupper(Switch[I]))
823
 
                  {
824
 
                    case 'C':
825
 
                      CommentCharset=rch;
826
 
                      break;
827
 
                    case 'L':
828
 
                      FilelistCharset=rch;
829
 
                      break;
830
 
                    default:
831
 
                      BadSwitch(Switch);
832
 
                      break;
833
 
                  }
 
826
              if (!AlreadyBad)
 
827
                if (Switch[3]==0)
 
828
                  CommentCharset=FilelistCharset=rch;
 
829
                else
 
830
                  for (int I=3;Switch[I]!=0 && !AlreadyBad;I++)
 
831
                    switch(etoupper(Switch[I]))
 
832
                    {
 
833
                      case 'C':
 
834
                        CommentCharset=rch;
 
835
                        break;
 
836
                      case 'L':
 
837
                        FilelistCharset=rch;
 
838
                        break;
 
839
                      default:
 
840
                        BadSwitch(Switch);
 
841
                        AlreadyBad=true;
 
842
                        break;
 
843
                    }
834
844
            }
835
845
            break;
836
846
 
931
941
  OutTitle();
932
942
  static MSGID Help[]={
933
943
#ifdef SFX_MODULE
 
944
    // Console SFX switches definition.
934
945
    MCHelpCmd,MSHelpCmdE,MSHelpCmdT,MSHelpCmdV
935
946
#elif defined(UNRAR)
 
947
    // UnRAR switches definition.
936
948
    MUNRARTitle1,MRARTitle2,MCHelpCmd,MCHelpCmdE,MCHelpCmdL,
937
949
    MCHelpCmdP,MCHelpCmdT,MCHelpCmdV,MCHelpCmdX,MCHelpSw,
938
 
    MCHelpSwm,MCHelpSwAC,MCHelpSwAD,MCHelpSwAP,
 
950
    MCHelpSwm,MCHelpSwAC,MCHelpSwAD,MCHelpSwAI,MCHelpSwAP,
939
951
    MCHelpSwCm,MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU,
940
952
    MCHelpSwDH,MCHelpSwEP,MCHelpSwEP3,MCHelpSwF,MCHelpSwIDP,MCHelpSwIERR,
941
953
    MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB,MCHelpSwN,MCHelpSwNa,MCHelpSwNal,
944
956
    MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,MCHelpSwVUnr,
945
957
    MCHelpSwVER,MCHelpSwVP,MCHelpSwX,MCHelpSwXa,MCHelpSwXal,MCHelpSwY
946
958
#else
 
959
    // RAR switches definition.
947
960
    MRARTitle1,MRARTitle2,MCHelpCmd,MCHelpCmdA,MCHelpCmdC,MCHelpCmdCF,
948
961
    MCHelpCmdCH,MCHelpCmdCW,MCHelpCmdD,MCHelpCmdE,MCHelpCmdF,MCHelpCmdI,
949
962
    MCHelpCmdK,MCHelpCmdL,MCHelpCmdM,MCHelpCmdP,MCHelpCmdR,MCHelpCmdRC,
950
963
    MCHelpCmdRN,MCHelpCmdRR,MCHelpCmdRV,MCHelpCmdS,MCHelpCmdT,MCHelpCmdU,
951
964
    MCHelpCmdV,MCHelpCmdX,MCHelpSw,MCHelpSwm,MCHelpSwAC,MCHelpSwAD,MCHelpSwAG,
952
 
    MCHelpSwAO,MCHelpSwAP,MCHelpSwAS,MCHelpSwAV,MCHelpSwAVm,MCHelpSwCm,
953
 
    MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU,MCHelpSwDF,MCHelpSwDH,MCHelpSwDR,
954
 
    MCHelpSwDS,MCHelpSwDW,MCHelpSwEa,MCHelpSwED,MCHelpSwEE,MCHelpSwEN,
955
 
    MCHelpSwEP,MCHelpSwEP1,MCHelpSwEP2,MCHelpSwEP3,MCHelpSwF,MCHelpSwHP,
956
 
    MCHelpSwIDP,MCHelpSwIEML,MCHelpSwIERR,MCHelpSwILOG,MCHelpSwINUL,
 
965
    MCHelpSwAI,MCHelpSwAO,MCHelpSwAP,MCHelpSwAS,MCHelpSwAV,MCHelpSwAVm,
 
966
    MCHelpSwCm,MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU,MCHelpSwDF,MCHelpSwDH,
 
967
    MCHelpSwDR,MCHelpSwDS,MCHelpSwDW,MCHelpSwEa,MCHelpSwED,MCHelpSwEE,
 
968
    MCHelpSwEN,MCHelpSwEP,MCHelpSwEP1,MCHelpSwEP2,MCHelpSwEP3,MCHelpSwF,
 
969
    MCHelpSwHP,MCHelpSwIDP,MCHelpSwIEML,MCHelpSwIERR,MCHelpSwILOG,MCHelpSwINUL,
957
970
    MCHelpSwIOFF,MCHelpSwISND,MCHelpSwK,MCHelpSwKB,MCHelpSwMn,MCHelpSwMC,
958
971
    MCHelpSwMD,MCHelpSwMS,MCHelpSwMT,MCHelpSwN,MCHelpSwNa,MCHelpSwNal,
959
972
    MCHelpSwO,MCHelpSwOC,MCHelpSwOL,MCHelpSwOR,MCHelpSwOS,MCHelpSwOW,
960
 
    MCHelpSwP,MCHelpSwPm,MCHelpSwR,MCHelpSwR0,MCHelpSwRI,MCHelpSwRR,
961
 
    MCHelpSwRV,MCHelpSwS,MCHelpSwSm,MCHelpSwSC,MCHelpSwSFX,MCHelpSwSI,
962
 
    MCHelpSwSL,MCHelpSwSM,MCHelpSwT,MCHelpSwTA,MCHelpSwTB,MCHelpSwTK,
963
 
    MCHelpSwTL,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,MCHelpSwV,
964
 
    MCHelpSwVn,MCHelpSwVD,MCHelpSwVER,MCHelpSwVN,MCHelpSwVP,MCHelpSwW,
965
 
    MCHelpSwX,MCHelpSwXa,MCHelpSwXal,MCHelpSwY,MCHelpSwZ
 
973
    MCHelpSwP,MCHelpSwPm,MCHelpSwR,MCHelpSwRm,MCHelpSwR0,MCHelpSwRI,
 
974
    MCHelpSwRR,MCHelpSwRV,MCHelpSwS,MCHelpSwSm,MCHelpSwSC,MCHelpSwSFX,
 
975
    MCHelpSwSI,MCHelpSwSL,MCHelpSwSM,MCHelpSwT,MCHelpSwTA,MCHelpSwTB,
 
976
    MCHelpSwTK,MCHelpSwTL,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,
 
977
    MCHelpSwV,MCHelpSwVn,MCHelpSwVD,MCHelpSwVER,MCHelpSwVN,MCHelpSwVP,
 
978
    MCHelpSwW,MCHelpSwX,MCHelpSwXa,MCHelpSwXal,MCHelpSwY,MCHelpSwZ
966
979
#endif
967
980
  };
968
981
 
1068
1081
    return(true);
1069
1082
  if (FileTimeAfter.IsSet() && ft<=FileTimeAfter)
1070
1083
    return(true);
1071
 
/*
1072
 
  if (FileTimeOlder!=0 || FileTimeNewer!=0)
1073
 
  {
1074
 
    if (!TimeConverted)
1075
 
    {
1076
 
      if (FileTimeOlder!=0)
1077
 
        FileTimeOlder=SecondsToDosTime(FileTimeOlder);
1078
 
      if (FileTimeNewer!=0)
1079
 
        FileTimeNewer=SecondsToDosTime(FileTimeNewer);
1080
 
      TimeConverted=true;
1081
 
    }
1082
 
    if (FileTimeOlder!=0 && ft>=FileTimeOlder)
1083
 
      return(true);
1084
 
    if (FileTimeNewer!=0 && ft<=FileTimeNewer)
1085
 
      return(true);
1086
 
 
1087
 
  }
1088
 
*/
1089
1084
  return(false);
1090
1085
}
1091
1086
#endif
1092
1087
 
1093
1088
 
1094
1089
#ifndef SFX_MODULE
1095
 
bool CommandData::SizeCheck(Int64 Size)
 
1090
bool CommandData::SizeCheck(int64 Size)
1096
1091
{
1097
 
  if (FileSizeLess!=INT64ERR && Size>=FileSizeLess)
 
1092
  if (FileSizeLess!=INT64NDF && Size>=FileSizeLess)
1098
1093
    return(true);
1099
 
  if (FileSizeMore!=INT64ERR && Size<=FileSizeMore)
 
1094
  if (FileSizeMore!=INT64NDF && Size<=FileSizeMore)
1100
1095
    return(true);
1101
1096
  return(false);
1102
1097
}
1103
1098
#endif
1104
1099
 
1105
1100
 
 
1101
 
 
1102
 
1106
1103
int CommandData::IsProcessFile(FileHeader &NewLhd,bool *ExactMatch,int MatchType)
1107
1104
{
1108
1105
  if (strlen(NewLhd.FileName)>=NM || strlenw(NewLhd.FileNameW)>=NM)