Coverage Report

Created: 2025-04-11 06:56

/src/unrar/hardlinks.cpp
Line
Count
Source
1
bool ExtractHardlink(CommandData *Cmd,const std::wstring &NameNew,const std::wstring &NameExisting)
2
64
{
3
64
  if (!FileExist(NameExisting))
4
8
  {
5
8
    uiMsg(UIERROR_HLINKCREATE,NameNew);
6
8
    uiMsg(UIERROR_NOLINKTARGET);
7
8
    ErrHandler.SetErrorCode(RARX_CREATE);
8
8
    return false;
9
8
  }
10
56
  CreatePath(NameNew,true,Cmd->DisableNames);
11
12
#ifdef _WIN_ALL
13
  bool Success=CreateHardLink(NameNew.c_str(),NameExisting.c_str(),NULL)!=0;
14
  if (!Success)
15
  {
16
    uiMsg(UIERROR_HLINKCREATE,NameNew);
17
    ErrHandler.SysErrMsg();
18
    ErrHandler.SetErrorCode(RARX_CREATE);
19
  }
20
  return Success;
21
#elif defined(_UNIX)
22
  std::string NameExistingA,NameNewA;
23
56
  WideToChar(NameExisting,NameExistingA);
24
56
  WideToChar(NameNew,NameNewA);
25
56
  bool Success=link(NameExistingA.c_str(),NameNewA.c_str())==0;
26
56
  if (!Success)
27
56
  {
28
56
    uiMsg(UIERROR_HLINKCREATE,NameNew);
29
56
    ErrHandler.SysErrMsg();
30
56
    ErrHandler.SetErrorCode(RARX_CREATE);
31
56
  }
32
56
  return Success;
33
#else
34
  return false;
35
#endif
36
64
}
37