1
by Chris Anderson
Import upstream version 3.3.6 |
1 |
#include "rar.hpp" |
2 |
||
3 |
#if !defined(GUI) && !defined(RARDLL)
|
|
4 |
int main(int argc, char *argv[]) |
|
5 |
{
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
6 |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
7 |
#ifdef _UNIX
|
8 |
setlocale(LC_ALL,""); |
|
9 |
#endif
|
|
1.1.4
by Martin Meredith
Import upstream version 3.6.8 |
10 |
|
1.1.1
by Chris Anderson
Import upstream version 3.4.3 |
11 |
#if defined(_EMX) && !defined(_DJGPP)
|
12 |
uni_init(0); |
|
13 |
#endif
|
|
1.1.4
by Martin Meredith
Import upstream version 3.6.8 |
14 |
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
15 |
#if !defined(_SFX_RTL_) && !defined(_WIN_ALL)
|
1
by Chris Anderson
Import upstream version 3.3.6 |
16 |
setbuf(stdout,NULL); |
1.1.4
by Martin Meredith
Import upstream version 3.6.8 |
17 |
#endif
|
1
by Chris Anderson
Import upstream version 3.3.6 |
18 |
|
1.1.4
by Martin Meredith
Import upstream version 3.6.8 |
19 |
#if !defined(SFX_MODULE) && defined(_EMX)
|
20 |
EnumConfigPaths(argv[0],-1); |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
21 |
#endif
|
22 |
||
23 |
ErrHandler.SetSignalHandlers(true); |
|
24 |
||
25 |
RARInitData(); |
|
26 |
||
27 |
#ifdef SFX_MODULE
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
28 |
char ModuleNameA[NM]; |
29 |
wchar ModuleNameW[NM]; |
|
30 |
#ifdef _WIN_ALL
|
|
31 |
GetModuleFileNameW(NULL,ModuleNameW,ASIZE(ModuleNameW)); |
|
32 |
WideToChar(ModuleNameW,ModuleNameA); |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
33 |
#else
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
34 |
strcpy(ModuleNameA,argv[0]); |
35 |
*ModuleNameW=0; |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
36 |
#endif
|
37 |
#endif
|
|
38 |
||
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
39 |
#ifdef _WIN_ALL
|
1.1.4
by Martin Meredith
Import upstream version 3.6.8 |
40 |
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT|SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); |
1.2.1
by Martin Meredith
Import upstream version 3.8.2 |
41 |
|
42 |
||
43 |
#endif
|
|
44 |
||
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
45 |
#if defined(_WIN_ALL) && !defined(SFX_MODULE) && !defined(SHELL_EXT)
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
46 |
// Must be initialized, normal initialization can be skipped in case of
|
47 |
// exception.
|
|
48 |
bool ShutdownOnClose=false; |
|
1.1.7
by Martin Meredith
Import upstream version 3.7.8 |
49 |
#endif
|
1
by Chris Anderson
Import upstream version 3.3.6 |
50 |
|
51 |
#ifdef ALLOW_EXCEPTIONS
|
|
52 |
try
|
|
53 |
#endif
|
|
54 |
{
|
|
55 |
||
56 |
CommandData Cmd; |
|
57 |
#ifdef SFX_MODULE
|
|
58 |
strcpy(Cmd.Command,"X"); |
|
59 |
char *Switch=NULL; |
|
60 |
#ifdef _SFX_RTL_
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
61 |
char *CmdLine=GetCommandLineA(); |
1
by Chris Anderson
Import upstream version 3.3.6 |
62 |
if (CmdLine!=NULL && *CmdLine=='\"') |
63 |
CmdLine=strchr(CmdLine+1,'\"'); |
|
64 |
if (CmdLine!=NULL && (CmdLine=strpbrk(CmdLine," /"))!=NULL) |
|
65 |
{
|
|
1.2.6
by Martin Meredith
Import upstream version 3.9.6 |
66 |
while (IsSpace(*CmdLine)) |
1
by Chris Anderson
Import upstream version 3.3.6 |
67 |
CmdLine++; |
68 |
Switch=CmdLine; |
|
69 |
}
|
|
70 |
#else
|
|
71 |
Switch=argc>1 ? argv[1]:NULL; |
|
72 |
#endif
|
|
73 |
if (Switch!=NULL && Cmd.IsSwitch(Switch[0])) |
|
74 |
{
|
|
1.1.5
by Martin Meredith
Import upstream version 3.7.2 |
75 |
int UpperCmd=etoupper(Switch[1]); |
1
by Chris Anderson
Import upstream version 3.3.6 |
76 |
switch(UpperCmd) |
77 |
{
|
|
78 |
case 'T': |
|
79 |
case 'V': |
|
80 |
Cmd.Command[0]=UpperCmd; |
|
81 |
break; |
|
82 |
case '?': |
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
83 |
Cmd.OutHelp(RARX_SUCCESS); |
1
by Chris Anderson
Import upstream version 3.3.6 |
84 |
break; |
85 |
}
|
|
86 |
}
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
87 |
Cmd.AddArcName(ModuleNameA,ModuleNameW); |
1.2.12
by Martin Meredith
Import upstream version 4.1.4 |
88 |
Cmd.ParseDone(); |
89 |
#else // !SFX_MODULE |
|
90 |
Cmd.PreprocessCommandLine(argc,argv); |
|
91 |
if (!Cmd.ConfigDisabled) |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
92 |
{
|
1.2.12
by Martin Meredith
Import upstream version 4.1.4 |
93 |
Cmd.ReadConfig(); |
1
by Chris Anderson
Import upstream version 3.3.6 |
94 |
Cmd.ParseEnvVar(); |
95 |
}
|
|
1.2.12
by Martin Meredith
Import upstream version 4.1.4 |
96 |
Cmd.ParseCommandLine(argc,argv); |
1
by Chris Anderson
Import upstream version 3.3.6 |
97 |
#endif
|
98 |
||
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
99 |
#if defined(_WIN_ALL) && !defined(SFX_MODULE) && !defined(SHELL_EXT)
|
1.1.7
by Martin Meredith
Import upstream version 3.7.8 |
100 |
ShutdownOnClose=Cmd.Shutdown; |
101 |
#endif
|
|
1
by Chris Anderson
Import upstream version 3.3.6 |
102 |
|
103 |
InitConsoleOptions(Cmd.MsgStream,Cmd.Sound); |
|
104 |
InitLogOptions(Cmd.LogName); |
|
105 |
ErrHandler.SetSilent(Cmd.AllYes || Cmd.MsgStream==MSG_NULL); |
|
106 |
ErrHandler.SetShutdown(Cmd.Shutdown); |
|
107 |
||
108 |
Cmd.OutTitle(); |
|
109 |
Cmd.ProcessCommand(); |
|
110 |
}
|
|
111 |
#ifdef ALLOW_EXCEPTIONS
|
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
112 |
catch (RAR_EXIT ErrCode) |
1
by Chris Anderson
Import upstream version 3.3.6 |
113 |
{
|
114 |
ErrHandler.SetErrorCode(ErrCode); |
|
115 |
}
|
|
116 |
#ifdef ENABLE_BAD_ALLOC
|
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
117 |
catch (std::bad_alloc) |
1
by Chris Anderson
Import upstream version 3.3.6 |
118 |
{
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
119 |
ErrHandler.MemoryErrorMsg(); |
120 |
ErrHandler.SetErrorCode(RARX_MEMORY); |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
121 |
}
|
122 |
#endif
|
|
123 |
catch (...) |
|
124 |
{
|
|
1.2.13
by Nick Andrik
Import upstream version 4.2.4 |
125 |
ErrHandler.SetErrorCode(RARX_FATAL); |
1
by Chris Anderson
Import upstream version 3.3.6 |
126 |
}
|
127 |
#endif
|
|
1.2.12
by Martin Meredith
Import upstream version 4.1.4 |
128 |
|
1
by Chris Anderson
Import upstream version 3.3.6 |
129 |
File::RemoveCreated(); |
130 |
#if defined(SFX_MODULE) && defined(_DJGPP)
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
131 |
_chmod(ModuleNameA,1,0x20); |
1
by Chris Anderson
Import upstream version 3.3.6 |
132 |
#endif
|
1.1.1
by Chris Anderson
Import upstream version 3.4.3 |
133 |
#if defined(_EMX) && !defined(_DJGPP)
|
134 |
uni_done(); |
|
135 |
#endif
|
|
1.2.10
by Martin Meredith
Import upstream version 4.0.2 |
136 |
#if defined(_WIN_ALL) && !defined(SFX_MODULE) && !defined(SHELL_EXT)
|
1.1.7
by Martin Meredith
Import upstream version 3.7.8 |
137 |
if (ShutdownOnClose) |
138 |
Shutdown(); |
|
139 |
#endif
|
|
1
by Chris Anderson
Import upstream version 3.3.6 |
140 |
return(ErrHandler.GetErrorCode()); |
141 |
}
|
|
142 |
#endif
|
|
143 |
||
144 |