51 #include "compiledata.h"    52 #include "RConfigure.h"    73    gROOT->SetInterrupt(kFALSE);
   107    if (gSystem && 
name[0] != 
'-' && strcmp(
name, 
"Generic"))
   108       Error(
"TSystem", 
"only one instance of TSystem allowed");
   113    fStdExceptionHandler = 0;
   146       fOnExitList->Delete();
   150    if (fSignalHandler) {
   151       fSignalHandler->Delete();
   156       fFileHandler->Delete();
   160    if (fStdExceptionHandler) {
   161       fStdExceptionHandler->Delete();
   201    fBuildArch     = BUILD_ARCH;
   202    fBuildCompiler = COMPILER;
   203    fBuildCompilerVersion = COMPILERVERS;
   204    fBuildNode     = BUILD_NODE;
   205    fFlagsDebug    = CXXDEBUG;
   207    fIncludePath   = INCLUDEPATH;
   208    fLinkedLibs    = LINKEDLIBS;
   212    fMakeSharedLib = MAKESHAREDLIB;
   216    if (
gEnv && fBeepDuration == 0 && fBeepFreq == 0) {
   217       fBeepDuration = 
gEnv->
GetValue(
"Root.System.BeepDuration", 100);
   218       fBeepFreq     = 
gEnv->
GetValue(
"Root.System.BeepFreq", 440);
   220    if (!fName.CompareTo(
"Generic")) 
return kTRUE;
   249    GetLastErrorString() = errstr;
   257    if (
GetErrno() == 0 && GetLastErrorString() != 
"")
   258       return GetLastErrorString();
   270 #ifdef R__SOLARIS_CC50   286 #ifdef R__SOLARIS_CC50   299    if (fOnExitList == 0)
   301    if (fOnExitList->FindObject(obj) == 0)
   302       fOnExitList->
Add(obj);
   334       fBeepDuration = duration;
   337    if (fBeepDuration < 0 || fBeepFreq < 0) 
return; 
   338    if (freq < 0) freq = fBeepFreq;
   339    if (duration < 0) duration = fBeepDuration;
   340    DoBeep(freq, duration);
   363    catch (std::exception& exc) {
   364       TIter next(fStdExceptionHandler);
   375                Warning(
"Run", 
"instructed to abort");
   382    catch (
const char *str) {
   387       Warning(
"Run", 
"handle uncaugth exception, terminating");
   426       DispatchOneEvent(
kTRUE);
   428    return gROOT->IsInterrupted();
   478    if (ti && fTimers && (fTimers->FindObject(ti) == 0))
   501    if (!fTimers) 
return -1;
   509       if (t->
IsSync() == mode) {
   523    if (to && to->
IsAsync() && timeout > 0) {
   525          SigAlarmInterruptsSyscalls(
kTRUE);
   527          SigAlarmInterruptsSyscalls(
kFALSE);
   539    if (h && fSignalHandler && (fSignalHandler->FindObject(h) == 0))
   540       fSignalHandler->Add(h);
   561    if (h && fFileHandler && (fFileHandler->FindObject(h) == 0))
   562       fFileHandler->Add(h);
   618    if (eh && fStdExceptionHandler && (fStdExceptionHandler->FindObject(eh) == 0))
   619       fStdExceptionHandler->Add(eh);
   628    if (fStdExceptionHandler)
   689    FILE *pipe = OpenPipe(command, 
"r");
   691       SysError(
"GetFromPipe", 
"cannot run command \"%s\"", command);
   696    while (line.
Gets(pipe)) {
   702    Int_t r = ClosePipe(pipe);
   704       Error(
"GetFromPipe", 
"command \"%s\" returned %d", command, r);
   765    TIter next(fHelpers);
   766    while ((helper = (
TSystem*) next()))
   778       if ((h = 
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
   783    } 
else if ((h = 
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
   790       fHelpers->Add(helper);
   811    if (GetDirPtr() && GetDirPtr() == dirptr)
   814    return (checkproto || checkdir);
   876    return std::string();
   892    return std::string();
   906       TString dirname = DirName(safeName);
   913          int res = mkdir(dirname, 
kTRUE);
   921    return MakeDirectory(name);
   932       if (name[0] == 
'/' && name[1] == 
'\0')
   935       if ((cp = (
char*)strrchr(name, 
'/')))
   939    Error(
"BaseName", 
"name = 0");
   949       return dir[0] == 
'/';
   963    if (!name || !name[0]) 
return kFALSE;
   968    TString realname = SplitAclicMode(name, aclicMode, arguments, io);
   970    TString fileLocation = DirName(realname);
   975    while ( incPath.
Index(
" :") != -1 ) {
   978    incPath.
Prepend(fileLocation+
":.:");
   980    char *actual = Which(incPath,realname);
   999    if (pathname && strchr(pathname, 
'/')) {
  1003       static char *buf = 0;
  1004       int pathlen = strlen(pathname);
  1005       if (pathlen > len) {
  1008          buf = 
new char [len+1];
  1010       strcpy(buf, pathname);
  1012       char *
r = buf+pathlen-1;
  1014       while ( r>buf && *(r)==
'/') { --
r; }
  1016       while ( r>buf && *(r)!=
'/') { --
r; }
  1019       while ( r>buf && *(r)==
'/') { --
r; }
  1022       if (r==buf && *(r)!=
'/') {
  1048    PrependPathName(dir, nameString);
  1075    TTHREAD_TLS_ARRAY(
char, kBufSize, xname);
  1077    Bool_t res = ExpandFileName(fname, xname, kBufSize);
  1093    char xname[kBufSize];
  1095    Bool_t res = ExpandFileName(fname.
Data(), xname, kBufSize);
  1108    int         n, ier, iter, lx, ncopy;
  1109    char       *inp, *out, *
x, *t, buff[kBufSize*4];
  1110    const char *
b, *
c, *
e;
  1113    iter = 0; xname[0] = 0; inp = buff + kBufSize; out = inp + kBufSize;
  1114    inp[-1] = 
' '; inp[0] = 0; out[-1] = 
' ';
  1115    c = fname + strspn(fname, 
" \t\f\r");
  1118    strlcat(inp, c, kBufSize);
  1121    iter++; c = inp; ier = 0;
  1125    if (c[0] == 
'~' && c[1] == 
'/') { 
  1126       std::string hd = GetHomeDirectory();
  1130          strlcpy(x, p, kBufSize);
  1137    } 
else if (c[0] == 
'~' && c[1] != 
'/') { 
  1138       n = strcspn(c+1, 
"/ ");
  1140       strncat(buff, c+1, n);
  1141       std::string hd = GetHomeDirectory(buff);
  1145          strlcpy(x, p, kBufSize);
  1155    for ( ; c[0]; c++) {
  1159       if (c[0] == 
'.' && c[1] == 
'/' && c[-1] == 
' ') { 
  1160          std::string wd = GetWorkingDirectory();
  1161          strlcpy(buff, wd.c_str(), kBufSize);
  1166          strlcpy(x, p, kBufSize); x += strlen(p); c = e-1; 
continue;
  1173          if (c[1] == 
'(') b++;
  1174          if (c[1] == 
'{') b++;
  1178             for (e = b; isalnum(e[0]) || e[0] == 
'_'; e++) ;
  1179          buff[0] = 0; strncat(buff, b, e-b);
  1182             for (t = buff; (t[0] = toupper(t[0])); t++) ;
  1186             for (t = buff; (t[0] = tolower(t[0])); t++) ;
  1189          if (!p && !strcmp(buff, 
"cwd")) { 
  1190             std::string wd = GetWorkingDirectory();
  1191             strlcpy(buff, wd.c_str(), kBufSize);
  1194          if (!p && !strcmp(buff, 
"$")) { 
  1195             snprintf(buff,kBufSize*4, 
"%d", GetPid());
  1203             if (c[1] && c[1]!=
'\\' && c[1]!=
';' && c[1]!=
'/')
  1211             if (lp >= kBufSize) {
  1213                strlcpy(x, p, kBufSize);
  1219             c = (b==c+1) ? e-1 : e;
  1224    x[0] = 0; lx = x - out;
  1225    if (ier && iter < 3) { strlcpy(inp, out, kBufSize); 
goto again; }
  1226    ncopy = (lx >= kBufSize) ? kBufSize-1 : lx;
  1227    xname[0] = 0; strncat(xname, out, ncopy);
  1229    if (ier || ncopy != lx) {
  1230       ::Error(
"TSystem::ExpandFileName", 
"input: %s, output: %s", fname, xname);
  1280    if (strlen(url.
GetHost()) > 0) {
  1290          if (strlen(url.
GetUser()) > 0) {
  1369    int res = GetPathInfo(path, 
id, &lsize, flags, modtime);
  1371    if (res == 0 && size) {
  1373          Error(
"GetPathInfo", 
"file %s > 2 GB, use GetPathInfo() with Long64_t size", path);
  1399    int res = GetPathInfo(path, buf);
  1515    FindFile(search, wfilString, mode);
  1516    if (wfilString.
IsNull()) 
return 0;
  1692       Error(
"ShowOutput", 
"handle not specified");
  1698       Error(
"ShowOutput", 
"file '%s' cannot be read", h->
fFile.
Data());
  1704    if (!(f = fopen(h->
fFile.
Data(), 
"r"))) {
  1705       Error(
"ShowOutput", 
"file '%s' cannot be open", h->
fFile.
Data());
  1710    off_t ltot = lseek(fileno(f), (off_t) 0, SEEK_END);
  1712    lseek(fileno(f), (off_t) begin, SEEK_SET);
  1713    Int_t left = ltot - begin;
  1716    const Int_t kMAXBUF = 16384;
  1718    Int_t wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
  1721       while ((len = 
read(fileno(f), buf, wanted)) < 0 &&
  1726          SysError(
"ShowOutput", 
"error reading log file");
  1732       fprintf(stderr,
"%s", buf);
  1736       wanted = (left > kMAXBUF) ? kMAXBUF : left;
  1738    } 
while (len > 0 && left > 0);
  1781    if (left == right) 
return kTRUE;
  1783    if (left==0 || right==0) 
return kFALSE;
  1785    if ( (strcmp(right,left)==0) ) {
  1791    char leftname[_MAX_PATH];
  1792    char rightname[_MAX_PATH];
  1793    _fullpath( leftname, left, _MAX_PATH );
  1794    _fullpath( rightname, right, _MAX_PATH );
  1795    return ((stricmp(leftname, rightname)==0));
  1797    struct stat rightBuf;
  1798    struct stat leftBuf;
  1799    return (   ( 0 == stat( left, & leftBuf ) )
  1800        && ( 0 == stat( right, & rightBuf ) )
  1801        && ( leftBuf.st_dev == rightBuf.st_dev )     
  1802        && ( leftBuf.st_ino == rightBuf.st_ino )     
  1803        && ( leftBuf.st_size == rightBuf.st_size )   
  1804        && ( leftBuf.st_mtime == rightBuf.st_mtime ) 
  1822    TString libs( GetLibraries() );
  1823    TString moduleBasename( BaseName(module) );
  1833       if (idx == 0 || libs[idx-1] == 
'/' || libs[idx-1] == 
'\\') {
  1836          if (!l.
EndsWith(
".") && libs[idx]==
'.')
  1839          while (idx < len && isdigit(libs[idx])) {
  1842             if (libs[idx] == 
'.') {
  1846          while (idx < len && libs[idx] != 
'.') {
  1847             if (libs[idx] == 
' ' || idx+1 == len) {
  1854    if (l[l.
Length()-1] == 
'.') {
  1860          if ((idx == 0 || libs[idx-1] == 
' ') &&
  1861              (libs[idx+l.
Length()] == 
' ' || libs[idx+l.
Length()] == 0)) {
  1867    char *path = DynamicPathName(module);
  1875          libmapfilename = path;
  1876          idx = libmapfilename.
Last(
'.');
  1878             libmapfilename.
Remove(idx);
  1880          libmapfilename += 
".rootmap";
  1882             if (
gDebug > 0) 
Info(
"Load", 
"loading %s", libmapfilename.
Data());
  1884             deplibs = 
gInterpreter->GetSharedLibDeps(moduleBasename);
  1891             if (strcmp(module,deplib)==0) {
  1895                Info(
"Load", 
"loading dependent library %s for library %s",
  1897             if ((ret = Load(deplib, 
"", system)) < 0) {
  1907          const char *dirname = DirName(path);
  1909          TString rootlibdir = ROOTLIBDIR;
  1912          PrependPathName(
gRootDir, rootlibdir);
  1918             TString rootbindir = ROOTBINDIR;
  1921             PrependPathName(
gRootDir, rootbindir);
  1933       if (ret < 0) ret = -1;
  1935          Info(
"Load", 
"loaded library %s, status %d", path, ret);
  1938          Error(
"Load", 
"version mismatch, %s = %d, ROOT = %d",
  1939                path, v, 
gROOT->GetVersionInt());
  1943       gLibraryVersionIdx--;
  1947    if (!entry || !entry[0] || ret < 0) 
return ret;
  1949    Func_t 
f = DynFindSymbol(module, entry);
  1962    if (FindDynamicLibrary(sLib, quiet))
  1994    if ((path = DynamicPathName(module))) {
  2014    TString libs = GetLibraries(regexp);
  2017    Ssiz_t start = 0, index = 0, end = 0;
  2021    Printf(
"Loaded shared libraries");
  2022    Printf(
"=======================");
  2024    while ((start < libs.
Length()) && (index != 
kNPOS)) {
  2025       index = libs.
Index(separator, &end, start);
  2027          s = libs(index, end);
  2041    Printf(
"-----------------------");
  2042    Printf(
"%d libraries loaded", i);
  2043    Printf(
"=======================");
  2051    TTHREAD_TLS_DECL( 
TString, gLastErrorString);
  2052    return gLastErrorString;
  2060    return const_cast<TSystem*
>(
this)->GetLastErrorString();
  2106    if ((linked = GetLinkedLibraries())) {
  2107       if (fLinkedLibs != LINKEDLIBS) {
  2111          if (custom == fLinkedLibs) {
  2121       slinked.
Append(fLinkedLibs);
  2126       if (libs.
Length() == 0) {
  2132          static TString lastAddMissing;
  2133          if ( lastLinked != slinked ) {
  2136             lastLinked = slinked;
  2137             lastAddMissing.
Clear();
  2139             Ssiz_t start, index, end;
  2140             start = index = end = 0;
  2142             while ((start < slinked.
Length()) && (index != 
kNPOS)) {
  2143                index = slinked.
Index(separator,&end,start);
  2145                   TString sub = slinked(index,end);
  2146                   if (sub[0]==
'-' && sub[1]==
'L') {
  2161    } 
else if (libs.
Length() != 0) {
  2165       Ssiz_t start, index, end;
  2166       start = index = end = 0;
  2168       while ((start < slinked.
Length()) && (index != 
kNPOS)) {
  2169          index = slinked.
Index(separator,&end,start);
  2171             TString sub = slinked(index,end);
  2172             if (sub[0]!=
'-' && sub[1]!=
'L') {
  2182    if (regexp && *regexp) {
  2186       Ssiz_t start, index, end;
  2187       start = index = end = 0;
  2189       while ((start < libs.
Length()) && (index != 
kNPOS)) {
  2190          index = libs.
Index(separator,&end,start);
  2192             s = libs(index,end);
  2193             if ((isRegexp && s.
Index(user_re) != 
kNPOS) ||
  2195                if (!fListLibs.IsNull())
  2196                   fListLibs.Append(
" ");
  2197                fListLibs.Append(s);
  2205 #if defined(R__MACOSX)  2212    static TRegexp dynload(
"/lib-dynload/");
  2214    Ssiz_t start, index, end;
  2215    start = index = end = 0;
  2217    while ((start < libs2.
Length()) && (index != 
kNPOS)) {
  2218       index = libs2.
Index(separator, &end, start);
  2220          TString s = libs2(index, end);
  2228    fListLibs = maclibs;
  2232 #if defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)  2238       static TRegexp user_so(
"\\.so$");
  2240       Ssiz_t start, index, end;
  2241       start = index = end = 0;
  2243       while ((start < libs2.
Length()) && (index != 
kNPOS)) {
  2244          index = libs2.
Index(separator, &end, start);
  2248             TString s = libs2(index, end);
  2251                if ( GetPathInfo( s, 0, (
Long_t*)0, 0, 0 ) != 0 ) {
  2261       fListLibs = maclibs;
  2483    target = tobedeleted;
  2484    delete [] tobedeleted;
  2489 static TString R__Exec(
const char *cmd)
  2500    while ((x = fgetc(f))!=EOF ) {
  2501       if (x==
'\n' || x==
'\r') 
break;
  2509 static void R__FixLink(
TString &cmd)
  2515    TString res = R__Exec(
"link 2>&1");
  2517       if (res.
Contains(
"Microsoft (R) Incremental Linker"))
  2521    res = R__Exec(
"cygpath . 2>&1");
  2527    res = R__Exec(
"which cl.exe 2>&1|grep cl|sed 's,cl\\.exe$,link\\.exe,' 2>&1");
  2529       res = R__Exec(
Form(
"cygpath -w '%s' 2>&1",res.
Data()));
  2543    if (path.
Length() > 2 && path[1]==
':') {
  2563    const char * stderrfile = 
"/dev/null";
  2568    TString bakdepfilename = depfilename + 
".bak";
  2571    TString touch = 
"echo # > "; touch += 
"\"" + depfilename + 
"\"";
  2573    TString touch = 
"echo > "; touch += 
"\"" + depfilename + 
"\"";
  2576    TString builddep = ROOTBINDIR;
  2580    builddep += 
"/rmkdepend \"-f";
  2581    builddep += depfilename;
  2582    builddep += 
"\" -o_" + extension + 
"." + gSystem->
GetSoExt() + 
" ";
  2585       if ( build_loc.
Length() > (len+1) ) {
  2586          builddep += 
" \"-p";
  2587          if (build_loc[len] == 
'/' || build_loc[len+1] != 
'\\' ) {
  2597       builddep += 
" \"-p";
  2601    builddep += 
" -Y -- ";
  2604    rootsysInclude += 
"/include";
  2606    TString rootsysInclude = ROOTINCDIR;
  2608    builddep += 
" \"-I"+rootsysInclude+
"\" "; 
  2609    builddep += includes;
  2610    builddep += defines;
  2611    builddep += 
" -- \"";
  2612    builddep += filename;
  2617       if ( library.
Length() > (len+1) ) {
  2618          if (library[len] == 
'/' || library[len+1] != 
'\\' ) {
  2619             targetname = library.
Data() + len + 1;
  2621             targetname = library.
Data() + len + 2;
  2624          targetname = library;
  2627       targetname = library;
  2632    builddep += 
"\" > ";
  2633    builddep += stderrfile;
  2634    builddep += 
" 2>&1 ";
  2639 #if defined(R__HAS_CLING_DICTVERSION)  2641       char *clingdictversion = gSystem->
Which(incPath,
"clingdictversion.h");
  2642       if (clingdictversion) {
  2645          delete [] clingdictversion;
  2647          R__AddPath(adddictdep,rootsysInclude+
"/clingdictversion.h ");
  2652      const char *dictHeaders[] = { 
"RVersion.h", 
"RConfig.h", 
"TClass.h",
  2653        "TDictAttributeMap.h",
"TInterpreter.h",
"TROOT.h",
"TBuffer.h",
  2654        "TMemberInspector.h",
"TError.h",
"RtypesImp.h",
"TIsAProxy.h",
  2655        "TFileMergeInfo.h",
"TCollectionProxyInfo.h"};
  2657       for (
unsigned int h=0; 
h < 
sizeof(dictHeaders)/
sizeof(dictHeaders[0]); ++
h)
  2659          char *rootVersion = gSystem->
Which(incPath,dictHeaders[
h]);
  2663             delete [] rootVersion;
  2665             R__AddPath(adddictdep,rootsysInclude + 
"/" + dictHeaders[h]);
  2671       char *rootCling = gSystem->
Which(gSystem->
Getenv(
"PATH"),
"rootcling");
  2675          delete [] rootCling;
  2678    adddictdep += 
" >> \""+depfilename+
"\"";
  2680    TString addversiondep( 
"echo ");
  2681    addversiondep += libname + version_var_prefix + 
" \"" + 
ROOT_RELEASE + 
"\" >> \""+depfilename+
"\"";
  2690    if (depbuilt) depbuilt = !gSystem->
Exec(builddep);
  2691    if (depbuilt) depbuilt = !gSystem->
Exec(adddictdep);
  2692    if (depbuilt) depbuilt = !gSystem->
Exec(addversiondep);
  2695       ::Warning(
"ACLiC",
"Failed to generate the dependency file for %s",
  2699       gSystem->
Unlink(stderrfile);
  2701       gSystem->
Unlink(bakdepfilename);
  2826                           const char *library_specified,
  2827                           const char *build_dir,
  2830    static const char *version_var_prefix = 
"__ROOTBUILDVERSION=";
  2841       keep = (strchr(opt,
'k')!=0);
  2842       recompile = (strchr(opt,
'f')!=0);
  2843       if (strchr(opt,
'O')!=0) {
  2846       if (strchr(opt,
'g')!=0) {
  2849       if (strchr(opt,
'c')!=0) {
  2852       withInfo = strchr(opt, 
's') == 0;
  2853       verbose = strchr(opt, 
'v') != 0;
  2854       internalDebug = strchr(opt, 
'd') != 0;
  2857       TString rootbuild = ROOTBUILD;
  2865    Bool_t flatBuildDir = (fAclicProperties & kFlatBuildDir) || (strchr(opt,
'-')!=0);
  2868    TString build_loc = ExpandFileName(GetBuildDir());
  2869    if (build_dir && strlen(build_dir)) build_loc = build_dir;
  2870    if (build_loc == 
".") {
  2871       build_loc = WorkingDirectory();
  2872    } 
else if (build_loc.
Length() && (!IsAbsoluteFileName(build_loc)) ) {
  2873       AssignAndDelete( build_loc , ConcatFileName( WorkingDirectory(), build_loc ) );
  2879    TString incPath = GetIncludePath(); 
  2883       incPath.
Append(fromConfig);
  2886    while ( incPath.
Index(
" :") != -1 ) {
  2890    incPath.
Prepend(WorkingDirectory());
  2893    TString expFileName(filename);
  2894    ExpandPathName( expFileName );
  2895    TString library = expFileName;
  2896    if (! IsAbsoluteFileName(library) )
  2898       const char *whichlibrary = Which(incPath,library);
  2900          library = whichlibrary;
  2901          delete [] whichlibrary;
  2903          ::Error(
"ACLiC",
"The file %s can not be found in the include path: %s",filename,incPath.
Data());
  2908          ::Error(
"ACLiC",
"The file %s can not be found.",filename);
  2918    TString filename_fullpath = library;
  2920    TString file_dirname = DirName( filename_fullpath );
  2925    if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
  2926       file_dirname.
Prepend(library(0,2));
  2928    TString file_location( file_dirname  ); 
  2929    incPath.
Prepend( file_location + 
":" );
  2933    extension.
Replace( 0, dot_pos+1, 0 , 0);
  2934    TString libname_noext = library;
  2935    if (dot_pos>=0) libname_noext.
Remove( dot_pos );
  2939                     TString(
"_") + extension + 
"." + fSoExt );
  2941    TString libname ( BaseName( libname_noext ) );
  2944    if (library_specified && strlen(library_specified) ) {
  2946       libname = BaseName( library_specified );
  2947       library = library_specified;
  2948       ExpandPathName( library );
  2949       if (! IsAbsoluteFileName(library) ) {
  2950          AssignAndDelete( library , ConcatFileName( WorkingDirectory(), library ) );
  2952       library = 
TString(library) + 
"." + fSoExt;
  2955    TString libname_ext ( libname );
  2956    libname_ext +=  
"." + fSoExt;
  2958    TString lib_dirname = DirName( library );
  2963    if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
  2964       lib_dirname.
Prepend(library(0,2));
  2967    if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]), 
"/.", 2) == 0 ) {
  2970    if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]), 
"\\.", 2) == 0 ) {
  2973    TString lib_location( lib_dirname );
  2976    if (build_loc.
Length()==0) {
  2977       build_loc = lib_location;
  2980       TRegexp disk_finder (
"[A-z]:");
  2982       if (pos==0) library.
Remove(pos,3);
  2983       pos = lib_location.
Index( disk_finder );
  2984       if (pos==0) lib_location.
Remove(pos,3);
  2993       TString build_loc_store( build_loc );
  2994       if (!flatBuildDir) {
  2995          AssignAndDelete( build_loc, ConcatFileName( build_loc, lib_location) );
  2999          mkdirFailed = (0 != mkdir(build_loc, 
true));
  3000          if (mkdirFailed && !canWriteBuild_loc) {
  3003             build_loc = build_loc_store;
  3005          } 
else if (!mkdirFailed && dirmode!=0) {
  3006             Chmod(build_loc,dirmode);
  3018          ::Info(
"ACLiC",
"script has already been loaded in interpreted mode");
  3019          ::Info(
"ACLiC",
"unloading %s and compiling it", filename);
  3029    TString includes = GetIncludePath();
  3034       TRegexp rel_inc(
" -I[^\"/\\$%-][^:-]+");
  3036       pos = rel_inc.
Index(includes,&len);
  3038          TString sub = includes(pos,len);
  3044          includes.
Replace(pos,len,sub);
  3045          pos = rel_inc.
Index(includes,&len);
  3050       TRegexp rel_inc(
" -I\"[^/\\$%-][^:-]+");
  3052       pos = rel_inc.
Index(includes,&len);
  3054          TString sub = includes(pos,len);
  3058          includes.
Replace(pos,len,sub);
  3059          pos = rel_inc.
Index(includes,&len);
  3079       TString cmd = GetMakeSharedLib();
  3080       TRegexp rel_def(
"-D[^\\s\\t\\n\\r]*");
  3082       pos = rel_def.
Index(cmd,&len);
  3084          defines += cmd(pos,len);
  3086          pos = rel_def.
Index(cmd,&len,pos+1);
  3098          emergency_loc = TempDirectory();
  3109    AssignAndDelete( depfilename, ConcatFileName(depdir, BaseName(libname_noext)) );
  3110    depfilename += 
"_" + extension + 
".d";
  3114       Long_t lib_time, file_time;
  3118           (lib_time < file_time))) {
  3128                depdir = emergency_loc;
  3129                AssignAndDelete( depfilename, ConcatFileName(depdir, BaseName(libname_noext)) );
  3130                depfilename += 
"_" + extension + 
".d";
  3132             R__WriteDependencyFile(build_loc, depfilename, filename_fullpath, library, libname, extension, version_var_prefix, includes, defines, incPath);
  3139          FILE * depfile = fopen(depfilename.
Data(),
"r");
  3148             TString version_var = libname + version_var_prefix;
  3151             char *
line = 
new char[sz];
  3157             Bool_t hasversion = 
false;
  3159             while ((c = fgetc(depfile)) != EOF) {
  3162                   while ((c = fgetc(depfile)) != EOF) {
  3169                if (current && line[current-1]==
'=' && strncmp(version_var.
Data(),
line,current)==0) {
  3175                } 
else if (isspace(c) && !nested) {
  3177                      if (line[current-1]!=
':') {
  3186                            modified |= ( lib_time <= filetime );
  3193                   if (current==sz-1) {
  3195                      char *newline = 
new char[sz];
  3196                      strcpy(newline,line);
  3200                   if (c==
'"') nested = !nested;
  3209             recompile = modified;
  3217         || strlen(GetLibraries(library,
"D",
kFALSE)) != 0 ) {
  3226               && (lib_time>load_time)) {
  3231       if ( !recompile && reload ) {
  3234             ::Info(
"ACLiC",
"%s has been modified and will be reloaded",
  3242             fCompiled->Remove(libinfo);
  3253          return !gSystem->
Load(library);
  3257          ::Info(
"ACLiC",
"%s script has already been compiled and loaded",
  3258                 modified ? 
"modified" : 
"unmodified");
  3265             ::Info(
"ACLiC",
"it will be regenerated and reloaded!");
  3272             fCompiled->Remove(libinfo);
  3282    AssignAndDelete( libmapfilename, ConcatFileName( build_loc, libname ) );
  3283    libmapfilename += 
".rootmap";
  3284 #if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)) || defined(R__WIN32)  3289    Bool_t linkDepLibraries = !produceRootmap;
  3291 #if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5))  3293 #elif defined(R__WIN32)  3298       produceRootmap = linkLibs & 0x2;
  3299       linkDepLibraries = linkLibs & 0x1;
  3316          return !gSystem->
Load(library);
  3321    if (!canWrite && recompile) {
  3324          ::Warning(
"ACLiC",
"Could not create the directory: %s",
  3327          ::Warning(
"ACLiC",
"%s is not writable!",
  3330       if (emergency_loc == build_dir ) {
  3331          ::Error(
"ACLiC",
"%s is the last resort location (i.e. temp location)",build_loc.
Data());
  3334       ::Warning(
"ACLiC",
"Output will be written to %s",
  3335                 emergency_loc.
Data());
  3336       return CompileMacro(expFileName, opt, library_specified, emergency_loc, dirmode);
  3340       Info(
"ACLiC",
"creating shared library %s",library.
Data());
  3343    R__WriteDependencyFile(build_loc, depfilename, filename_fullpath, library, libname, extension, version_var_prefix, includes, defines, incPath);
  3346    TString dict = libname + 
"_ACLiC_dict";
  3350    static const int maxforbidden = 27;
  3351    static const char *forbidden_chars[maxforbidden] =
  3352       { 
"+",
"-",
"*",
"/",
"&",
"%",
"|",
"^",
">",
"<",
  3353         "=",
"~",
".",
"(",
")",
"[",
"]",
"!",
",",
"$",
  3354         " ",
":",
"'",
"#",
"@",
"\\",
"\"" };
  3355    for( 
int ic = 0; ic < maxforbidden; ic++ ) {
  3370    linkdef += 
"_ACLiC_linkdef.h";
  3371    std::ofstream linkdefFile( linkdef, std::ios::out );
  3372    linkdefFile << 
"// File Automatically generated by the ROOT Script Compiler "  3374    linkdefFile << std::endl;
  3375    linkdefFile << 
"#ifdef __CINT__" << std::endl;
  3376    linkdefFile << std::endl;
  3377    linkdefFile << 
"#pragma link C++ nestedclasses;" << std::endl;
  3378    linkdefFile << 
"#pragma link C++ nestedtypedefs;" << std::endl;
  3379    linkdefFile << std::endl;
  3383    const char * extensions[] = { 
".h", 
".hh", 
".hpp", 
".hxx",  
".hPP", 
".hXX" };
  3386    for (i = 0; i < 6; i++ ) {
  3388       TString extra_linkdef = BaseName( libname_noext );
  3389       extra_linkdef.
Append(GetLinkdefSuffix());
  3390       extra_linkdef.
Append(extensions[i]);
  3391       name = Which(incPath,extra_linkdef);
  3393          if (verboseLevel>4 && withInfo) {
  3394             Info(
"ACLiC",
"including extra linkdef file: %s",name);
  3396          linkdefFile << 
"#include \"" << name << 
"\"" << std::endl;
  3401    if (verboseLevel>5 && withInfo) {
  3402       Info(
"ACLiC",
"looking for header in: %s",incPath.
Data());
  3404    for (i = 0; i < 6; i++ ) {
  3406       TString lookup = BaseName( libname_noext );
  3407       lookup.
Append(extensions[i]);
  3408       name = Which(incPath,lookup);
  3410          linkdefFile << 
"#pragma link C++ defined_in "<<name<<
";"<< std::endl;
  3414    linkdefFile << 
"#pragma link C++ defined_in \""<<filename_fullpath << 
"\";" << std::endl;
  3415    linkdefFile << std::endl;
  3416    linkdefFile << 
"#endif" << std::endl;
  3417    linkdefFile.close();
  3423    mapfile += 
"_ACLiC_map";
  3424    TString mapfilein = mapfile + 
".in";
  3425    TString mapfileout = mapfile + 
".out";
  3430       needLoadMap = 
kTRUE;
  3433    std::ofstream mapfileStream( mapfilein, std::ios::out );
  3459       mapfileStream << file << std::endl;
  3461       mapfileStream << file << std::endl;
  3462       mapfileStream << name << std::endl;
  3464          for (i = 0; i < 
gInterpreter->GetRootMapFiles()->GetEntriesFast(); i++) {
  3469    mapfileStream.close();
  3474    rcling = gSystem->
Getenv(
"ROOTSYS");
  3478    rcling += 
"\\bin\\";
  3481    rcling = ROOTBINDIR;
  3488    rcling += 
"rootcling -v0 \"--lib-list-prefix=";
  3490    rcling += 
"\" -f \"";
  3492    if (produceRootmap) {
  3493       rcling += 
" -rml " + libname + 
" -rmf \"" + libmapfilename + 
"\" ";
  3495    rcling.
Append(GetIncludePath()).
Append(
" -D__ACLIC__ ");
  3496    if (produceRootmap) {
  3497       rcling.
Append(
"-DR__ACLIC_ROOTMAP ");
  3507       if (verboseLevel>3) {
  3508          ::Info(
"ACLiC",
"creating the dictionary files");
  3509          if (verboseLevel>4)  
::Info(
"ACLiC", 
"%s", rcling.
Data());
  3513    Int_t dictResult = gSystem->
Exec(rcling);
  3515       if (dictResult==139) 
::Error(
"ACLiC",
"Dictionary generation failed with a core dump!");
  3524       TString linkedlibs = GetLibraries(
"", 
"S");
  3527       std::ifstream liblist(mapfileout);
  3529       while ( liblist >> libtoload ) {
  3531          if (libtoload == 
"#") {
  3533             std::string toskipcomment;
  3534             std::getline(liblist,toskipcomment);
  3537          if (libtoload != library && libtoload != libname && libtoload != libname_ext) {
  3538             if (produceRootmap) {
  3539                if (loadLib || linkDepLibraries ) {
  3540                   result = 
gROOT->LoadClass(
"", libtoload) >= 0;
  3546                if (!linkedlibs.
Contains(libtoload)) {
  3548                   depLibraries.
Append(
" ");
  3549                   depLibraries.
Append(GetLibraries(libtoload,
"DSL",
kFALSE));
  3550                   depLibraries = depLibraries.
Strip(); 
  3553                gROOT->LoadClass(
"", libtoload);
  3556          unsigned char c = liblist.peek();
  3557          if (c==
'\n' || c==
'\r') {
  3578    TString linkLibrariesNoQuotes(GetLibraries(
"",
"SDL"));
  3583    for (
auto tokenObj : *linkLibrariesNoQuotes.
Tokenize(
" ")) {
  3584       singleLibrary = ((
TObjString*)tokenObj)->GetString();
  3585       if (!AccessPathName(singleLibrary) || singleLibrary[0]==
'-') {
  3586          if (collectingSingleLibraryNameTokens) {
  3587             librariesWithQuotes.
Chop();
  3588             librariesWithQuotes += 
"\" \"" + singleLibrary + 
"\"";
  3589             collectingSingleLibraryNameTokens = 
kFALSE;
  3591             librariesWithQuotes += 
" \"" + singleLibrary + 
"\"";
  3594          if (collectingSingleLibraryNameTokens) {
  3595             librariesWithQuotes += singleLibrary + 
" ";
  3597             collectingSingleLibraryNameTokens = 
kTRUE;
  3598             librariesWithQuotes += 
" \"" + singleLibrary + 
" ";
  3603    linkLibraries.
Prepend(librariesWithQuotes);
  3609    cmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
  3611    cmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
  3614    cmd.
ReplaceAll(
"$SharedLib",
"\"$SharedLib\"");
  3616    if (linkDepLibraries) {
  3617       if (produceRootmap) {
  3640    fakeMain += 
"_ACLiC_main";
  3642    std::ofstream fakeMainFile( fakeMain, std::ios::out );
  3643    fakeMainFile << 
"// File Automatically generated by the ROOT Script Compiler "  3645    fakeMainFile << 
"int main(char*argc,char**argvv) {};" << std::endl;
  3646    fakeMainFile.close();
  3657    exec += 
"_ACLiC_exec";
  3658    testcmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
  3660    testcmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
  3664    testcmd.
ReplaceAll(
"$LinkedLibs",linkLibraries);
  3672    R__FixLink(testcmd);
  3677       if (verboseLevel>3 && withInfo) {
  3678          ::Info(
"ACLiC",
"compiling the dictionary and script files");
  3679          if (verboseLevel>4)  
::Info(
"ACLiC", 
"%s", cmd.
Data());
  3681       Int_t compilationResult = gSystem->
Exec( cmd );
  3682       if (compilationResult) {
  3683          if (compilationResult==139) 
::Error(
"ACLiC",
"Compilation failed with a core dump!");
  3685          if (produceRootmap) {
  3686             gSystem->
Unlink(libmapfilename);
  3689       result = !compilationResult;
  3704       if (verboseLevel>3 && withInfo)  
::Info(
"ACLiC",
"loading the shared library");
  3705       if (loadLib) result = !gSystem->
Load(library);
  3706       else result = 
kTRUE;
  3709          if (verboseLevel>3 && withInfo) {
  3710             ::Info(
"ACLiC",
"testing for missing symbols:");
  3711             if (verboseLevel>4)  
::Info(
"ACLiC", 
"%s", testcmd.
Data());
  3713          gSystem->
Exec(testcmd);
  3719    if (verboseLevel<=5 && !internalDebug) {
  3721       gSystem->
Unlink( dicth );
  3722       gSystem->
Unlink( dictObj );
  3723       gSystem->
Unlink( linkdef );
  3724       gSystem->
Unlink( mapfilein );
  3725       gSystem->
Unlink( mapfileout );
  3726       gSystem->
Unlink( fakeMain );
  3729    if (verboseLevel>6) {
  3733       gSystem->
Exec(rcling);
  3734       gSystem->
Exec( cmd );
  3735       gSystem->
Exec(testcmd);
  3747    return fAclicProperties;
  3763    return fBuildCompiler;
  3771    return fBuildCompilerVersion;
  3787    if (fBuildDir.Length()==0) {
  3788       if (!
gEnv) 
return "";
  3828    return fMakeSharedLib;
  3845    fListPaths = fIncludePath;
  3846    fListPaths.Append(
" ").Append(
gInterpreter->GetIncludePath());
  3865    if (fLinkdefSuffix.Length()==0) {
  3866       if (!
gEnv) 
return "_linkdef";
  3869    return fLinkdefSuffix;
  3903    fBuildDir = build_dir;
  3904    if (isflat) fAclicProperties |= (kFlatBuildDir & 
kBitMask);
  3905    else fAclicProperties &= ~(kFlatBuildDir & 
kBitMask);
  3914    fFlagsDebug = flags;
  3951    fMakeExe = directives;
  4003    fMakeSharedLib = directives;
  4013       fIncludePath += 
" ";
  4014       fIncludePath += includePath;
  4025       fLinkedLibs += linkedLib;
  4047    fIncludePath = includePath;
  4058    fLinkedLibs = linkedLibs;
  4080    fLinkdefSuffix = suffix;
  4112    char *fname = 
Strip(filename);
  4114    char *arg = strchr(fname, 
'(');
  4116    while (arg && *arg && (arg > fname && *(arg-1) == 
'$') && *(arg+1))
  4117       arg = strchr(arg+1, 
'(');
  4118    if (arg && arg > fname) {
  4131       s2 = strstr(fname, 
">>");
  4132       if (!s2) s2 = strstr(fname, 
"2>");
  4133       if (!s2) s2 = strchr(fname, 
'>');
  4134       s3 = strchr(fname, 
'<');
  4135       if (s2 && s3) s2 = s2<s3 ? s2 : s3;
  4136       if (s3 && !s2) s2 = s3;
  4145          while (s2 && *s2 == 
' ') s2--;
  4155    int len = strlen(fname);
  4158       if (strchr(
"kfgOcsdv-", fname[len - 1])) {
  4159          mode += fname[len - 1];
  4165    Bool_t compile = len && fname[len - 1] == 
'+';
  4166    Bool_t remove  = compile && len > 1 && fname[len - 2] == 
'+';
  4172          fname[strlen(fname)-2] = 0;
  4175          fname[strlen(fname)-1] = 0;
  4184    if (arg) arguments += arg;
  4185    else arguments = 
"";
  4196    TIter next(fCompiled);
  4198    while ((lib = (
TNamed*)next())) {
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root. 
 
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message. 
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode. 
 
virtual void Add(TObject *obj)
 
virtual UInt_t GetUniqueID() const
Return the unique object id. 
 
double read(const std::string &file_name)
reading 
 
virtual Bool_t IsAbsoluteFileName(const char *dir)
Return true if dir is an absolute pathname. 
 
virtual int GetPid()
Get process id. 
 
virtual int GetCpuInfo(CpuInfo_t *info, Int_t sampleTime=1000) const
Returns cpu load average and load info into the CpuInfo_t structure. 
 
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets). 
 
virtual void Syslog(ELogLevel level, const char *mess)
Send mess to syslog daemon. 
 
virtual const char * GetFlagsOpt() const
Return the optimization flags. 
 
int GetErrno()
return errno 
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message. 
 
virtual const char * GetBuildCompilerVersion() const
Return the build compiler version. 
 
virtual Bool_t IsPathLocal(const char *path)
Returns TRUE if the url in 'path' points to the local file system. 
 
const char * GetHostAddress() const
Returns the IP address string "%d.%d.%d.%d". 
 
Bool_t ProcessEvents()
Process events if timer did time out. 
 
virtual const char * WorkingDirectory()
Return working directory. 
 
virtual void StackTrace()
Print a stack trace. 
 
void Reset()
Reset the timer. 
 
virtual void SetFlagsDebug(const char *)
FlagsDebug should contain the options to pass to the C++ compiler in order to compile the library in ...
 
virtual void NotifyApplicationCreated()
Hook to tell TSystem that the TApplication object has been created. 
 
Collectable string class. 
 
virtual const char * GetLinkedLibs() const
Return the list of library linked to this executable. 
 
const char * GetHostName() const
 
virtual int Link(const char *from, const char *to)
Create a link from file1 to file2. 
 
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form: ~~~ {.cpp} [path/]macro.C[+|++[k|f|g|O|c|s|d|v|-]][(args)]...
 
virtual void SetFlagsOpt(const char *)
FlagsOpt should contain the options to pass to the C++ compiler in order to compile the library in op...
 
virtual const char * GetLinkedLibraries()
Get list of shared libraries loaded at the start of the executable. 
 
void RemoveOnExit(TObject *obj)
Objects that should be deleted on exit of the OS interface. 
 
virtual Int_t SetFPEMask(Int_t mask=kDefaultMask)
Set which conditions trigger a floating point exception. 
 
This class represents a WWW compatible URL. 
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
virtual const char * GetBuildNode() const
Return the build node name. 
 
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. 
 
Bool_t TestBit(UInt_t f) const
 
const char * GetProtocol() const
 
static Int_t RootVersionCode()
Return ROOT version code as defined in RVersion.h. 
 
virtual TString GetFromPipe(const char *command)
Execute command and return output in TString. 
 
This class represents an Internet Protocol (IP) address. 
 
virtual int MakeDirectory(const char *name)
Make a directory. 
 
virtual void AddSignalHandler(TSignalHandler *sh)
Add a signal handler to list of system signal handlers. 
 
virtual const char * HomeDirectory(const char *userName=0)
Return the user's home directory. 
 
virtual void CloseConnection(int sock, Bool_t force=kFALSE)
Close socket connection. 
 
Regular expression class. 
 
This class implements a mutex interface. 
 
virtual Bool_t ChangeDirectory(const char *path)
Change directory. 
 
TVersionCheck(int versionCode)
Register version of plugin library. 
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
virtual UserGroup_t * GetGroupInfo(Int_t gid)
Returns all group info in the UserGroup_t structure. 
 
virtual int GetFsInfo(const char *path, Long_t *id, Long_t *bsize, Long_t *blocks, Long_t *bfree)
Get info about a file system: fs type, block size, number of blocks, number of free blocks...
 
virtual void SetMakeExe(const char *directives)
Directives has the same syntax as the argument of SetMakeSharedLib but is used to create an executabl...
 
Int_t LoadPlugin()
Load the plugin library for this handler. 
 
virtual void Remove()
Remove std::exception handler from system handler list. 
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library. 
 
virtual void AddStdExceptionHandler(TStdExceptionHandler *eh)
Add an exception handler to list of system exception handlers. 
 
virtual void ResetSignal(ESignals sig, Bool_t reset=kTRUE)
If reset is true reset the signal handler for the specified signal to the default handler...
 
virtual int GetMemInfo(MemInfo_t *info) const
Returns ram and swap memory usage info into the MemInfo_t structure. 
 
static void R__AddPath(TString &target, const TString &path)
 
virtual const char * DirName(const char *pathname)
Return the directory name in pathname. 
 
virtual TTimer * RemoveTimer(TTimer *t)
Remove timer from list of system timers. 
 
virtual const char * GetSoExt() const
Get the shared library extension. 
 
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path. 
 
virtual void SetMakeSharedLib(const char *directives)
Directives should contain the description on how to compile and link a shared lib. 
 
virtual int AnnounceUdpService(int port, int backlog)
Announce UDP service. 
 
virtual FILE * OpenPipe(const char *command, const char *mode)
Open a pipe. 
 
virtual const char * GetFlagsDebug() const
Return the debug flags. 
 
TString & Prepend(const char *cs)
 
R__EXTERN TApplication * gApplication
 
TObject * At(Int_t idx) const
 
virtual void ResetSignals()
Reset signals handlers to previous behaviour. 
 
virtual void IgnoreInterrupt(Bool_t ignore=kTRUE)
If ignore is true ignore the interrupt signal, else restore previous behaviour. 
 
Basic time type with millisecond precision. 
 
static bool R__MatchFilename(const char *left, const char *right)
Figure out if left and right points to the same object in the file system. 
 
virtual TInetAddress GetPeerName(int sock)
Get Internet Protocol (IP) address of remote host and port #. 
 
virtual int SendRaw(int sock, const void *buffer, int length, int flag)
Send exactly length bytes from buffer. 
 
virtual TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers. 
 
Bool_t R_ISREG(Int_t mode)
 
virtual char * GetServiceByPort(int port)
Get name of internet service. 
 
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory. 
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f. 
 
TVirtualMutex * gSystemMutex
 
virtual const char * FindFile(const char *search, TString &file, EAccessMode mode=kFileExists)
Find location of file in a search path. 
 
virtual const char * UnixPathName(const char *unixpathname)
Convert from a Unix pathname to a local pathname. 
 
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
 
static Int_t GetErrno()
Static function returning system error number. 
 
Bool_t IsInterruptingSyscalls() const
 
virtual int Rename(const char *from, const char *to)
Rename a file. 
 
virtual const char * GetLinkdefSuffix() const
Return the linkdef suffix chosen by the user for ACLiC. 
 
const char * GetHost() const
 
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries. 
 
virtual int Unlink(const char *name)
Unlink, i.e. remove, a file. 
 
virtual std::string GetHomeDirectory(const char *userName=0) const
Return the user's home directory. 
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
 
virtual int GetSysInfo(SysInfo_t *info) const
Returns static system info, like OS type, CPU type, number of CPUs RAM size, etc into the SysInfo_t s...
 
virtual FILE * TempFileName(TString &base, const char *dir=0)
Create a secure temporary file by appending a unique 6 letter string to base. 
 
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds. 
 
The TNamed class is the base class for all named ROOT classes. 
 
TObject * Next()
Return next object in collection. 
 
virtual const char * GetDynamicPath()
Return the dynamic path (used to find shared libraries). 
 
void Clear()
Clear string without changing its capacity. 
 
virtual int CompileMacro(const char *filename, Option_t *opt="", const char *library_name="", const char *build_dir="", UInt_t dirmode=0)
This method compiles and loads a shared library containing the code from the file "filename"...
 
virtual const char * Getenv(const char *env)
Get environment variable. 
 
virtual void ListLibraries(const char *regexp="")
List all loaded shared libraries. 
 
virtual const char * GetMakeExe() const
Return the command line use to make an executable. 
 
virtual void SetDisplay()
Set DISPLAY environment variable based on utmp entry. Only for UNIX. 
 
TString & Append(const char *cs)
 
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name. 
 
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string. 
 
virtual EAclicMode GetAclicMode() const
AclicMode indicates whether the library should be built in debug mode or optimized. 
 
virtual void ExitLoop()
Exit from event loop. 
 
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure. 
 
virtual int RecvRaw(int sock, void *buffer, int length, int flag)
Receive exactly length bytes into buffer. 
 
Ssiz_t First(char c) const
Find first occurrence of a character c. 
 
virtual ~TSystem()
Delete the OS interface. 
 
virtual void Unload(const char *module)
Unload a shared library. 
 
virtual const char * TempDirectory() const
Return a user configured or systemwide directory to create temporary files in. 
 
static Int_t gLibraryVersionMax
 
virtual Bool_t ConsistentWith(const char *path, void *dirptr=0)
Check consistency of this helper with the one required by 'path' or 'dirptr'. 
 
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host. 
 
void Error(const char *location, const char *msgfmt,...)
 
virtual void Closelog()
Close connection to system log daemon. 
 
virtual const char * GetBuildCompiler() const
Return the build compiler. 
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id. 
 
TString & GetLastErrorString()
Return the thread local storage for the custom last error message. 
 
const char * GetUser() const
 
static Int_t * gLibraryVersion
 
virtual EStatus Handle(std::exception &exc)=0
 
virtual void AddDynamicPath(const char *pathname)
Add a new directory to the dynamic path. 
 
virtual const char * GetBuildArch() const
Return the build architecture. 
 
virtual TTime Now()
Get current time in milliseconds since 0:00 Jan 1 1995. 
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes. 
 
virtual void Setenv(const char *name, const char *value)
Set environment variable. 
 
virtual TStdExceptionHandler * RemoveStdExceptionHandler(TStdExceptionHandler *eh)
Remove an exception handler from list of exception handlers. 
 
void ResetErrno()
reset errno 
 
static void R__WriteDependencyFile(const TString &build_loc, const TString &depfilename, const TString &filename, const TString &library, const TString &libname, const TString &extension, const char *version_var_prefix, const TString &includes, const TString &defines, const TString &incPath)
 
virtual Bool_t Init()
Initialize the OS interface. 
 
if object ctor succeeded but object should not be used 
 
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries. 
 
Long_t ExecPlugin(int nargs, const T &... params)
 
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource. 
 
virtual int AcceptConnection(int sock)
Accept a connection. 
 
Bool_t Gets(FILE *fp, Bool_t chop=kTRUE)
Read one line from the stream, including the  , or until EOF. 
 
void AssignAndDelete(TString &target, char *tobedeleted)
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
virtual void SetDynamicPath(const char *pathname)
Set the dynamic path to a new value. 
 
virtual int AnnounceTcpService(int port, Bool_t reuse, int backlog, int tcpwindowsize=-1)
Announce TCP/IP service. 
 
virtual const char * GetBuildDir() const
Return the path of the build directory. 
 
virtual Long_t NextTimeOut(Bool_t mode)
Time when next timer of mode (synchronous=kTRUE or asynchronous=kFALSE) will time-out (in ms)...
 
static Int_t ConvertVersionCode2Int(Int_t code)
Convert version code to an integer, i.e. 331527 -> 51507. 
 
Int_t GetEntriesFast() const
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message. 
 
char * Form(const char *fmt,...)
 
virtual int Umask(Int_t mask)
Set the process file creation mode mask. 
 
virtual void SetBuildDir(const char *build_dir, Bool_t isflat=kFALSE)
Set the location where ACLiC will create libraries and use as a scratch area. 
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end. 
 
virtual Int_t GetAclicProperties() const
Return the ACLiC properties field. 
 
virtual int SendBuf(int sock, const void *buffer, int length)
Send a buffer headed by a length indicator. 
 
Handles synchronous and a-synchronous timer events. 
 
virtual void ListSymbols(const char *module, const char *re="")
List symbols in a shared library. 
 
virtual Int_t Exec(const char *shellcmd)
Execute a command. 
 
virtual void StopIdleing()
Called when system stops idleing. 
 
virtual int Utime(const char *file, Long_t modtime, Long_t actime)
Set the a files modification and access times. 
 
char * Strip(const char *str, char c=' ')
Strip leading and trailing c (blanks by default) from a string. 
 
virtual void Abort(int code=0)
Abort the application. 
 
virtual void InnerLoop()
Inner event loop. 
 
virtual const char * GetMakeSharedLib() const
Return the command line use to make a shared library. 
 
virtual void SetSoExt(const char *soExt)
Set shared library extension, should be either .so, .sl, .a, .dll, etc. 
 
virtual void Unsetenv(const char *name)
Unset environment variable. 
 
if object destructor must call RecursiveRemove() 
 
virtual void FreeDirectory(void *dirp)
Free a directory. 
 
virtual int ClosePipe(FILE *pipe)
Close the pipe. 
 
virtual void Run()
System event loop. 
 
char * StrDup(const char *str)
Duplicate the string str. 
 
#define R__LOCKGUARD2(mutex)
 
virtual int OpenConnection(const char *server, int port, int tcpwindowsize=-1, const char *protocol="tcp")
Open a connection to another host. 
 
virtual int SetSockOpt(int sock, int kind, int val)
Set socket option. 
 
virtual Int_t Select(TList *active, Long_t timeout)
Select on active file descriptors (called by TMonitor). 
 
virtual const char * FindDynamicLibrary(TString &lib, Bool_t quiet=kFALSE)
Find a dynamic library using the system search paths. 
 
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=0)
Redirect standard output (stdout, stderr) to the specified file. 
 
TString & Remove(Ssiz_t pos)
 
virtual int Chmod(const char *file, UInt_t mode)
Set the file permission bits. Returns -1 in case or error, 0 otherwise. 
 
virtual TSignalHandler * RemoveSignalHandler(TSignalHandler *sh)
Remove a signal handler from list of signal handlers. 
 
virtual void StartIdleing()
Called when system starts idleing. 
 
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString. 
 
virtual Int_t GetEffectiveUid()
Returns the effective user id. 
 
virtual const char * GetIncludePath()
Get the list of include path. 
 
virtual Func_t DynFindSymbol(const char *module, const char *entry)
Find specific entry point in specified library. 
 
virtual const char * HostName()
Return the system's host name. 
 
virtual int Symlink(const char *from, const char *to)
Create a symbolic link from file1 to file2. 
 
Ssiz_t Index(const TString &str, Ssiz_t *len, Ssiz_t start=0) const
Find the first occurrence of the regexp in string and return the position, or -1 if there is no match...
 
Ssiz_t Last(char c) const
Find last occurrence of a character c. 
 
char * DynamicPathName(const char *lib, Bool_t quiet=kFALSE)
Find a dynamic library called lib using the system search paths. 
 
virtual void Remove()
Remove signal handler from system signal handler list. 
 
virtual const char * ExpandFileName(const char *fname)
Expand a pathname getting rid of special shell characters like ~. 
 
virtual void SetProgname(const char *name)
Set the application name (from command line, argv[0]) and copy it in gProgName. 
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
 
virtual Int_t GetGid(const char *group=0)
Returns the group's id. If group = 0, returns current user's group. 
 
void Beep(Int_t freq=-1, Int_t duration=-1, Bool_t setDefault=kFALSE)
Beep for duration milliseconds with a tone of frequency freq. 
 
virtual void DispatchOneEvent(Bool_t pendingOnly=kFALSE)
Dispatch a single event. 
 
virtual void CleanCompiledMacros()
Remove the shared libs produced by the CompileMacro() function. 
 
virtual TInetAddress GetSockName(int sock)
Get Internet Protocol (IP) address of host and port #. 
 
virtual Int_t GetUid(const char *user=0)
Returns the user's id. If user = 0, returns current user's id. 
 
virtual void Remove()
Remove file event handler from system file handler list. 
 
virtual void AddLinkedLibs(const char *linkedLib)
Add linkedLib to already set linked libs. 
 
virtual void SetAclicMode(EAclicMode mode)
AclicMode indicates whether the library should be built in debug mode or optimized. 
 
Mother of all ROOT objects. 
 
virtual void SetObjExt(const char *objExt)
Set object files extension, should be either .o, .obj, etc. 
 
virtual Bool_t IsFileInIncludePath(const char *name, char **fullpath=0)
Return true if 'name' is a file that can be found in the ROOT include path or the current directory...
 
virtual const char * GetTitle() const
Returns title of object. 
 
virtual int RecvBuf(int sock, void *buffer, int length)
Receive a buffer headed by a length indicator. 
 
virtual void Openlog(const char *name, Int_t options, ELogFacility facility)
Open connection to system log daemon. 
 
Bool_t R_ISDIR(Int_t mode)
 
virtual int GetServiceByName(const char *service)
Get port # of internet service. 
 
virtual int AnnounceUnixService(int port, int backlog)
Announce unix domain service. 
 
virtual void AddTimer(TTimer *t)
Add timer to list of system timers. 
 
virtual void ShowOutput(RedirectHandle_t *h)
Display the content associated with the redirection described by the opaque handle 'h'...
 
virtual void SetLinkedLibs(const char *linkedLibs)
LinkedLibs should contain the library directory and list of libraries needed to recreate the current ...
 
virtual Int_t GetEffectiveGid()
Returns the effective group id. 
 
virtual void Exit(int code, Bool_t mode=kTRUE)
Exit the application. 
 
virtual std::string GetWorkingDirectory() const
Return working directory. 
 
virtual int GetProcInfo(ProcInfo_t *info) const
Returns cpu and memory used by this process into the ProcInfo_t structure. 
 
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
 
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
Copy a file. 
 
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist. 
 
Iterator of ordered collection. 
 
virtual void AddIncludePath(const char *includePath)
Add includePath to the already set include path. 
 
TSystem * FindHelper(const char *path, void *dirptr=0)
Create helper TSystem to handle file and directory operations that might be special for remote file a...
 
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 SetErrorStr(const char *errstr)
Set the system error string. 
 
virtual const char * GetName() const
Returns name of object. 
 
virtual int GetSockOpt(int sock, int kind, int *val)
Get socket option. 
 
Abstract base class defining a generic interface to the underlying Operating System. 
 
virtual void SetLinkdefSuffix(const char *suffix)
The 'suffix' will be appended to the name of a script loaded by ACLiC and used to locate any eventual...
 
virtual Int_t GetFPEMask()
Return the bitmap of conditions that trigger a floating point exception. 
 
static Int_t gLibraryVersionIdx
 
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract...
 
virtual char * ConcatFileName(const char *dir, const char *name)
Concatenate a directory and a file name. User must delete returned string. 
 
virtual const char * GetObjExt() const
Get the object file extension. 
 
virtual const char * GetError()
Return system error string. 
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message. 
 
static Int_t * ReAllocInt(Int_t *vp, size_t size, size_t oldsize)
Reallocate (i.e. 
 
virtual void SetIncludePath(const char *includePath)
IncludePath should contain the list of compiler flags to indicate where to find user defined header f...
 
if(line.BeginsWith("/*"))
 
virtual const char * GetTitle() const
Returns title of object. 
 
const char * Data() const
 
virtual void IgnoreSignal(ESignals sig, Bool_t ignore=kTRUE)
If ignore is true ignore the specified signal, else restore previous behaviour.