"Fossies" - the Fresh Open Source Software Archive

Member "unrar/rar.cpp" (4 May 2022, 2357 Bytes) of package /linux/misc/unrarsrc-6.1.7.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "rar.cpp" see the Fossies "Dox" file reference documentation.

    1 #include "rar.hpp"
    2 
    3 #if !defined(RARDLL)
    4 int main(int argc, char *argv[])
    5 {
    6 
    7 #ifdef _UNIX
    8   setlocale(LC_ALL,"");
    9 #endif
   10 
   11   InitConsole();
   12   ErrHandler.SetSignalHandlers(true);
   13 
   14 #ifdef SFX_MODULE
   15   wchar ModuleName[NM];
   16 #ifdef _WIN_ALL
   17   GetModuleFileName(NULL,ModuleName,ASIZE(ModuleName));
   18 #else
   19   CharToWide(argv[0],ModuleName,ASIZE(ModuleName));
   20 #endif
   21 #endif
   22 
   23 #ifdef _WIN_ALL
   24   SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT|SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
   25 
   26 
   27 #endif
   28 
   29 #if defined(_WIN_ALL) && !defined(SFX_MODULE)
   30   // Must be initialized, normal initialization can be skipped in case of
   31   // exception.
   32   POWER_MODE ShutdownOnClose=POWERMODE_KEEP;
   33 #endif
   34 
   35   try 
   36   {
   37   
   38     CommandData *Cmd=new CommandData;
   39 #ifdef SFX_MODULE
   40     wcsncpyz(Cmd->Command,L"X",ASIZE(Cmd->Command));
   41     char *Switch=argc>1 ? argv[1]:NULL;
   42     if (Switch!=NULL && Cmd->IsSwitch(Switch[0]))
   43     {
   44       int UpperCmd=etoupper(Switch[1]);
   45       switch(UpperCmd)
   46       {
   47         case 'T':
   48         case 'V':
   49           Cmd->Command[0]=UpperCmd;
   50           break;
   51         case '?':
   52           Cmd->OutHelp(RARX_SUCCESS);
   53           break;
   54       }
   55     }
   56     Cmd->AddArcName(ModuleName);
   57     Cmd->ParseDone();
   58     Cmd->AbsoluteLinks=true; // If users runs SFX, he trusts an archive source.
   59 #else // !SFX_MODULE
   60     Cmd->ParseCommandLine(true,argc,argv);
   61     if (!Cmd->ConfigDisabled)
   62     {
   63       Cmd->ReadConfig();
   64       Cmd->ParseEnvVar();
   65     }
   66     Cmd->ParseCommandLine(false,argc,argv);
   67 #endif
   68 
   69 #if defined(_WIN_ALL) && !defined(SFX_MODULE)
   70     ShutdownOnClose=Cmd->Shutdown;
   71     if (ShutdownOnClose)
   72       ShutdownCheckAnother(true);
   73 #endif
   74 
   75     uiInit(Cmd->Sound);
   76     InitLogOptions(Cmd->LogName,Cmd->ErrlogCharset);
   77     ErrHandler.SetSilent(Cmd->AllYes || Cmd->MsgStream==MSG_NULL);
   78 
   79     Cmd->OutTitle();
   80     Cmd->ProcessCommand();
   81     delete Cmd;
   82   }
   83   catch (RAR_EXIT ErrCode)
   84   {
   85     ErrHandler.SetErrorCode(ErrCode);
   86   }
   87   catch (std::bad_alloc&)
   88   {
   89     ErrHandler.MemoryErrorMsg();
   90     ErrHandler.SetErrorCode(RARX_MEMORY);
   91   }
   92   catch (...)
   93   {
   94     ErrHandler.SetErrorCode(RARX_FATAL);
   95   }
   96 
   97 #if defined(_WIN_ALL) && !defined(SFX_MODULE)
   98   if (ShutdownOnClose!=POWERMODE_KEEP && ErrHandler.IsShutdownEnabled() &&
   99       !ShutdownCheckAnother(false))
  100     Shutdown(ShutdownOnClose);
  101 #endif
  102   ErrHandler.MainExit=true;
  103   return ErrHandler.GetErrorCode();
  104 }
  105 #endif
  106 
  107