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,
67 #ifdef WITH_ICONV
68 MCHelpSwLA,MCHelpSwLL,MCHelpSwLO,
69 #endif
70 MCHelpSwN,MCHelpSwNa,MCHelpSwNal,
71 MCHelpSwO,MCHelpSwOC,MCHelpSwOL,MCHelpSwOR,MCHelpSwOW,MCHelpSwP,
72 MCHelpSwPm,MCHelpSwR,MCHelpSwRI,MCHelpSwSC,MCHelpSwSL,MCHelpSwSM,
73 MCHelpSwTA,MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,
74 MCHelpSwVUnr,MCHelpSwVER,MCHelpSwVP,MCHelpSwX,MCHelpSwXa,MCHelpSwXal,
75 MCHelpSwY
76 #endif
77 };
78
79 for (uint I=0;I<ASIZE(Help);I++)
80 {
81 #ifndef SFX_MODULE
82 if (CmpMSGID(Help[I],MCHelpSwV))
83 continue;
84 #ifndef _WIN_ALL
85 static MSGID Win32Only[]={
86 MCHelpSwIEML,MCHelpSwVD,MCHelpSwAO,MCHelpSwOS,MCHelpSwIOFF,
87 MCHelpSwEP2,MCHelpSwOC,MCHelpSwONI,MCHelpSwDR,MCHelpSwRI
88 };
89 bool Found=false;
90 for (uint J=0;J<ASIZE(Win32Only);J++)
91 if (CmpMSGID(Help[I],Win32Only[J]))
92 {
93 Found=true;
94 break;
95 }
96 if (Found)
97 continue;
98 #endif
99 #if !defined(_UNIX) && !defined(_WIN_ALL)
100 if (CmpMSGID(Help[I],MCHelpSwOW))
101 continue;
102 #endif
103 #if !defined(_WIN_ALL) && !defined(_EMX)
104 if (CmpMSGID(Help[I],MCHelpSwAC))
105 continue;
106 #endif
107 #ifndef SAVE_LINKS
108 if (CmpMSGID(Help[I],MCHelpSwOL))
109 continue;
110 #endif
111 #ifndef RAR_SMP
112 if (CmpMSGID(Help[I],MCHelpSwMT))
113 continue;
114 #endif
115 #endif
116 mprintf(St(Help[I]));
117 }
118 mprintf(L"\n");
119 ErrHandler.Exit(ExitCode);
120 #endif
121 }
122
123