Code: Select all
*** rar.cpp Tue Sep 10 09:21:28 2013
--- rar.cpp Fri Sep 13 17:23:33 2013
*************** static INT_PTR MainModuleNumber=-1;
*** 104,109 ****
--- 104,111 ----
static FARAPIMESSAGE FarMessage=NULL;
static FARSTDSPRINTF FarSprintf=NULL;
+ static char ModuleName[NM+50];
+
void UtfToWide(const char *Src,wchar_t *Dest,int DestSize);
void DecodeFileName(const char *Name,BYTE *EncName,int EncSize,wchar_t *NameW,int MaxDecSize);
#define UnicodeToOEM(src,dst,lendst) WideCharToMultiByte(CP_OEMCP,0,(src),-1,(dst),(lendst),NULL,FALSE)
*************** void WINAPI SetFarInfo(const struct Plu
*** 117,122 ****
--- 119,125 ----
MainModuleNumber=Info->ModuleNumber;
FarMessage=Info->Message;
FarSprintf=Info->FSF->sprintf;
+ lstrcpy(ModuleName,Info->ModuleName);
}
int CALLBACK CallbackProc(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2)
*************** BOOL WINAPI _export OpenArchive(const ch
*** 186,195 ****
// We attempt to load unrar.dll first from "Plugins\MultiArc\Formats"
// and then from root FAR folder. We use absolute paths for security reason.
char DllName[NM+50];
! GetModuleFileName(NULL,DllName,sizeof(DllName)/sizeof(DllName[0]));
char *NamePtr=strrchr(DllName,'\\');
NamePtr=(NamePtr==NULL) ? DllName:NamePtr+1;
! lstrcpy(NamePtr,"Plugins\\MultiArc\\Formats\\");
lstrcat(NamePtr,UnRARName);
HINSTANCE hModule=LoadLibraryEx(DllName,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
--- 189,198 ----
// We attempt to load unrar.dll first from "Plugins\MultiArc\Formats"
// and then from root FAR folder. We use absolute paths for security reason.
char DllName[NM+50];
! lstrcpy(DllName,ModuleName);
char *NamePtr=strrchr(DllName,'\\');
NamePtr=(NamePtr==NULL) ? DllName:NamePtr+1;
! lstrcpy(NamePtr,"Formats\\");
lstrcat(NamePtr,UnRARName);
HINSTANCE hModule=LoadLibraryEx(DllName,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);