Merge pull request #4324 from FernetMenta/wasapi
[vuplus_xbmc] / lib / UnrarXLib / ulinks.cpp
1 #include "rar.hpp"
2 #include "Util.h"
3 #include "utils/URIUtils.h"
4
5
6 int ExtractLink(ComprDataIO &DataIO,Archive &Arc,char *DestName,uint &LinkCRC,bool Create)
7 {
8 #if defined(SAVE_LINKS) && defined(_UNIX)
9   char FileName[NM];
10   if (IsLink(Arc.NewLhd.FileAttr))
11   {
12     uint DataSize=Min(Arc.NewLhd.PackSize,sizeof(FileName)-1);
13     DataIO.UnpRead((byte *)FileName,DataSize);
14     FileName[DataSize]=0;
15     if (Create)
16     {
17       CStdString strPath = URIUtils::GetDirectory(DestName);
18       CUtil::CreateDirectoryEx(strPath);
19       if (symlink(FileName,DestName)==-1)
20       {
21         if (errno==EEXIST)
22           Log(Arc.FileName,St(MSymLinkExists),DestName);
23         else
24         {
25           Log(Arc.FileName,St(MErrCreateLnk),DestName);
26           ErrHandler.SetErrorCode(WARNING);
27         }
28       }
29     }
30     int NameSize=Min(DataSize,strlen(FileName));
31     LinkCRC=CRC(0xffffffff,FileName,NameSize);    return(1);
32   }
33 #endif
34   return(0);
35 }