Line | Count | Source (jump to first uncovered line) |
1 | | bool ExtractHardlink(CommandData *Cmd,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize) |
2 | 0 | { |
3 | 0 | SlashToNative(NameExisting,NameExisting,NameExistingSize); // Not needed for RAR 5.1+ archives. |
4 | |
|
5 | 0 | if (!FileExist(NameExisting)) |
6 | 0 | { |
7 | 0 | uiMsg(UIERROR_HLINKCREATE,NameNew); |
8 | 0 | uiMsg(UIERROR_NOLINKTARGET); |
9 | 0 | ErrHandler.SetErrorCode(RARX_CREATE); |
10 | 0 | return false; |
11 | 0 | } |
12 | 0 | CreatePath(NameNew,true,Cmd->DisableNames); |
13 | |
|
14 | | #ifdef _WIN_ALL |
15 | | bool Success=CreateHardLink(NameNew,NameExisting,NULL)!=0; |
16 | | if (!Success) |
17 | | { |
18 | | uiMsg(UIERROR_HLINKCREATE,NameNew); |
19 | | ErrHandler.SysErrMsg(); |
20 | | ErrHandler.SetErrorCode(RARX_CREATE); |
21 | | } |
22 | | return Success; |
23 | | #elif defined(_UNIX) |
24 | 0 | char NameExistingA[NM],NameNewA[NM]; |
25 | 0 | WideToChar(NameExisting,NameExistingA,ASIZE(NameExistingA)); |
26 | 0 | WideToChar(NameNew,NameNewA,ASIZE(NameNewA)); |
27 | 0 | bool Success=link(NameExistingA,NameNewA)==0; |
28 | 0 | if (!Success) |
29 | 0 | { |
30 | 0 | uiMsg(UIERROR_HLINKCREATE,NameNew); |
31 | 0 | ErrHandler.SysErrMsg(); |
32 | 0 | ErrHandler.SetErrorCode(RARX_CREATE); |
33 | 0 | } |
34 | 0 | return Success; |
35 | | #else |
36 | | return false; |
37 | | #endif |
38 | 0 | } |
39 | | |