66 if (isatty(0) != 0 && isatty(1) != 0) {
68 Printf(
"Opening new connection to %s", u.
Data());
71 if (s && s->IsValid()) {
85 class TXProofMgrInit {
102 if (
Init(dbg) != 0) {
128 Error(
"Init",
"while opening the connection to %s - exit (error: %d)",
169 gROOT->GetListOfSockets()->Remove(
this);
181 Warning(
"AttachSession",
"invalid TXProofMgr - do nothing");
185 Warning(
"AttachSession",
"invalid description object - do nothing");
219 Error(
"AttachSession",
"attaching to PROOF session");
233 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
248 }
else if (
id == 0) {
277 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
305 Warning(
"MatchUrl",
"invalid TXProofMgr - do nothing");
340 Warning(
"ShowWorkers",
"invalid TXProofMgr - do nothing");
368 Error(
"GetMssUrl",
"invalid TXProofMgr - do nothing");
373 Error(
"GetMssUrl",
"functionality not supported by server");
382 Error(
"GetMssUrl",
"problems retrieving the required information");
386 Warning(
"GetMssUrl",
"TXProofMgr is now invalid: information may not be valid");
399 if (opt && !strncasecmp(opt,
"L",1))
405 Warning(
"QuerySessions",
"invalid TXProofMgr - do nothing");
425 Printf(
"// +++ %s session(s) currently active +++", to->
GetName());
428 Int_t id = -1, st = -1;
431 while (to->
GetString()[from] ==
' ') { from++; }
463 if (opt && !strncasecmp(opt,
"S",1))
486 Info(
"HandleInput",
"%p: got message type: %d",
this, what);
492 Warning(
"HandleInput",
"%p: got unknown message type: %d",
this, what);
497 Warning(
"HandleInput",
"%p: got message but socket is invalid!",
this);
516 Printf(
"ProofMgr: connection to coordinator at %s re-established",
521 Printf(
"TXProofMgr::HandleError: %p: got called ...",
this);
534 Printf(
"TXProofMgr::HandleError: %p: DONE ... ",
this);
555 Warning(
"Reset",
"invalid TXProofMgr - do nothing");
591 Warning(
"GetSessionLogs",
"invalid TXProofMgr - do nothing");
598 isess = (isess > 0) ? -isess : isess;
603 if (sesstag ==
"NR") {
609 Int_t xrs = (rescan) ? 1 : 0;
619 if (!rs.Tokenize(tag, from,
"|")) {
620 Warning(
"GetSessionLogs",
"Session tag undefined: corruption?\n"
621 " (received string: %s)", os->
GetName());
626 if (!rs.Tokenize(purl, from,
"|")) {
627 Warning(
"GetSessionLogs",
"Pool URL undefined: corruption?\n"
628 " (received string: %s)", os->
GetName());
637 while (rs.Tokenize(to, from,
"|")) {
647 if (url.
Contains(
".valgrind")) ord +=
"-valgrind";
651 Info(
"GetSessionLogs",
"ord: %s, url: %s", ord.
Data(), url.
Data());
657 if (pl && retrieve) {
658 const char *pat = pattern ? pattern :
"-v \"| SvcMsg\"";
659 if (pat && strlen(pat) > 0)
678 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
695 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
701 if (*pattern ==
'|') {
711 Int_t plen = strlen(ptr);
712 Int_t lfi = strlen(fin);
713 char *buf =
new char[lfi + plen + 1];
714 memcpy(buf, fin, lfi);
715 memcpy(buf+lfi, ptr, plen);
729 Warning(
"ShowROOTVersions",
"invalid TXProofMgr - do nothing");
737 Printf(
"----------------------------------------------------------\n");
738 Printf(
"Available versions (tag ROOT-vers remote-path PROOF-version):\n");
740 Printf(
"----------------------------------------------------------");
755 Warning(
"SetROOTVersion",
"invalid TXProofMgr - do nothing");
779 if (!msg || strlen(msg) <= 0) {
780 Error(
"SendMsgToUsers",
"no message to send - do nothing");
785 const Int_t kMAXBUF = 32768;
786 char buf[kMAXBUF] = {0};
788 size_t space = kMAXBUF - 1;
792 if (usr && strlen(usr) > 0 && (strlen(usr) != 1 || usr[0] !=
'*')) {
793 lusr = (strlen(usr) + 3);
794 snprintf(buf, kMAXBUF,
"u:%s ", usr);
804 Error(
"SendMsgToUsers",
"request to read message from unreadable file '%s'", msg);
809 if (!(f = fopen(msg,
"r"))) {
810 Error(
"SendMsgToUsers",
"file '%s' cannot be open", msg);
815 off_t rcsk = lseek(fileno(f), (off_t) 0, SEEK_END);
816 if ((rcsk != (off_t)(-1))) {
818 if ((lseek(fileno(f), (off_t) 0, SEEK_SET) == (off_t)(-1))) {
819 Error(
"SendMsgToUsers",
"cannot rewind open file (seek to 0)");
824 Error(
"SendMsgToUsers",
"cannot get size of open file (seek to END)");
829 size_t wanted = left;
830 if (wanted > space) {
833 "requested to send %lld bytes: max size is %lld bytes: truncating",
837 while ((len =
read(fileno(f), p, wanted)) < 0 &&
841 SysError(
"SendMsgToUsers",
"error reading file");
846 left = (len >= (ssize_t)left) ? 0 : left - len;
848 wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
850 }
while (len > 0 && left > 0);
856 if (len > (ssize_t)space) {
858 "requested to send %lld bytes: max size is %lld bytes: truncating",
881 Error(
"Grep",
"invalid TXProofMgr - do nothing");
886 Error(
"Grep",
"functionality not supported by server");
907 Error(
"Find",
"invalid TXProofMgr - do nothing");
912 Error(
"Find",
"functionality not supported by server (XrdProofd version: %d)",
934 Error(
"Ls",
"invalid TXProofMgr - do nothing");
939 Error(
"Ls",
"functionality not supported by server");
960 Error(
"More",
"invalid TXProofMgr - do nothing");
965 Error(
"More",
"functionality not supported by server");
988 Error(
"Rm",
"invalid TXProofMgr - do nothing");
993 Error(
"Rm",
"functionality not supported by server");
1002 while (!force && opt.
Tokenize(t, from,
" ")) {
1003 if (t ==
"--force") {
1011 if (!force && isatty(0) != 0 && isatty(1) != 0) {
1013 prompt.
Form(
"Do you really want to remove '%s'? [N/y]", what);
1015 while (
ans !=
"N" &&
ans !=
"Y") {
1018 if (
ans ==
"")
ans =
"N";
1020 if (
ans !=
"N" &&
ans !=
"Y")
1021 Printf(
"Please answer y, Y, n or N");
1050 Error(
"Tail",
"invalid TXProofMgr - do nothing");
1055 Error(
"Tail",
"functionality not supported by server");
1076 Error(
"Md5sum",
"invalid TXProofMgr - do nothing");
1081 Error(
"Md5sum",
"functionality not supported by server");
1085 if (where && !strcmp(where,
"all")) {
1086 Error(
"Md5sum",
"cannot run on all nodes at once: please specify one");
1113 Error(
"Stat",
"invalid TXProofMgr - do nothing");
1118 Error(
"Stat",
"functionality not supported by server");
1122 if (where && !strcmp(where,
"all")) {
1123 Error(
"Stat",
"cannot run on all nodes at once: please specify one");
1134 Int_t mode, uid, gid, islink;
1138 sscanf(os->
GetName(),
"%ld %ld %d %d %d %I64d %ld %d", &dev, &ino, &mode,
1139 &uid, &gid, &size, &mtime, &islink);
1141 sscanf(os->
GetName(),
"%ld %ld %d %d %d %lld %ld %d", &dev, &ino, &mode,
1142 &uid, &gid, &size, &mtime, &islink);
1159 if (st.
fDev == -1)
return -1;
1198 const char *
what,
const char *how,
const char *where)
1202 Error(
"Exec",
"invalid TXProofMgr - do nothing");
1207 Error(
"Exec",
"functionality not supported by server");
1211 if (!what || strlen(what) <= 0) {
1212 Error(
"Exec",
"specifying a path is mandatory");
1222 while (opts.Tokenize(o, from,
" ")) {
1224 if (!o.
BeginsWith(
"-") && !isc && isn)
continue;
1235 }
else if (o ==
"-n") {
1237 }
else if (o ==
"--bytes=" || o ==
"--lines=") {
1280 Error(
"GetFile",
"invalid TXProofMgr - do nothing");
1285 Error(
"GetFile",
"functionality not supported by server");
1292 Error(
"GetFile",
"remote file path undefined");
1314 UInt_t openflags = O_WRONLY;
1325 if (!fileloc.
EndsWith(
"/")) fileloc +=
"/";
1334 Printf(
"[GetFile] local file '%s' exists and is not regular: cannot continue",
1340 Error(
"GetFile",
"cannot get user info for additional checks");
1351 Printf(
"[GetFile] file '%s' exists: no permission to delete or overwrite the file", fileloc.
Data());
1352 Printf(
"[GetFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1358 openflags |= O_CREAT | O_TRUNC;
1361 openflags |= O_CREAT;
1365 openflags |= O_CREAT;
1370 if (
Md5sum(filerem, remsum) != 0) {
1372 Printf(
"[GetFile] remote file '%s' does not exists or cannot be read", filerem.
Data());
1378 if (rcloc == 0 && !force) {
1381 if (remsum == md5loc->
AsString()) {
1383 Printf(
"[GetFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1385 Printf(
"[GetFile] use option 'force' to override");
1394 const char *
a = Getline(
"Local file exists already: would you like to overwrite it? [N/y]");
1395 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1402 Int_t fdout =
open(fileloc, openflags, openmode);
1404 Error(
"GetFile",
"could not open local file '%s' for writing: errno: %d", local, errno);
1424 if (!ssz.IsDigit()) {
1425 Error(
"GetFile",
"received non-digit size string: '%s' ('%s')", os->
GetName(), ssz.Data());
1431 Error(
"GetFile",
"received null or negative size: %lld", size);
1437 const Int_t kMAXBUF = 16384;
1443 while (rc == 0 && filesize < size) {
1444 left = size - filesize;
1445 if (left > kMAXBUF) left = kMAXBUF;
1447 filesize = (rec > 0) ? (filesize + rec) : filesize;
1456 SysError(
"GetFile",
"error writing to unit: %d", fdout);
1464 CpProgress(
"GetFile", filesize, size, &watch);
1465 }
else if (rec < 0) {
1467 Error(
"GetFile",
"error during receiving file");
1475 Error(
"GetFile",
"size not received");
1490 if (!(md5loc.get())) {
1491 Error(
"GetFile",
"cannot get MD5 checksum of the new local file '%s'", fileloc.
Data());
1493 }
else if (remsum != md5loc->
AsString()) {
1494 Error(
"GetFile",
"checksums for the local copy and the remote file differ: {rem:%s,loc:%s}",
1514 Error(
"PutFile",
"invalid TXProofMgr - do nothing");
1519 Error(
"PutFile",
"functionality not supported by server");
1526 Error(
"PutFile",
"local file path undefined");
1541 }
else if (filerem.
EndsWith(
"/")) {
1550 UInt_t openflags = O_RDONLY;
1558 const char *why = (rcloc == 0) ?
"is not regular" :
"does not exists";
1559 Printf(
"[PutFile] local file '%s' %s: cannot continue", fileloc.
Data(), why);
1565 Error(
"PutFile",
"cannot get user info for additional checks");
1575 Printf(
"[PutFile] file '%s': no permission to read the file", fileloc.
Data());
1576 Printf(
"[PutFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1585 Error(
"PutFile",
"cannot calculate the check sum for '%s'", fileloc.
Data());
1596 if (
Stat(filerem, strem) == 0) {
1597 if (
Md5sum(filerem, remsum) != 0) {
1598 Printf(
"[PutFile] remote file exists but the check sum calculation failed");
1602 if (remsum == locsum) {
1604 Printf(
"[PutFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1606 Printf(
"[PutFile] use option 'force' to override");
1613 const char *
a = Getline(
"Remote file exists already: would you like to overwrite it? [N/y]");
1614 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1623 int fd =
open(fileloc.
Data(), openflags);
1625 Error(
"PutFile",
"cannot open file '%s': %d", fileloc.
Data(), errno);
1632 if (force) cmd +=
" force";
1646 const Int_t kMAXBUF = 16384;
1650 lseek(fd, pos, SEEK_SET);
1653 while (rc == 0 && pos < stloc.
fSize) {
1655 if (left > kMAXBUF) left = kMAXBUF;
1659 if (siz < 0 || siz != left) {
1660 Error(
"PutFile",
"error reading from file: errno: %d", errno);
1679 Error(
"PutFile",
"command could not be executed");
1693 if (
Md5sum(filerem, remsum) != 0) {
1694 Printf(
"[PutFile] cannot get MD5 checksum of the new remote file '%s'", filerem.
Data());
1696 }
else if (remsum != locsum) {
1697 Printf(
"[PutFile] checksums for the local copy and the remote file differ: {rem:%s, loc:%s}",
1714 if (!pfx || size == 0 || !watch)
return;
1716 fprintf(stderr,
"[%s] Total %.02f MB\t|", pfx, (
Double_t)size/1048576);
1718 for (
int l = 0;
l < 20;
l++) {
1720 if (
l < 20*bytes/size)
1721 fprintf(stderr,
"=");
1722 else if (
l == 20*bytes/size)
1723 fprintf(stderr,
">");
1724 else if (
l > 20*bytes/size)
1725 fprintf(stderr,
".");
1727 fprintf(stderr,
"=");
1733 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
1734 100.0*(size?(bytes/size):1), bytes/copytime/1048576.);
1735 if (cr) fprintf(stderr,
"\n");
1749 Error(
"Cp",
"invalid TXProofMgr - do nothing");
1754 Error(
"Cp",
"functionality not supported by server");
1761 Error(
"Cp",
"source file path undefined");
1768 }
else if (filedst.
EndsWith(
"/")) {
1786 cmd.
Form(
"%s %s %s", filesrc.
Data(), filedst.
Data(), (fmt ? fmt :
""));
const char * GetHost() const
const char * GetName() const
Returns name of object.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
void ShowWorkers()
Show available workers.
double read(const std::string &file_name)
reading
XYZVector ans(TestRotation const &t, XYZVector const &v_in)
TObjString * ReadBuffer(const char *file, Long64_t ofs, Int_t len)
Read, via the coordinator, 'len' bytes from offset 'ofs' of 'file'.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void CpProgress(const char *pfx, Long64_t bytes, Long64_t size, TStopwatch *watch, Bool_t cr=kFALSE)
Print file copy progress.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
Int_t Stat(const char *what, FileStat_t &st, const char *where=0)
Run 'stat' on one of the nodes.
Int_t Md5sum(const char *what, TString &sum, const char *where=0)
Run 'md5sum' on one of the nodes.
Int_t GetRemoteProtocol() const
Int_t GetXrdProofdVersion() const
void DetachSession(Int_t, Option_t *="")
Detach session with 'id' from its proofserv.
static TMD5 * FileChecksum(const char *file)
Returns checksum of specified file.
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
double write(int n, const std::string &file_name, const std::string &vector_type, int compress=0)
writing
Bool_t HandleError(const void *in=0)
Handle error on the input socket.
Int_t Cp(const char *src, const char *dst=0, const char *opts=0)
Copy files in/out of the sandbox.
Collectable string class.
virtual void Close(Option_t *opt="")
Close connection.
Int_t GetRemoteId() const
void InterruptCurrentMonitor()
If in active in a monitor set ready state.
This class represents a WWW compatible URL.
static TXSocketHandler * GetSocketHandler(TFileHandler *h=0, TSocket *s=0)
Get an instance of the input socket handler with 'h' as handler, connected to socket 's'...
TString & ReplaceAll(const TString &s1, const TString &s2)
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
TProofMgrInterruptHandler & operator=(const TProofMgrInterruptHandler &)
virtual void SetName(const char *name)
Change (i.e.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
const char * GetProtocol() const
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual void Add()
Add signal handler to system signal handler list.
void SetInvalid()
Invalidate this manager by closing the connection.
void Print(Option_t *opt="") const
Print TNamed name and title.
void ToUpper()
Change string to upper case.
void More(const char *what, const char *how=0, const char *where=0)
Run 'more' on the nodes.
ClassImp(TXProofMgr) class TProofMgrInterruptHandler TProofMgrInterruptHandler(const TProofMgrInterruptHandler &)
void Grep(const char *what, const char *how=0, const char *where=0)
Run 'grep' on the nodes.
Int_t GetFile(const char *remote, const char *local, const char *opt=0)
Get file 'remote' into 'local' from the master.
R__EXTERN TVirtualMutex * gROOTMutex
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
const char * GetMssUrl(Bool_t=kFALSE)
Gets the URL to be prepended to paths when accessing the MSS associated with the connected cluster...
TList * QuerySessions(Option_t *opt="S")
Get list of sessions accessible to this manager.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
static void retrieve(const gsl_integration_workspace *workspace, double *a, double *b, double *r, double *e)
TXProofMgr(const char *url, Int_t loglevel=-1, const char *alias="")
Create a PROOF manager for the standard (old) environment.
void RemoteTouch()
Remote touch functionality: contact the server to proof our vitality.
virtual TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers.
Bool_t R_ISREG(Int_t mode)
static Int_t GetErrno()
Static function returning system error number.
Int_t SendMsgToUsers(const char *msg, const char *usr=0)
Send a message to connected users.
void SetRemoteId(Int_t id)
Bool_t MatchUrl(const char *url)
Checks if 'url' refers to the same 'user:port' entity as the URL in memory.
const char * Data() const
static TXProofMgrInit gxproofmgr_init
Int_t Reset(Bool_t hard=kFALSE, const char *usr=0)
Send a cleanup request for the sessions associated with the current user.
TProofMgr * GetTXProofMgr(const char *url, Int_t l, const char *al)
virtual int WriteRaw(const void *buf, int len, XrdClientPhyConnection *p=0)
Low level write call.
void Stop()
Stop the stopwatch.
Int_t RecvRaw(void *buf, Int_t len, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
const char * AsString() const
Return message digest as string.
This code implements the MD5 message-digest algorithm.
UChar_t mod R__LOCKGUARD2(gSrvAuthenticateMutex)
void Ls(const char *what="~/", const char *how=0, const char *where=0)
Run 'ls' on the nodes.
virtual ~TXProofMgr()
Destructor: close the connection.
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
virtual TProofDesc * GetProofDesc(Int_t id)
Get TProofDesc instance corresponding to 'id'.
Int_t Atoi() const
Return integer value of string.
void Continue()
Resume a stopped stopwatch.
Bool_t IsServProofd()
Return kTRUE if the remote server is a 'proofd'.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void SetManager(TProofMgr *mgr)
Set manager and schedule its destruction after this for clean operations.
void ShowROOTVersions()
Display what ROOT versions are available on the cluster.
TString GetString() const
TSignalHandler * fIntHandler
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
R__EXTERN TSystem * gSystem
virtual TObject * Remove(TObject *obj)
Remove object from the list.
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
char * Form(const char *fmt,...)
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
Int_t PutFile(const char *local, const char *remote, const char *opt=0)
Put file 'local'to 'remote' to the master If opt is "force", the file, if it exists remotely...
virtual const char * GetName() const
Returns name of object.
TSubString Strip(EStripType s=kTrailing, char c= ' ') const
Return a substring of self stripped at beginning and/or end.
virtual const char * GetUrl()
const Int_t kPROOF_Protocol
TObjString * Exec(Int_t action, const char *what, const char *how, const char *where)
Execute 'action' (see EAdminExecType in 'XProofProtocol.h') at 'where' (default master), with options 'how', on 'what'.
Int_t Rm(const char *what, const char *how=0, const char *where=0)
Run 'rm' on the nodes.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
virtual Int_t Reconnect()
Try reconnection after failure.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
void DisconnectSession(Int_t id, Option_t *opt="")
Disconnect a session.
TString & Remove(Ssiz_t pos)
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
TProof * AttachSession(Int_t id, Bool_t gui=kFALSE)
Dummy version provided for completeness.
void Close(Option_t *option="")
Close all open slave servers.
virtual Int_t GetSize() const
const Int_t kXPROOF_Protocol
Long64_t Atoll() const
Return long long value of string.
virtual void Remove()
Remove signal handler from system signal handler list.
Bool_t HandleInput(const void *)
Handle asynchronous input on the socket.
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
virtual Int_t GetUid(const char *user=0)
Returns the user's id. If user = 0, returns current user's id.
static void SetTXProofMgrHook(TProofMgr_t pmh)
Set hook to TXProofMgr ctor.
void Find(const char *what="~/", const char *how="-type f", const char *where=0)
Run 'find' on the nodes.
TProofLog * GetSessionLogs(Int_t ridx=0, const char *stag=0, const char *pattern="-v \"| SvcMsg\"", Bool_t rescan=kFALSE)
Get logs or log tails from last session associated with this manager instance.
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
Bool_t R_ISDIR(Int_t mode)
Int_t SetROOTVersion(const char *tag)
Set the default ROOT version to be used.
TProofLogElem * Add(const char *ord, const char *url)
Add new entry to the list of elements.
virtual int GetServiceByName(const char *service)
Get port # of internet service.
virtual void Add(TObject *obj)
Int_t Init(Int_t loglevel=-1)
Do real initialization: open the connection and set the relevant variables.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TObjString * SendCoordinator(Int_t kind, const char *msg=0, Int_t int2=0, Long64_t l64=0, Int_t int3=0, const char *opt=0)
Send message to intermediate coordinator.
virtual void AddFileHandler(TFileHandler *fh)
Add a file handler to the list of system file handlers.
static void ResetErrno()
Static function resetting system error number.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
void Tail(const char *what, const char *how=0, const char *where=0)
Run 'tail' on the nodes.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
Int_t GetOpenError() const
const char * GetUser() const
TProof * GetProof() const
Int_t Retrieve(const char *ord="*", TProofLog::ERetrieveOpt opt=TProofLog::kTrailing, const char *fname=0, const char *pattern=0)
Retrieve the content of the log file associated with worker 'ord'.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.