1
1
bool ExtractHardlink(wchar *NameNew,wchar *NameExisting,size_t NameExistingSize)
3
SlashToNative(NameExisting,NameExisting,NameExistingSize); // Not needed for RAR 5.1+ archives.
3
5
if (!FileExist(NameExisting))
5
7
CreatePath(NameNew,true);
8
UnixSlashToDos(NameExisting,NameExisting,NameExistingSize);
10
10
bool Success=CreateHardLink(NameNew,NameExisting,NULL)!=0;
13
Log(NULL,St(MErrCreateLnkH),NameNew);
13
uiMsg(UIERROR_HLINKCREATE,NameNew);
14
14
ErrHandler.SysErrMsg();
15
15
ErrHandler.SetErrorCode(RARX_CREATE);
18
18
#elif defined(_UNIX)
19
DosSlashToUnix(NameExisting,NameExisting,NameExistingSize);
21
19
char NameExistingA[NM],NameNewA[NM];
22
20
WideToChar(NameExisting,NameExistingA,ASIZE(NameExistingA));
23
21
WideToChar(NameNew,NameNewA,ASIZE(NameNewA));
24
22
bool Success=link(NameExistingA,NameNewA)==0;
27
Log(NULL,St(MErrCreateLnkH),NameNew);
25
uiMsg(UIERROR_HLINKCREATE,NameNew);
28
26
ErrHandler.SysErrMsg();
29
27
ErrHandler.SetErrorCode(RARX_CREATE);