46 kExecutePermission = 1,
116 inline Bool_t R_ISDIR(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFDIR); }
117 inline Bool_t R_ISCHR(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFCHR); }
118 inline Bool_t R_ISBLK(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFBLK); }
119 inline Bool_t R_ISREG(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFREG); }
120 inline Bool_t R_ISLNK(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFLNK); }
121 inline Bool_t R_ISFIFO(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFIFO); }
122 inline Bool_t R_ISSOCK(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFSOCK); }
123 inline Bool_t R_ISOFF(Int_t mode) {
return ((mode & kS_IFMT) == kS_IFOFF); }
135 FileStat_t() : fDev(0), fIno(0), fMode(0), fUid(0), fGid(0), fSize(0),
136 fMtime(0), fIsLink(kFALSE), fUrl(
"") { }
147 UserGroup_t() : fUid(0), fGid(0), fUser(), fGroup(), fPasswd(),
148 fRealName (), fShell() { }
160 SysInfo_t() : fOS(), fModel(), fCpuType(), fCpus(0), fCpuSpeed(0),
161 fBusSpeed(0), fL2Cache(0), fPhysRam(0) { }
162 virtual ~SysInfo_t() { }
163 ClassDef(SysInfo_t, 1);
174 CpuInfo_t() : fLoad1m(0), fLoad5m(0), fLoad15m(0),
175 fUser(0), fSys(0), fTotal(0), fIdle(0) { }
176 virtual ~CpuInfo_t() { }
177 ClassDef(CpuInfo_t, 1);
187 MemInfo_t() : fMemTotal(0), fMemUsed(0), fMemFree(0),
188 fSwapTotal(0), fSwapUsed(0), fSwapFree(0) { }
189 virtual ~MemInfo_t() { }
190 ClassDef(MemInfo_t, 1);
198 ProcInfo_t() : fCpuUser(0), fCpuSys(0), fMemResident(0),
200 virtual ~ProcInfo_t();
201 ClassDef(ProcInfo_t, 1);
204 struct RedirectHandle_t {
211 RedirectHandle_t(
const char *n = 0) : fFile(n), fStdOutTty(), fStdErrTty(), fStdOutDup(-1),
212 fStdErrDup(-1), fReadOffSet(-1) { }
213 void Reset() { fFile =
""; fStdOutTty =
""; fStdErrTty =
"";
214 fStdOutDup = -1; fStdErrDup = -1; fReadOffSet = -1; }
230 enum ESendRecvOptions {
238 typedef void *Func_t;
240 typedef void ((*Func_t)());
243 R__EXTERN
const char *gRootDir;
244 R__EXTERN
const char *gProgName;
245 R__EXTERN
const char *gProgPath;
246 R__EXTERN TVirtualMutex *gSystemMutex;
259 class TProcessEventTimer :
public TTimer {
261 TProcessEventTimer(Long_t delay);
262 Bool_t Notify() {
return kTRUE; }
263 Bool_t ProcessEvents();
264 ClassDef(TProcessEventTimer,0)
268 class TSystem :
public TNamed {
271 enum EAclicMode { kDefault, kDebug, kOpt };
272 enum EAclicProperties {
273 kFlatBuildDir = BIT(0)
288 Bool_t fInsideNotify;
296 TSeqCollection *fTimers;
297 TSeqCollection *fSignalHandler;
298 TSeqCollection *fFileHandler;
299 TSeqCollection *fStdExceptionHandler;
300 TSeqCollection *fOnExitList;
305 TString fBuildCompiler;
306 TString fBuildCompilerVersion;
312 TString fIncludePath;
316 EAclicMode fAclicMode;
317 TString fMakeSharedLib;
319 TString fLinkdefSuffix;
320 Int_t fAclicProperties;
321 TSeqCollection *fCompiled;
322 TSeqCollection *fHelpers;
324 TString &GetLastErrorString();
325 const TString &GetLastErrorString()
const;
327 TSystem *FindHelper(
const char *path,
void *dirptr = 0);
328 virtual Bool_t ConsistentWith(
const char *path,
void *dirptr = 0);
329 virtual const char *ExpandFileName(
const char *fname);
330 virtual Bool_t ExpandFileName(TString &fname);
331 virtual void SigAlarmInterruptsSyscalls(Bool_t) { }
332 virtual const char *GetLinkedLibraries();
333 virtual void DoBeep(Int_t =-1, Int_t =-1)
const { printf(
"\a"); fflush(stdout); }
335 static const char *StripOffProto(
const char *path,
const char *proto) {
336 return !strncmp(path, proto, strlen(proto)) ? path + strlen(proto) : path;
340 TSystem(
const TSystem&);
341 TSystem& operator=(
const TSystem&);
342 Bool_t ExpandFileName(
const char *fname,
char *xname,
const int kBufSize);
345 TSystem(
const char *name =
"Generic",
const char *title =
"Generic System");
349 virtual Bool_t Init();
350 virtual void SetProgname(
const char *name);
351 virtual void SetDisplay();
352 void SetErrorStr(
const char *errstr);
353 const char *GetErrorStr()
const {
return GetLastErrorString(); }
354 virtual const char *GetError();
355 void RemoveOnExit(TObject *obj);
356 virtual const char *HostName();
357 virtual void NotifyApplicationCreated();
359 static Int_t GetErrno();
360 static void ResetErrno();
361 void Beep(Int_t freq=-1, Int_t duration=-1, Bool_t setDefault=kFALSE);
362 void GetBeepDefaults(Int_t &freq, Int_t &duration)
const { freq = fBeepFreq; duration = fBeepDuration; }
366 virtual Bool_t ProcessEvents();
367 virtual void DispatchOneEvent(Bool_t pendingOnly = kFALSE);
368 virtual void ExitLoop();
369 Bool_t InControl()
const {
return fInControl; }
370 virtual void InnerLoop();
371 virtual Int_t Select(TList *active, Long_t timeout);
372 virtual Int_t Select(TFileHandler *fh, Long_t timeout);
375 virtual void AddSignalHandler(TSignalHandler *sh);
376 virtual TSignalHandler *RemoveSignalHandler(TSignalHandler *sh);
377 virtual void ResetSignal(ESignals sig, Bool_t reset = kTRUE);
378 virtual void ResetSignals();
379 virtual void IgnoreSignal(ESignals sig, Bool_t ignore = kTRUE);
380 virtual void IgnoreInterrupt(Bool_t ignore = kTRUE);
381 virtual TSeqCollection *GetListOfSignalHandlers()
const {
return fSignalHandler; }
382 virtual void AddFileHandler(TFileHandler *fh);
383 virtual TFileHandler *RemoveFileHandler(TFileHandler *fh);
384 virtual TSeqCollection *GetListOfFileHandlers()
const {
return fFileHandler; }
385 virtual void AddStdExceptionHandler(TStdExceptionHandler *eh);
386 virtual TStdExceptionHandler *RemoveStdExceptionHandler(TStdExceptionHandler *eh);
387 virtual TSeqCollection *GetListOfStdExceptionHandlers()
const {
return fStdExceptionHandler; }
390 virtual Int_t GetFPEMask();
391 virtual Int_t SetFPEMask(Int_t mask = kDefaultMask);
395 virtual TSeqCollection *GetListOfTimers()
const {
return fTimers; }
396 virtual void AddTimer(TTimer *t);
397 virtual TTimer *RemoveTimer(TTimer *t);
398 virtual void ResetTimer(TTimer *) { }
399 virtual Long_t NextTimeOut(Bool_t mode);
400 virtual void Sleep(UInt_t milliSec);
403 virtual Int_t Exec(
const char *shellcmd);
404 virtual FILE *OpenPipe(
const char *command,
const char *mode);
405 virtual int ClosePipe(FILE *pipe);
406 virtual TString GetFromPipe(
const char *command);
407 virtual void Exit(
int code, Bool_t mode = kTRUE);
408 virtual void Abort(
int code = 0);
409 virtual int GetPid();
410 virtual void StackTrace();
413 virtual int MakeDirectory(
const char *name);
414 virtual void *OpenDirectory(
const char *name);
415 virtual void FreeDirectory(
void *dirp);
416 virtual const char *GetDirEntry(
void *dirp);
417 virtual void *GetDirPtr()
const {
return 0; }
418 virtual Bool_t ChangeDirectory(
const char *path);
419 virtual const char *WorkingDirectory();
420 virtual std::string GetWorkingDirectory()
const;
421 virtual const char *HomeDirectory(
const char *userName = 0);
422 virtual std::string GetHomeDirectory(
const char *userName = 0)
const;
423 virtual int mkdir(
const char *name, Bool_t recursive = kFALSE);
424 Bool_t cd(
const char *path) {
return ChangeDirectory(path); }
425 const char *pwd() {
return WorkingDirectory(); }
426 virtual const char *TempDirectory()
const;
427 virtual FILE *TempFileName(TString &base,
const char *dir = 0);
430 virtual const char *BaseName(
const char *pathname);
431 virtual const char *DirName(
const char *pathname);
432 virtual char *ConcatFileName(
const char *dir,
const char *name);
433 virtual Bool_t IsAbsoluteFileName(
const char *dir);
434 virtual Bool_t IsFileInIncludePath(
const char *name,
char **fullpath = 0);
435 virtual const char *PrependPathName(
const char *dir, TString& name);
436 virtual Bool_t ExpandPathName(TString &path);
437 virtual char *ExpandPathName(
const char *path);
438 virtual Bool_t AccessPathName(
const char *path, EAccessMode mode = kFileExists);
439 virtual Bool_t IsPathLocal(
const char *path);
440 virtual int CopyFile(
const char *from,
const char *to, Bool_t overwrite = kFALSE);
441 virtual int Rename(
const char *from,
const char *to);
442 virtual int Link(
const char *from,
const char *to);
443 virtual int Symlink(
const char *from,
const char *to);
444 virtual int Unlink(
const char *name);
445 int GetPathInfo(
const char *path, Long_t *
id, Long_t *size, Long_t *flags, Long_t *modtime);
446 int GetPathInfo(
const char *path, Long_t *
id, Long64_t *size, Long_t *flags, Long_t *modtime);
447 virtual int GetPathInfo(
const char *path, FileStat_t &buf);
448 virtual int GetFsInfo(
const char *path, Long_t *
id, Long_t *bsize, Long_t *blocks, Long_t *bfree);
449 virtual int Chmod(
const char *file, UInt_t mode);
450 virtual int Umask(Int_t mask);
451 virtual int Utime(
const char *file, Long_t modtime, Long_t actime);
452 virtual const char *UnixPathName(
const char *unixpathname);
453 virtual const char *FindFile(
const char *search, TString& file, EAccessMode mode = kFileExists);
454 virtual char *Which(
const char *search,
const char *file, EAccessMode mode = kFileExists);
455 virtual TList *GetVolumes(Option_t *)
const {
return 0; }
458 virtual Int_t GetUid(
const char *user = 0);
459 virtual Int_t GetGid(
const char *group = 0);
460 virtual Int_t GetEffectiveUid();
461 virtual Int_t GetEffectiveGid();
462 virtual UserGroup_t *GetUserInfo(Int_t uid);
463 virtual UserGroup_t *GetUserInfo(
const char *user = 0);
464 virtual UserGroup_t *GetGroupInfo(Int_t gid);
465 virtual UserGroup_t *GetGroupInfo(
const char *group = 0);
468 virtual void Setenv(
const char *name,
const char *value);
469 virtual void Unsetenv(
const char *name);
470 virtual const char *Getenv(
const char *env);
473 virtual void Openlog(
const char *name, Int_t options, ELogFacility facility);
474 virtual void Syslog(ELogLevel level,
const char *mess);
475 virtual void Closelog();
478 virtual Int_t RedirectOutput(
const char *name,
const char *mode =
"a", RedirectHandle_t *h = 0);
479 virtual void ShowOutput(RedirectHandle_t *h);
482 virtual void AddDynamicPath(
const char *pathname);
483 virtual const char *GetDynamicPath();
484 virtual void SetDynamicPath(
const char *pathname);
485 char *DynamicPathName(
const char *lib, Bool_t quiet = kFALSE);
486 virtual const char *FindDynamicLibrary(TString& lib, Bool_t quiet = kFALSE);
487 virtual Func_t DynFindSymbol(
const char *module,
const char *entry);
488 virtual int Load(
const char *module,
const char *entry =
"", Bool_t system = kFALSE);
489 virtual void Unload(
const char *module);
490 virtual UInt_t LoadAllLibraries();
491 virtual void ListSymbols(
const char *module,
const char *re =
"");
492 virtual void ListLibraries(
const char *regexp =
"");
493 virtual const char *GetLibraries(
const char *regexp =
"",
494 const char *option =
"",
495 Bool_t isRegexp = kTRUE);
498 virtual TInetAddress GetHostByName(
const char *server);
499 virtual TInetAddress GetPeerName(
int sock);
500 virtual TInetAddress GetSockName(
int sock);
501 virtual int GetServiceByName(
const char *service);
502 virtual char *GetServiceByPort(
int port);
503 virtual int OpenConnection(
const char *server,
int port,
int tcpwindowsize = -1,
const char *protocol =
"tcp");
504 virtual int AnnounceTcpService(
int port, Bool_t reuse,
int backlog,
int tcpwindowsize = -1);
505 virtual int AnnounceUdpService(
int port,
int backlog);
506 virtual int AnnounceUnixService(
int port,
int backlog);
507 virtual int AnnounceUnixService(
const char *sockpath,
int backlog);
508 virtual int AcceptConnection(
int sock);
509 virtual void CloseConnection(
int sock, Bool_t force = kFALSE);
510 virtual int RecvRaw(
int sock,
void *buffer,
int length,
int flag);
511 virtual int SendRaw(
int sock,
const void *buffer,
int length,
int flag);
512 virtual int RecvBuf(
int sock,
void *buffer,
int length);
513 virtual int SendBuf(
int sock,
const void *buffer,
int length);
514 virtual int SetSockOpt(
int sock,
int kind,
int val);
515 virtual int GetSockOpt(
int sock,
int kind,
int *val);
518 virtual int GetSysInfo(SysInfo_t *info)
const;
519 virtual int GetCpuInfo(CpuInfo_t *info, Int_t sampleTime = 1000)
const;
520 virtual int GetMemInfo(MemInfo_t *info)
const;
521 virtual int GetProcInfo(ProcInfo_t *info)
const;
524 virtual void AddIncludePath(
const char *includePath);
525 virtual void AddLinkedLibs(
const char *linkedLib);
526 virtual int CompileMacro(
const char *filename, Option_t *opt=
"",
const char* library_name =
"",
const char* build_dir =
"", UInt_t dirmode = 0);
527 virtual Int_t GetAclicProperties()
const;
528 virtual const char *GetBuildArch()
const;
529 virtual const char *GetBuildCompiler()
const;
530 virtual const char *GetBuildCompilerVersion()
const;
531 virtual const char *GetBuildNode()
const;
532 virtual const char *GetBuildDir()
const;
533 virtual const char *GetFlagsDebug()
const;
534 virtual const char *GetFlagsOpt()
const;
535 virtual const char *GetIncludePath();
536 virtual const char *GetLinkedLibs()
const;
537 virtual const char *GetLinkdefSuffix()
const;
538 virtual EAclicMode GetAclicMode()
const;
539 virtual const char *GetMakeExe()
const;
540 virtual const char *GetMakeSharedLib()
const;
541 virtual const char *GetSoExt()
const;
542 virtual const char *GetObjExt()
const;
543 virtual void SetBuildDir(
const char* build_dir, Bool_t isflat = kFALSE);
544 virtual void SetFlagsDebug(
const char *);
545 virtual void SetFlagsOpt(
const char *);
546 virtual void SetIncludePath(
const char *includePath);
547 virtual void SetMakeExe(
const char *directives);
548 virtual void SetAclicMode(EAclicMode mode);
549 virtual void SetMakeSharedLib(
const char *directives);
550 virtual void SetLinkedLibs(
const char *linkedLibs);
551 virtual void SetLinkdefSuffix(
const char *suffix);
552 virtual void SetSoExt(
const char *soExt);
553 virtual void SetObjExt(
const char *objExt);
554 virtual TString SplitAclicMode(
const char *filename, TString &mode, TString &args, TString &io)
const;
555 virtual void CleanCompiledMacros();
560 R__EXTERN TSystem *gSystem;
561 R__EXTERN TFileHandler *gXDisplay;