MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / RAROpenArchiveEx

Function RAROpenArchiveEx

Libraries/unrar/dll.cpp:33–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31
32
33HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *r)
34{
35 DataSet *Data=NULL;
36 try
37 {
38 ErrHandler.Clean();
39
40 r->OpenResult=0;
41 Data=new DataSet;
42 Data->Cmd.DllError=0;
43 Data->OpenMode=r->OpenMode;
44 Data->Cmd.FileArgs.AddString(L"*");
45 Data->Cmd.KeepBroken=(r->OpFlags&ROADOF_KEEPBROKEN)!=0;
46
47 char AnsiArcName[NM];
48 *AnsiArcName=0;
49 if (r->ArcName!=NULL)
50 {
51 strncpyz(AnsiArcName,r->ArcName,ASIZE(AnsiArcName));
52#ifdef _WIN_ALL
53 if (!AreFileApisANSI())
54 {
55 OemToCharBuffA(r->ArcName,AnsiArcName,ASIZE(AnsiArcName));
56 AnsiArcName[ASIZE(AnsiArcName)-1]=0;
57 }
58#endif
59 }
60
61 wchar ArcName[NM];
62 GetWideName(AnsiArcName,r->ArcNameW,ArcName,ASIZE(ArcName));
63
64 Data->Cmd.AddArcName(ArcName);
65 Data->Cmd.Overwrite=OVERWRITE_ALL;
66 Data->Cmd.VersionControl=1;
67
68 Data->Cmd.Callback=r->Callback;
69 Data->Cmd.UserData=r->UserData;
70
71 // Open shared mode is added by request of dll users, who need to
72 // browse and unpack archives while downloading.
73 Data->Cmd.OpenShared = true;
74 if (!Data->Arc.Open(ArcName,FMF_OPENSHARED))
75 {
76 r->OpenResult=ERAR_EOPEN;
77 delete Data;
78 return NULL;
79 }
80 if (!Data->Arc.IsArchive(true))
81 {
82 if (Data->Cmd.DllError!=0)
83 r->OpenResult=Data->Cmd.DllError;
84 else
85 {
86 RAR_EXIT ErrCode=ErrHandler.GetErrorCode();
87 if (ErrCode!=RARX_SUCCESS && ErrCode!=RARX_WARNING)
88 r->OpenResult=RarErrorToDll(ErrCode);
89 else
90 r->OpenResult=ERAR_BAD_ARCHIVE;

Callers 1

RAROpenArchiveFunction · 0.85

Calls 14

strncpyzFunction · 0.85
GetWideNameFunction · 0.85
RarErrorToDllFunction · 0.85
WideToCharFunction · 0.85
AddStringMethod · 0.80
AddArcNameMethod · 0.80
IsArchiveMethod · 0.80
GetErrorCodeMethod · 0.80
GetCommentMethod · 0.80
PushMethod · 0.80
ExtractArchiveInitMethod · 0.80
CleanMethod · 0.45

Tested by

no test coverage detected