8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
24 import ALib.Characters.Functions;
28 import ALib.Expressions;
44 auto& pool= tree.
Pool;
56 if( realTarget.
Equals(target) )
65#if defined ( _WIN32) && !DOXYGEN
66 namespace {
NString unknown(
"<Unknown>"); }
70 #if !defined ( _WIN32)
71 auto key= fInfo.
Owner();
72 auto resultPair= ownerCache.Try( key );
73 if( !resultPair.first ) {
74 auto* result= getpwuid(key);
75 resultPair.second.Construct( key,
NString(result ? result->pw_name :
"?"));
77 return resultPair.second.Mapped();
85 #if !defined ( _WIN32)
86 auto key= fInfo.
Group();
87 auto resultPair= groupCache.Try( key );
88 if( !resultPair.first ) {
89 auto* result= getgrgid(key);
90 resultPair.second.Construct( key,
NString(result ? result->gr_name :
"?"));
92 return resultPair.second.Mapped();
The entry type which is embedded in each tree node.
constexpr uint32_t Group() const noexcept
void SetLinkTarget(FTree &tree, const system::PathString &target, const system::PathString &realTarget)
constexpr uint32_t Owner() const noexcept
friend class FTree
Allow access from within class File.
Qualities
Per-entry information about how a node was scanned.
Permissions
Permission flags. Compatible with posix* definition.
ExtendedEntryInfo * extendedInfo
Extended information, depending on the entry type.
ALIB_DLL const NString & GetOwnerName(const FInfo &fInfo)
ALIB_DLL const NString & GetGroupName(const FInfo &fInfo)
void Free(TAllocator &allocator) const
void Allocate(TAllocator &allocator, const TString< TChar > ©)
constexpr const TChar * Buffer() const
bool Equals(const TString< TChar > &rhs) const
#define ALIB_BOXING_VTABLE_DEFINE(TMapped, Identifier)
strings::TString< PathCharType > PathString
The string-type used with this ALib Module.
strings::TString< nchar > NString
Type alias in namespace alib.
system::CPathString RealTarget
The resolved real target path.
system::CPathString Target