OutTitle()1 void CommandData::OutTitle()
2 {
3 if (BareOutput || DisableCopyright)
4 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 #endif
36 }
37
38
CmpMSGID(MSGID i1,MSGID i2)39 inline bool CmpMSGID(MSGID i1,MSGID i2)
40 {
41 #ifdef MSGID_INT
42 return i1==i2;
43 #else
44 // If MSGID is const char*, we cannot compare pointers only.
45 // Pointers to different instances of same string can differ,
46 // so we need to compare complete strings.
47 return wcscmp(i1,i2)==0;
48 #endif
49 }
50
OutHelp(RAR_EXIT ExitCode)51 void CommandData::OutHelp(RAR_EXIT ExitCode)
52 {
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,
65 MCHelpSwDH,MCHelpSwEP,MCHelpSwEP3,MCHelpSwF,MCHelpSwIDP,MCHelpSwIERR,
66 MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB,MCHelpSwN,MCHelpSwNa,MCHelpSwNal,
67 MCHelpSwO,MCHelpSwOC,MCHelpSwOL,MCHelpSwOR,MCHelpSwOW,MCHelpSwP,
68 MCHelpSwPm,MCHelpSwR,MCHelpSwRI,MCHelpSwSC,MCHelpSwSL,MCHelpSwSM,
69 MCHelpSwTA,MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,
70 MCHelpSwVUnr,MCHelpSwVER,MCHelpSwVP,MCHelpSwX,MCHelpSwXa,MCHelpSwXal,
71 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,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 #if !defined(_UNIX) && !defined(_WIN_ALL)
96 if (CmpMSGID(Help[I],MCHelpSwOW))
97 continue;
98 #endif
99 #if !defined(_WIN_ALL) && !defined(_EMX)
100 if (CmpMSGID(Help[I],MCHelpSwAC))
101 continue;
102 #endif
103 #ifndef SAVE_LINKS
104 if (CmpMSGID(Help[I],MCHelpSwOL))
105 continue;
106 #endif
107 #ifndef RAR_SMP
108 if (CmpMSGID(Help[I],MCHelpSwMT))
109 continue;
110 #endif
111 #endif
112 mprintf(St(Help[I]));
113 }
114 mprintf(L"\n");
115 ErrHandler.Exit(ExitCode);
116 #endif
117 }
118
119