~ubuntu-branches/ubuntu/trusty/unrar-nonfree/trusty

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