static bool UnixSymlink(CommandData *Cmd,const std::string &Target,const wchar *LinkName,RarTime *ftm,RarTime *fta) { … } static bool IsFullPath(const char *PathA) // Unix ASCII version. { … } // For security purpose we prefer to be sure that CharToWide completed // successfully and even if it truncated a string for some reason, // it didn't affect the number of path related characters we analyze // in IsRelativeSymlinkSafe later. // This check is likely to be excessive, but let's keep it anyway. static bool SafeCharToWide(const std::string &Src,std::wstring &Dest) { … } static bool ExtractUnixLink30(CommandData *Cmd,ComprDataIO &DataIO,Archive &Arc, const wchar *LinkName,bool &UpLink) { … } static bool ExtractUnixLink50(CommandData *Cmd,const wchar *Name,FileHeader *hd) { … }