4 #include "KVSystemDirectory.h"
8 #include "KVSystemFile.h"
38 : TSystemDirectory(dirname, path)
51 SetTitle(Path.value());
53 throw std::runtime_error(Form(
"<KVSystemDirectory::KVSystemDirectory> : invalid path %s given to constructor", path));
66 SafeDelete(fContents);
107 void KVSystemDirectory::GetListings()
111 void* dir = gSystem->OpenDirectory(GetTitle());
113 KVError::Error(
this,
"GetListings",
"Cannot open directory %s", GetTitle());
117 const char* file = 0;
118 fContents =
new TList;
119 fContents->SetOwner();
120 fSubdirs =
new TList;
121 fSubdirs->SetOwner();
122 while ((file = gSystem->GetDirEntry(dir))) {
123 if (IsItDirectory(file)) {
124 TString sdirpath =
"";
125 if (file[0] ==
'.' && file[1] ==
'\0')
127 else if (file[0] ==
'.' && file[1] ==
'.' && file[2] ==
'\0')
130 sdirpath = GetTitle();
131 if (!sdirpath.EndsWith(
"/"))
135 if (sdirpath !=
"") {
147 gSystem->FreeDirectory(dir);
161 TROOT::IndentLevel();
162 printf(
"%s :\n[total : %lld / files : %lld bytes]\n\n",
164 TROOT::IncreaseDirLevel();
165 TROOT::IncreaseDirLevel();
167 if (!strcmp(opt,
"nosubdirs")) {
171 TROOT::IndentLevel();
172 printf(
"%-60s [total : %lld / files : %lld bytes]\n",
179 TROOT::DecreaseDirLevel();
180 TROOT::DecreaseDirLevel();
static std::optional< TString > AbsoluteUnixPath(const TString &)
Extension of ROOT TSystemDirectory class, handling browsing directories on disk.
KVSystemDirectory()
Default constructor.
virtual TList * GetListOfDirectories() const
TList * GetListOfFiles() const override
Long64_t GetTotalFiles() const
void ls(Option_t *option="") const override
Long64_t GetTotalSize() const
virtual ~KVSystemDirectory()
Destructor.
Extended ROOT TSystemFile with added info on file size etc.
void Error(UserClass p, const char *location, const char *va_(fmt),...)