Coverage Report

Created: 2024-04-23 06:19

/src/unrar/hardlinks.cpp
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