8 #include "TObjString.h"
10 #include "Riostream.h"
12 #include "KVUniqueNameList.h"
40 Bool_t KVDMS::buildCommand(
const Char_t* scmd,
const Char_t* args, Option_t* opts)
52 if (!FindExecutable(fexec)) {
71 Int_t KVDMS::execCommand()
77 if (fcmd ==
"")
return -1;
78 return gSystem->Exec(fcmd.Data());
87 TString KVDMS::pipeCommand()
92 if (fcmd ==
"")
return TString(
"");
93 fout = gSystem->GetFromPipe(fcmd.Data());
108 return (line.BeginsWith(
"C-"));
130 KVError::Error(
this,
"GetFullListing",
"Unknown directory %s", directory);
134 std::unique_ptr<TObjArray> toks(fout.Tokenize(
"\n"));
137 list.SetName(((TObjString*)(*toks)[0])->String().Remove(TString::kBoth,
' ').Data());
138 for (
int i = 1; i < toks->GetEntries(); i++) {
139 TString tmp = ((TObjString*)(*toks)[i])->String().
Remove(TString::kBoth,
' ');
141 if (IsContainer(tmp)) {
142 f->SetName(gSystem->BaseName(tmp.Data()));
146 ExtractFileInfos(tmp, f);
164 TString filename = gSystem->BaseName(path);
165 TString dirname = gSystem->DirName(path);
166 if (DirectoryContains(filename.Data(), dirname.Data())) {
168 fout.Remove(TString::kBoth,
' ');
169 fs.SetName(filename.Data());
170 if (IsContainer(fout)) {
174 ExtractFileInfos(fout, &fs);
198 KVError::Error(
this,
"GetListing",
"Unknown directory %s", directory);
202 std::unique_ptr<TObjArray> toks(fout.Tokenize(
"\n"));
205 list.SetName(((TObjString*)(*toks)[0])->String().Remove(TString::kBoth,
' ').Data());
206 for (
int i = 1; i < toks->GetEntries(); i++) {
207 TString tmp = ((TObjString*)(*toks)[i])->String().
Remove(TString::kBoth,
' ');
209 if (IsContainer(tmp)) {
210 f->SetName(gSystem->BaseName(tmp.Data()));
214 f->SetName(tmp.Data());
232 auto list = GetListing(directory);
235 return list.FindObject(name);
255 TROOT::IndentLevel();
257 cout << GetName() <<
"/" << endl;
259 cout << GetName() <<
"\t" << GetSize() <<
"\t" << GetModTime().AsString() << endl;
void SetIsContainer(Bool_t yes=kTRUE)
Base class for KaliVeda framework.
Abstract base class for interfaces to Data Management Systems (SRB, IRODS, etc.)
Bool_t GetPathInfo(const Char_t *path, DMSFile_t &fs)
KVUniqueNameList GetListing(const Char_t *directory="")
KVUniqueNameList GetFullListing(const Char_t *directory="")
Bool_t DirectoryContains(const Char_t *name, const Char_t *directory="")
Bool_t IsContainer(TString &) const
TObject * Remove(TObject *obj) override
Remove object from list.
void SetOwner(Bool_t enable=kTRUE) override
Optimised list in which named objects can only be placed once.
void Add(TObject *obj) override
void Error(UserClass p, const char *location, const char *va_(fmt),...)