123456789101112131415161718192021222324252627282930313233343536373839 |
- bool ExtractHardlink(CommandData *Cmd,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize)
- {
- SlashToNative(NameExisting,NameExisting,NameExistingSize); // Not needed for RAR 5.1+ archives.
- if (!FileExist(NameExisting))
- {
- uiMsg(UIERROR_HLINKCREATE,NameNew);
- uiMsg(UIERROR_NOLINKTARGET);
- ErrHandler.SetErrorCode(RARX_CREATE);
- return false;
- }
- CreatePath(NameNew,true,Cmd->DisableNames);
- #ifdef _WIN_ALL
- bool Success=CreateHardLink(NameNew,NameExisting,NULL)!=0;
- if (!Success)
- {
- uiMsg(UIERROR_HLINKCREATE,NameNew);
- ErrHandler.SysErrMsg();
- ErrHandler.SetErrorCode(RARX_CREATE);
- }
- return Success;
- #elif defined(_UNIX)
- char NameExistingA[NM],NameNewA[NM];
- WideToChar(NameExisting,NameExistingA,ASIZE(NameExistingA));
- WideToChar(NameNew,NameNewA,ASIZE(NameNewA));
- bool Success=link(NameExistingA,NameNewA)==0;
- if (!Success)
- {
- uiMsg(UIERROR_HLINKCREATE,NameNew);
- ErrHandler.SysErrMsg();
- ErrHandler.SetErrorCode(RARX_CREATE);
- }
- return Success;
- #else
- return false;
- #endif
- }
|