25 ClassImp(TSystemFile);
30 TSystemFile::TSystemFile() : TNamed()
37 TSystemFile::TSystemFile(
const char *filename,
const char *dirname)
38 : TNamed(filename, dirname)
46 TSystemFile::~TSystemFile()
53 Bool_t TSystemFile::IsDirectory(
const char *dir)
const
56 Long_t id, flags, modtime;
58 flags =
id = size = modtime = 0;
59 gSystem->GetPathInfo(!dir ? fName.Data() : dir, &id, &size, &flags, &modtime);
60 Int_t isdir = (Int_t)flags & 2;
62 return isdir ? kTRUE : kFALSE;
69 void TSystemFile::Browse(TBrowser *b)
72 b->ExecuteDefaultAction(
this);
78 void TSystemFile::Edit()
81 const char *ed = gEnv->GetValue(
"Editor",
"vi");
82 Int_t nch = strlen(ed)+strlen(GetName()) + 50;
83 Char_t *cmd =
new Char_t[nch];
84 if (!strcmp(ed,
"vi"))
85 snprintf(cmd,nch,
"xterm -e vi %s &", GetName());
87 snprintf(cmd,nch,
"%s %s &", ed, GetName());
89 const char *ed = gEnv->GetValue(
"Editor",
"notepad");
90 Int_t nch = strlen(ed)+strlen(GetName()) + 50;
91 Char_t *cmd =
new Char_t[nch];
92 snprintf(cmd,nch,
"start %s %s", ed, GetName());
102 void TSystemFile::Copy(
const char *to)
106 if (IsDirectory(to)) {
107 if (name.EndsWith(
"/")) name.Chop();
108 char *s = gSystem->ConcatFileName(name, fName);
113 Int_t status = gSystem->CopyFile(fName, name, kFALSE);
116 Warning(
"Copy",
"File %s already exists", name.Data());
117 }
else if (status == -1) {
118 Warning(
"Copy",
"Failed to move file %s", name.Data());
125 void TSystemFile::Move(
const char *to)
128 Warning(
"Move",
"No file/dir name specified");
134 if (IsDirectory(to)) {
135 if (name.EndsWith(
"/")) name.Chop();
136 char *s = gSystem->ConcatFileName(name, fName);
140 Int_t status = gSystem->CopyFile(fName, name, kFALSE);
143 gSystem->Unlink(fName);
144 }
else if (status == -2) {
145 Warning(
"Move",
"File %s already exists", name.Data());
146 }
else if (status == -1) {
147 Warning(
"Move",
"Failed to move file %s", name.Data());
154 void TSystemFile::Delete()
156 gSystem->Unlink(fName);
162 void TSystemFile::Rename(
const char *name)
164 gSystem->Rename(fName, name);
170 void TSystemFile::Inspect()
const
177 void TSystemFile::Dump()
const