diff --git a/xroot_plugins/XrdProFilesystem.cpp b/xroot_plugins/XrdProFilesystem.cpp index 1d54b9e22ea6a005d4113be04634673587c2ee89..f231c9fe5803c842d71a0d8730e98dcbe551a468 100644 --- a/xroot_plugins/XrdProFilesystem.cpp +++ b/xroot_plugins/XrdProFilesystem.cpp @@ -364,21 +364,16 @@ int XrdProFilesystem::executeLsCommand(ParsedRequest &req, XrdOucErrInfo &eInfo) while(itor.hasMore()) { const cta::DirectoryEntry &entry = itor.next(); response += "\n"; - switch(entry.entryType) { - case cta::DirectoryEntry::FILE_ENTRY: - response += "-"; - break; - case cta::DirectoryEntry::DIRECTORY_ENTRY: - response += "d"; - break; - case cta::DirectoryEntry::NONE: - default: - response += "n"; - break; - } - response += entry.ownerPerms; - response += entry.groupPerms; - response += entry.otherPerms; + response += (S_ISDIR(entry.mode)) ? "d" : "-"; + response += (entry.mode & S_IRUSR) ? "r" : "-"; + response += (entry.mode & S_IWUSR) ? "w" : "-"; + response += (entry.mode & S_IXUSR) ? "x" : "-"; + response += (entry.mode & S_IRGRP) ? "r" : "-"; + response += (entry.mode & S_IWGRP) ? "w" : "-"; + response += (entry.mode & S_IXGRP) ? "x" : "-"; + response += (entry.mode & S_IROTH) ? "r" : "-"; + response += (entry.mode & S_IWOTH) ? "w" : "-"; + response += (entry.mode & S_IXOTH) ? "x" : "-"; response += " "; response += entry.ownerId; response += " ";