Coverage Report

Created: 2025-04-11 06:56

/src/unrar/cmdmix.cpp
Line
Count
Source (jump to first uncovered line)
1
void CommandData::OutTitle()
2
0
{
3
0
  if (BareOutput || DisableCopyright)
4
0
    return;
5
#if defined(__GNUC__) && defined(SFX_MODULE)
6
  mprintf(St(MCopyrightS));
7
#else
8
#ifndef SILENT
9
  static bool TitleShown=false;
10
  if (TitleShown)
11
    return;
12
  TitleShown=true;
13
14
  wchar Version[80];
15
  if (RARVER_BETA!=0)
16
    swprintf(Version,ASIZE(Version),L"%d.%02d %ls %d",RARVER_MAJOR,RARVER_MINOR,St(MBeta),RARVER_BETA);
17
  else
18
    swprintf(Version,ASIZE(Version),L"%d.%02d",RARVER_MAJOR,RARVER_MINOR);
19
#if defined(_WIN_32) || defined(_WIN_64)
20
  wcsncatz(Version,L" ",ASIZE(Version));
21
#endif
22
#ifdef _WIN_32
23
  wcsncatz(Version,St(Mx86),ASIZE(Version));
24
#endif
25
#ifdef _WIN_64
26
  wcsncatz(Version,St(Mx64),ASIZE(Version));
27
#endif
28
  if (PrintVersion)
29
  {
30
    mprintf(L"%s",Version);
31
    exit(0);
32
  }
33
  mprintf(St(MUCopyright),Version,RARVER_YEAR);
34
#endif
35
0
#endif
36
0
}
37
38
39
inline bool CmpMSGID(MSGID i1,MSGID i2)
40
0
{
41
0
#ifdef MSGID_INT
42
0
  return i1==i2;
43
0
#else
44
0
  // If MSGID is const char*, we cannot compare pointers only.
45
0
  // Pointers to different instances of same string can differ,
46
0
  // so we need to compare complete strings.
47
0
  return wcscmp(i1,i2)==0;
48
0
#endif
49
0
}
50
51
void CommandData::OutHelp(RAR_EXIT ExitCode)
52
0
{
53
#if !defined(SILENT)
54
  OutTitle();
55
  static MSGID Help[]={
56
#ifdef SFX_MODULE
57
    // Console SFX switches definition.
58
    MCHelpCmd,MSHelpCmdE,MSHelpCmdT,MSHelpCmdV
59
#else
60
    // UnRAR switches definition.
61
    MUNRARTitle1,MRARTitle2,MCHelpCmd,MCHelpCmdE,MCHelpCmdL,
62
    MCHelpCmdP,MCHelpCmdT,MCHelpCmdV,MCHelpCmdX,MCHelpSw,MCHelpSwm,
63
    MCHelpSwAT,MCHelpSwAC,MCHelpSwAD,MCHelpSwAG,MCHelpSwAI,MCHelpSwAP,
64
    MCHelpSwCm,MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU,MCHelpSwDH,MCHelpSwEP,
65
    MCHelpSwEP3,MCHelpSwEP4,MCHelpSwF,MCHelpSwIDP,MCHelpSwIERR,
66
    MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB,MCHelpSwME,MCHelpSwMLP,
67
    MCHelpSwN,MCHelpSwNa,MCHelpSwNal,MCHelpSwO,MCHelpSwOC,MCHelpSwOL,
68
    MCHelpSwOM,MCHelpSwOP,MCHelpSwOR,MCHelpSwOW,MCHelpSwP,MCHelpSwR,
69
    MCHelpSwRI,MCHelpSwSC,MCHelpSwSI,MCHelpSwSL,MCHelpSwSM,MCHelpSwTA,
70
    MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,MCHelpSwVUnr,
71
    MCHelpSwVER,MCHelpSwVP,MCHelpSwX,MCHelpSwXa,MCHelpSwXal,MCHelpSwY
72
#endif
73
  };
74
75
  for (uint I=0;I<ASIZE(Help);I++)
76
  {
77
#ifndef SFX_MODULE
78
    if (CmpMSGID(Help[I],MCHelpSwV))
79
      continue;
80
#ifndef _WIN_ALL
81
    static MSGID Win32Only[]={
82
      MCHelpSwIEML,MCHelpSwVD,MCHelpSwAO,MCHelpSwOS,MCHelpSwIOFF,
83
      MCHelpSwEP2,MCHelpSwMLP,MCHelpSwOC,MCHelpSwONI,MCHelpSwDR,MCHelpSwRI
84
    };
85
    bool Found=false;
86
    for (uint J=0;J<ASIZE(Win32Only);J++)
87
      if (CmpMSGID(Help[I],Win32Only[J]))
88
      {
89
        Found=true;
90
        break;
91
      }
92
    if (Found)
93
      continue;
94
#endif
95
#ifdef _UNIX
96
    if (CmpMSGID(Help[I],MRARTitle2))
97
    {
98
      mprintf(St(MFwrSlTitle2));
99
      continue;
100
    }
101
#endif
102
#if !defined(_UNIX) && !defined(_WIN_ALL)
103
    if (CmpMSGID(Help[I],MCHelpSwOW))
104
      continue;
105
#endif
106
#ifndef _WIN_ALL
107
    if (CmpMSGID(Help[I],MCHelpSwAC))
108
      continue;
109
#endif
110
#ifndef SAVE_LINKS
111
    if (CmpMSGID(Help[I],MCHelpSwOL))
112
      continue;
113
#endif
114
#ifndef RAR_SMP
115
    if (CmpMSGID(Help[I],MCHelpSwMT))
116
      continue;
117
#endif
118
#endif
119
    mprintf(St(Help[I]));
120
  }
121
  mprintf(L"\n");
122
  ErrHandler.Exit(ExitCode);
123
#endif
124
0
}
125