44#include "compiledata.h" 
   45#include "RConfigure.h" 
  118   return !strncmp(path, 
proto, strlen(
proto)) ? path + strlen(
proto) : path;
 
  127      Error(
"TSystem", 
"only one instance of TSystem allowed");
 
  345   catch (std::exception& exc) {
 
  357               Warning(
"Run", 
"instructed to abort");
 
  364   catch (
const char *str) {
 
  369      Warning(
"Run", 
"handle uncaught exception, terminating");
 
  410   return gROOT->IsInterrupted();
 
  505   if (to && to->
IsAsync() && timeout > 0) {
 
  671   FILE *pipe = 
OpenPipe(command, 
"r");
 
  673      SysError(
"GetFromPipe", 
"cannot run command \"%s\"", command);
 
  678   while (
line.Gets(pipe)) {
 
  686      Error(
"GetFromPipe", 
"command \"%s\" returned %d", command, 
r);
 
  754      while ((helper = (
TSystem*) next()))
 
  768      if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
 
  769         if (
h->LoadPlugin() == -1)
 
  773   } 
else if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
 
  774      if (
h->LoadPlugin() == -1)
 
  776      helper = (
TSystem*) 
h->ExecPlugin(0);
 
  806   return (checkproto || checkdir);
 
  868   return std::string();
 
  884   return std::string();
 
  924      if (
name[0] == 
'/' && 
name[1] == 
'\0')
 
  927      if ((cp = (
char *)strrchr(
name, 
'/')))
 
  931   Error(
"BaseName", 
"name = 0");
 
  941      return dir[0] == 
'/';
 
  967   while ( incPath.
Index(
" :") != -1 ) {
 
  974   incPath.
Prepend(fileLocation+
":.:");
 
  976   char *actual = 
Which(incPath,realname);
 
  996   if (res.IsNull() || (res == 
"."))
 
 1002   TTHREAD_TLS(
char*) buf = 
nullptr;
 
 1003   if (res.Length() >= 
len) {
 
 1004      if (buf) 
delete [] buf;
 
 1005      len = res.Length() + 50;
 
 1006      buf = 
new char [
len];
 
 1009      strncpy(buf, res.Data(), 
len);
 
 1021   if (!pathname || !strchr(pathname, 
'/'))
 
 1024   auto pathlen = strlen(pathname);
 
 1026   const char *
r = pathname + pathlen - 1;
 
 1028   while ((
r > pathname) && (*
r == 
'/'))
 
 1031   while ((
r > pathname) && (*
r != 
'/'))
 
 1036   while ((
r > pathname) && (*
r == 
'/'))
 
 1040   if ((
r == pathname) && (*
r != 
'/'))
 
 1043   return TString(pathname, 
r + 1 - pathname);
 
 1088   TTHREAD_TLS_ARRAY(
char, kBufSize, xname);
 
 1106   char xname[kBufSize];
 
 1121   int n, ier, iter, lx, ncopy;
 
 1122   char *inp, *out, *
x, *t, *buff;
 
 1123   const char *
b, *
c, *
e;
 
 1125   buff = 
new char[kBufSize * 4];
 
 1127   iter = 0; xname[0] = 0; inp = buff + kBufSize; out = inp + kBufSize;
 
 1128   inp[-1] = 
' '; inp[0] = 0; out[-1] = 
' ';
 
 1129   c = fname + strspn(fname, 
" \t\f\r");
 
 1132   strlcat(inp, 
c, kBufSize);
 
 1135   iter++; 
c = inp; ier = 0;
 
 1138   p = 
nullptr; 
e = 
nullptr;
 
 1139   if (
c[0] == 
'~' && 
c[1] == 
'/') { 
 
 1144         strlcpy(
x, 
p, kBufSize);
 
 1151   } 
else if (
c[0] == 
'~' && 
c[1] != 
'/') { 
 
 1152      n = strcspn(
c+1, 
"/ ");
 
 1153      assert((
n+1) < kBufSize && 
"This should have been prevented by the truncation 'strlcat(inp, c, kBufSize)'");
 
 1155      (void)strlcpy(buff, 
c+1, 
n+1); 
 
 1160         strlcpy(
x, 
p, kBufSize);
 
 1170   for ( ; 
c[0]; 
c++) {
 
 1172      p = 
nullptr; 
e = 
nullptr;
 
 1174      if (
c[0] == 
'.' && 
c[1] == 
'/' && 
c[-1] == 
' ') { 
 
 1176         strlcpy(buff, wd.c_str(), kBufSize);
 
 1181         strlcpy(
x, 
p, kBufSize); 
x += strlen(
p); 
c = 
e-1; 
continue;
 
 1188         if (
c[1] == 
'(') 
b++;
 
 1189         if (
c[1] == 
'{') 
b++;
 
 1193            for (
e = 
b; isalnum(
e[0]) || 
e[0] == 
'_'; 
e++) ;
 
 1194         buff[0] = 0; strncat(buff, 
b, 
e-
b);
 
 1197            for (t = buff; (t[0] = toupper(t[0])); t++) ;
 
 1201            for (t = buff; (t[0] = tolower(t[0])); t++) ;
 
 1204         if (!
p && !strcmp(buff, 
"cwd")) { 
 
 1206            strlcpy(buff, wd.c_str(), kBufSize);
 
 1209         if (!
p && !strcmp(buff, 
"$")) { 
 
 1218            if (
c[1] && 
c[1]!=
'\\' && 
c[1]!=
';' && 
c[1]!=
'/')
 
 1226            if (lp >= kBufSize) {
 
 1228               strlcpy(
x, 
p, kBufSize);
 
 1234            c = (
b==
c+1) ? 
e-1 : 
e;
 
 1239   x[0] = 0; lx = 
x - out;
 
 1240   if (ier && iter < 3) { strlcpy(inp, out, kBufSize); 
goto again; }
 
 1241   ncopy = (lx >= kBufSize) ? kBufSize-1 : lx;
 
 1242   xname[0] = 0; strncat(xname, out, ncopy);
 
 1246   if (ier || ncopy != lx) {
 
 1247      ::Error(
"TSystem::ExpandFileName", 
"input: %s, output: %s", fname, xname);
 
 1297   if (strlen(url.
GetHost()) > 0) {
 
 1302      if (!strcmp(
a.GetHostName(), 
b.GetHostName()) ||
 
 1303          !strcmp(
a.GetHostAddress(), 
b.GetHostAddress())) {
 
 1307         if (strlen(url.
GetUser()) > 0) {
 
 1390   int res = 
GetPathInfo(path, 
id, &lsize, flags, modtime);
 
 1392   if (res == 0 && 
size) {
 
 1394         Error(
"GetPathInfo", 
"file %s > 2 GB, use GetPathInfo() with Long64_t size", path);
 
 1714      Error(
"ShowOutput", 
"handle not specified");
 
 1720      Error(
"ShowOutput", 
"file '%s' cannot be read", 
h->fFile.Data());
 
 1726   if (!(
f = fopen(
h->fFile.Data(), 
"r"))) {
 
 1727      Error(
"ShowOutput", 
"file '%s' cannot be open", 
h->fFile.Data());
 
 1732   off_t ltot = lseek(fileno(
f), (off_t) 0, SEEK_END);
 
 1733   Int_t begin = (
h->fReadOffSet > 0 && 
h->fReadOffSet < ltot) ? 
h->fReadOffSet : 0;
 
 1734   lseek(fileno(
f), (off_t) begin, SEEK_SET);
 
 1735   Int_t left = ltot - begin;
 
 1738   const Int_t kMAXBUF = 16384;
 
 1740   Int_t wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
 
 1743      while ((
len = read(fileno(
f), buf, wanted)) < 0 &&
 
 1748         SysError(
"ShowOutput", 
"error reading log file");
 
 1754      fprintf(stderr,
"%s", buf);
 
 1758      wanted = (left > kMAXBUF) ? kMAXBUF : left;
 
 1760   } 
while (
len > 0 && left > 0);
 
 1763   h->fReadOffSet = ltot;
 
 1803   if (left == right) 
return kTRUE;
 
 1805   if (left==
nullptr || right==
nullptr) 
return kFALSE;
 
 1807   if ( (strcmp(right,left)==0) ) {
 
 1813   char leftname[_MAX_PATH];
 
 1814   char rightname[_MAX_PATH];
 
 1815   _fullpath( leftname, left, _MAX_PATH );
 
 1816   _fullpath( rightname, right, _MAX_PATH );
 
 1817   return ((stricmp(leftname, rightname)==0));
 
 1819   struct stat rightBuf;
 
 1820   struct stat leftBuf;
 
 1821   return (   ( 0 == stat( left, & leftBuf ) )
 
 1822       && ( 0 == stat( right, & rightBuf ) )
 
 1823       && ( leftBuf.st_dev == rightBuf.st_dev )     
 
 1824       && ( leftBuf.st_ino == rightBuf.st_ino )     
 
 1825       && ( leftBuf.st_size == rightBuf.st_size )   
 
 1826       && ( leftBuf.st_mtime == rightBuf.st_mtime ) 
 
 1855      if (idx == 0 || libs[idx-1] == 
'/' || libs[idx-1] == 
'\\') {
 
 1858         if (!
l.EndsWith(
".") && libs[idx]==
'.')
 
 1861         while (idx < 
len && isdigit(libs[idx])) {
 
 1864            if (libs[idx] == 
'.') {
 
 1868         while (idx < 
len && libs[idx] != 
'.') {
 
 1869            if (libs[idx] == 
' ' || idx+1 == 
len) {
 
 1876   if (
l[
l.Length()-1] == 
'.') {
 
 1877      l.Remove(
l.Length()-1);
 
 1879   if (
l.BeginsWith(
"lib")) {
 
 1880      l.Replace(0, 3, 
"-l");
 
 1882         if ((idx == 0 || libs[idx-1] == 
' ') &&
 
 1883             (libs[idx+
l.Length()] == 
' ' || libs[idx+
l.Length()] == 0)) {
 
 1900            if (strcmp(module,deplib)==0) {
 
 1904               Info(
"Load", 
"loading dependent library %s for library %s",
 
 1906            if ((ret = 
Load(deplib, 
"", system)) < 0) {
 
 1930      if (ret < 0) ret = -1;
 
 1932         Info(
"Load", 
"loaded library %s, status %d", path, ret);
 
 1935         Error(
"Load", 
"version mismatch, %s = %d, ROOT = %d",
 
 1936               path, 
v, 
gROOT->GetVersionInt());
 
 1944   if (!entry || !entry[0] || ret < 0) 
return ret;
 
 1960   if (!mapfile || !mapfile->
GetTable()) 
return 0;
 
 1962   std::set<std::string> loadedlibs;
 
 1963   std::set<std::string> failedlibs;
 
 1967   while ((rec = (
TEnvRec*) iEnvRec())) {
 
 1968      TString libs = rec->GetValue();
 
 1973         if (failedlibs.find(lib.
Data()) != failedlibs.end()) {
 
 1985         if (loadedlibs.find(lib.
Data()) == loadedlibs.end()) {
 
 1989               if (res == 0) ++nlibs;
 
 1990               loadedlibs.insert(lib.
Data());
 
 1992               failedlibs.insert(lib.
Data());
 
 2071   if (!(regexp && regexp[0]))
 
 2077   while (libs.
Tokenize(tok, from, 
" ")) {
 
 2078      if ((tok.
Index(pat, &ext) != 0) || (ext != tok.
Length()))
 
 2080      std::cout << tok << 
"\n";
 
 2089   TTHREAD_TLS_DECL( 
TString, gLastErrorString);
 
 2090   return gLastErrorString;
 
 2162      if (libs.
Length() == 0) {
 
 2168         static TString lastAddMissing;
 
 2169         if ( lastLinked != slinked ) {
 
 2171            static TRegexp separator(
"[^ \\t\\s]+");
 
 2172            lastLinked = slinked;
 
 2173            lastAddMissing.
Clear();
 
 2176            start = 
index = end = 0;
 
 2182                  if (sub[0]==
'-' && sub[1]==
'L') {
 
 2197   } 
else if (libs.
Length() != 0) {
 
 2200      static TRegexp separator(
"[^ \\t\\s]+");
 
 2202      start = 
index = end = 0;
 
 2208            if (sub[0]!=
'-' && sub[1]!=
'L') {
 
 2218   if (regexp && *regexp) {
 
 2219      static TRegexp separator(
"[^ \\t\\s]+");
 
 2223      start = 
index = end = 0;
 
 2228            s = libs(
index,end);
 
 2229            if ((isRegexp && s.
Index(user_re) != 
kNPOS) ||
 
 2241#if defined(R__MACOSX) 
 2247   static TRegexp separator(
"[^ \\t\\s]+");
 
 2248   static TRegexp dynload(
"/lib-dynload/");
 
 2251   start = 
index = end = 0;
 
 2487   delete [] tobedeleted;
 
 2492static TString R__Exec(
const char *cmd)
 
 2503   while ((
x = fgetc(
f))!=EOF ) {
 
 2504      if (
x==
'\n' || 
x==
'\r') 
break;
 
 2512static void R__FixLink(
TString &cmd)
 
 2518   TString res = R__Exec(
"link 2>&1");
 
 2520      if (res.
Contains(
"Microsoft (R) Incremental Linker"))
 
 2524   res = R__Exec(
"cygpath . 2>&1");
 
 2530   res = R__Exec(
"which cl.exe 2>&1|grep cl|sed 's,cl\\.exe$,link\\.exe,' 2>&1");
 
 2532      res = R__Exec(
Form(
"cygpath -w '%s' 2>&1",res.
Data()));
 
 2540#if defined(__CYGWIN__) 
 2542   if (path.
Length() > 2 && path[1]==
':') {
 
 2561   const char * stderrfile = 
"/dev/null";
 
 2566   TString bakdepfilename = depfilename + 
".bak";
 
 2569   TString touch = 
"echo # > "; touch += 
"\"" + depfilename + 
"\"";
 
 2571   TString touch = 
"echo > "; touch += 
"\"" + depfilename + 
"\"";
 
 2573   TString builddep = 
"rmkdepend";
 
 2575   builddep += 
" \"-f";
 
 2576   builddep += depfilename;
 
 2581         builddep += 
" \"-p";
 
 2582         if (build_loc[
len] == 
'/' || build_loc[
len+1] != 
'\\' ) {
 
 2592      builddep += 
" \"-p";
 
 2596   builddep += 
" -Y -- ";
 
 2598   builddep += 
" \"-I"+rootsysInclude+
"\" "; 
 
 2599   builddep += includes;
 
 2600   builddep += defines;
 
 2601   builddep += 
" -- \"";
 
 2608         if (library[
len] == 
'/' || library[
len+1] != 
'\\' ) {
 
 2609            targetname = library.
Data() + 
len + 1;
 
 2611            targetname = library.
Data() + 
len + 2;
 
 2614         targetname = library;
 
 2617      targetname = library;
 
 2622   builddep += 
"\" > ";
 
 2623   builddep += stderrfile;
 
 2624   builddep += 
" 2>&1 ";
 
 2629#if defined(R__HAS_CLING_DICTVERSION) 
 2631      char *clingdictversion = 
gSystem->
Which(incPath,
"clingdictversion.h");
 
 2632      if (clingdictversion) {
 
 2635         delete [] clingdictversion;
 
 2637         R__AddPath(adddictdep,rootsysInclude+
"/clingdictversion.h ");
 
 2642     const char *dictHeaders[] = { 
"RVersion.h", 
"ROOT/RConfig.hxx", 
"TClass.h",
 
 2643       "TDictAttributeMap.h",
"TInterpreter.h",
"TROOT.h",
"TBuffer.h",
 
 2644       "TMemberInspector.h",
"TError.h",
"RtypesImp.h",
"TIsAProxy.h",
 
 2645       "TFileMergeInfo.h",
"TCollectionProxyInfo.h"};
 
 2647      for (
unsigned int h=0; 
h < 
sizeof(dictHeaders)/
sizeof(dictHeaders[0]); ++
h)
 
 2652            delete [] rootVersion;
 
 2654            R__AddPath(adddictdep,rootsysInclude + 
"/" + dictHeaders[
h]);
 
 2665         delete [] rootCling;
 
 2668   adddictdep += 
" >> \""+depfilename+
"\"";
 
 2670   TString addversiondep( 
"echo ");
 
 2671   addversiondep += libname + version_var_prefix + 
" \"" + 
ROOT_RELEASE + 
"\" >> \""+depfilename+
"\"";
 
 2680   if (depbuilt) depbuilt = !
gSystem->
Exec(builddep);
 
 2681   if (depbuilt) depbuilt = !
gSystem->
Exec(adddictdep);
 
 2682   if (depbuilt) depbuilt = !
gSystem->
Exec(addversiondep);
 
 2685      ::Warning(
"ACLiC",
"Failed to generate the dependency file for %s",
 
 2816                          const char *library_specified,
 
 2817                          const char *build_dir,
 
 2820   static const char *version_var_prefix = 
"__ROOTBUILDVERSION=";
 
 2831      keep = (strchr(opt,
'k')!=
nullptr);
 
 2832      recompile = (strchr(opt,
'f')!=
nullptr);
 
 2833      if (strchr(opt,
'O')!=
nullptr) {
 
 2836      if (strchr(opt,
'g')!=
nullptr) {
 
 2839      if (strchr(opt,
'c')!=
nullptr) {
 
 2842      withInfo = strchr(opt, 
's') == 
nullptr;
 
 2843      verbose = strchr(opt, 
'v') != 
nullptr;
 
 2844      internalDebug = strchr(opt, 
'd') != 
nullptr;
 
 2847      TString rootbuild = ROOTBUILD;
 
 2859   if (build_dir && strlen(build_dir)) build_loc = build_dir;
 
 2860   if (build_loc == 
".") {
 
 2873      incPath.
Append(fromConfig);
 
 2876   auto posISysRoot = incPath.
Index(
" -isysroot \"");
 
 2877   if (posISysRoot != 
kNPOS) {
 
 2878      auto posISysRootEnd = incPath.
Index(
'"', posISysRoot + 12);
 
 2879      if (posISysRootEnd != 
kNPOS) {
 
 2882         incPath.
Insert(posISysRootEnd - 1, 
"/usr/include/");
 
 2883         incPath.
Replace(posISysRoot, 12, 
":\"");
 
 2886   while ( incPath.
Index(
" :") != -1 ) {
 
 2896   TString library = expFileName;
 
 2899      const char *whichlibrary = 
Which(incPath,library);
 
 2901         library = whichlibrary;
 
 2902         delete [] whichlibrary;
 
 2904         ::Error(
"ACLiC",
"The file %s can not be found in the include path: %s",
filename,incPath.
Data());
 
 2920   TString filename_fullpath = library;
 
 2927   if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
 
 2928      file_dirname.
Prepend(library(0,2));
 
 2930   TString file_location( file_dirname  ); 
 
 2931   incPath.
Prepend( file_location + 
":" );
 
 2936      libname_noext.
Remove(dot_pos);
 
 2943      library.
Replace( dot_pos, library.
Length()-dot_pos, suffix);
 
 2950   if (library_specified && strlen(library_specified) ) {
 
 2952      libname = 
BaseName( library_specified );
 
 2953      library = library_specified;
 
 2962   TString libname_ext ( libname );
 
 2963   libname_ext +=  
"." + 
fSoExt;
 
 2970   if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
 
 2971      lib_dirname.
Prepend(library(0,2));
 
 2974   if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]), 
"/.", 2) == 0 ) {
 
 2977   if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]), 
"\\.", 2) == 0 ) {
 
 2980   TString lib_location( lib_dirname );
 
 2983   if (build_loc.
Length()==0) {
 
 2984      build_loc = lib_location;
 
 2987      TRegexp disk_finder (
"[A-z]:");
 
 2989      if (pos==0) library.
Remove(pos,3);
 
 2990      pos = lib_location.
Index( disk_finder );
 
 2991      if (pos==0) lib_location.
Remove(pos,3);
 
 3000      TString build_loc_store( build_loc );
 
 3001      if (!flatBuildDir) {
 
 3006         mkdirFailed = (0 != 
mkdir(build_loc, 
true));
 
 3007         if (mkdirFailed && !canWriteBuild_loc) {
 
 3010            build_loc = build_loc_store;
 
 3012         } 
else if (!mkdirFailed && dirmode!=0) {
 
 3013            Chmod(build_loc,dirmode);
 
 3025         ::Info(
"ACLiC",
"script has already been loaded in interpreted mode");
 
 3041      TRegexp rel_inc(
" -I[^\"/\\$%-][^:-]+");
 
 3043      pos = rel_inc.
Index(includes,&
len);
 
 3052         pos = rel_inc.
Index(includes,&
len);
 
 3057      TRegexp rel_inc(
" -I\"[^/\\$%-][^:-]+");
 
 3059      pos = rel_inc.
Index(includes,&
len);
 
 3066         pos = rel_inc.
Index(includes,&
len);
 
 3087      TRegexp rel_def(
"-D[^\\s\\t\\n\\r]*");
 
 3091         defines += cmd(pos,
len);
 
 3093         pos = rel_def.
Index(cmd,&
len,pos+1);
 
 3121      Long_t lib_time, file_time;
 
 3125          (lib_time < file_time))) {
 
 3135               depdir = emergency_loc;
 
 3146         FILE * depfile = fopen(depfilename.
Data(),
"r");
 
 3147         if (depfile==
nullptr) {
 
 3155            TString version_var = libname + version_var_prefix;
 
 3158            char *
line = 
new char[sz];
 
 3164            Bool_t hasversion = 
false;
 
 3166            while ((
c = fgetc(depfile)) != EOF) {
 
 3169                  while ((
c = fgetc(depfile)) != EOF) {
 
 3176               if (current && 
line[current-1]==
'=' && strncmp(version_var.
Data(),
line,current)==0) {
 
 3182               } 
else if (isspace(
c) && !nested) {
 
 3184                     if (
line[current-1]!=
':') {
 
 3193                           modified |= ( lib_time <= filetime );
 
 3200                  if (current==sz-1) {
 
 3202                     char *newline = 
new char[sz];
 
 3203                     memcpy(newline,
line, current);
 
 3207                  if (
c==
'"') nested = !nested;
 
 3216            recompile = modified;
 
 3233              && (lib_time>load_time)) {
 
 3238      if ( !recompile && reload ) {
 
 3241            ::Info(
"ACLiC",
"%s has been modified and will be reloaded",
 
 3264         ::Info(
"ACLiC",
"%s script has already been compiled and loaded",
 
 3265                modified ? 
"modified" : 
"unmodified");
 
 3272            ::Info(
"ACLiC",
"it will be regenerated and reloaded!");
 
 3290   libmapfilename += 
".rootmap";
 
 3291#if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)) || defined(R__WIN32) 
 3296   Bool_t linkDepLibraries = !produceRootmap;
 
 3298#if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)) 
 3300#elif defined(R__WIN32) 
 3305      produceRootmap = linkLibs & 0x2;
 
 3306      linkDepLibraries = linkLibs & 0x1;
 
 3310    bool useCxxModules =
 
 3311#ifdef R__USE_CXXMODULES 
 3318   auto ForeachSharedLibDep = [](
const char *lib, std::function<
bool(
const char *)> 
f) {
 
 3319      using namespace std;
 
 3320      string deps = 
gInterpreter->GetSharedLibDeps(lib,  
true);
 
 3321      istringstream iss(deps);
 
 3322      vector<string> libs{istream_iterator<std::string>{iss}, istream_iterator<string>{}};
 
 3324      for (
auto I = libs.begin() + 1, E = libs.end(); 
I != E; ++
I)
 
 3328   auto LoadLibrary = [useCxxModules, produceRootmap, ForeachSharedLibDep](
const TString &lib) {
 
 3337      if (useCxxModules && !produceRootmap) {
 
 3338         std::function<
bool(
const char *)> LoadLibF = [](
const char *dep) {
 
 3341         ForeachSharedLibDep(lib, LoadLibF);
 
 3358         return LoadLibrary(library);
 
 3363   if (!canWrite && recompile) {
 
 3366         ::Warning(
"ACLiC",
"Could not create the directory: %s",
 
 3369         ::Warning(
"ACLiC",
"%s is not writable!",
 
 3372      if (emergency_loc == build_dir ) {
 
 3373         ::Error(
"ACLiC",
"%s is the last resort location (i.e. temp location)",build_loc.
Data());
 
 3376      ::Warning(
"ACLiC",
"Output will be written to %s",
 
 3377                emergency_loc.
Data());
 
 3378      return CompileMacro(expFileName, opt, library_specified, emergency_loc, dirmode);
 
 3382      Info(
"ACLiC",
"creating shared library %s",library.
Data());
 
 3388   TString dict = libname + 
"_ACLiC_dict";
 
 3392   static const int maxforbidden = 27;
 
 3393   static const char *forbidden_chars[maxforbidden] =
 
 3394      { 
"+",
"-",
"*",
"/",
"&",
"%",
"|",
"^",
">",
"<",
 
 3395        "=",
"~",
".",
"(",
")",
"[",
"]",
"!",
",",
"$",
 
 3396        " ",
":",
"'",
"#",
"@",
"\\",
"\"" };
 
 3397   for( 
int ic = 0; ic < maxforbidden; ic++ ) {
 
 3412   linkdef += 
"_ACLiC_linkdef.h";
 
 3413   std::ofstream linkdefFile( linkdef, std::ios::out );
 
 3414   linkdefFile << 
"// File Automatically generated by the ROOT Script Compiler " 
 3416   linkdefFile << std::endl;
 
 3417   linkdefFile << 
"#ifdef __CINT__" << std::endl;
 
 3418   linkdefFile << std::endl;
 
 3419   linkdefFile << 
"#pragma link C++ nestedclasses;" << std::endl;
 
 3420   linkdefFile << 
"#pragma link C++ nestedtypedefs;" << std::endl;
 
 3421   linkdefFile << std::endl;
 
 3425   const char * extensions[] = { 
".h", 
".hh", 
".hpp", 
".hxx",  
".hPP", 
".hXX" };
 
 3428   for (i = 0; i < 6; i++ ) {
 
 3432      extra_linkdef.
Append(extensions[i]);
 
 3435         if (verboseLevel>4 && withInfo) {
 
 3436            Info(
"ACLiC",
"including extra linkdef file: %s",
name);
 
 3438         linkdefFile << 
"#include \"" << 
name << 
"\"" << std::endl;
 
 3443   if (verboseLevel>5 && withInfo) {
 
 3444      Info(
"ACLiC",
"looking for header in: %s",incPath.
Data());
 
 3446   for (i = 0; i < 6; i++ ) {
 
 3449      lookup.
Append(extensions[i]);
 
 3456   linkdefFile << 
"#pragma link C++ defined_in \""<<filename_fullpath << 
"\";" << std::endl;
 
 3457   linkdefFile << std::endl;
 
 3458   linkdefFile << 
"#endif" << std::endl;
 
 3459   linkdefFile.close();
 
 3464   mapfile += 
"_ACLiC_map";
 
 3465   TString mapfilein = mapfile + 
".in";
 
 3466   TString mapfileout = mapfile + 
".out";
 
 3469   if (!useCxxModules) {
 
 3470      if (
gInterpreter->GetSharedLibDeps(library) != 
nullptr) {
 
 3472         needLoadMap = 
kTRUE;
 
 3476   std::ofstream mapfileStream( mapfilein, std::ios::out );
 
 3479      TString sname = 
"system.rootmap";
 
 3492      mapfileStream << 
file << std::endl;
 
 3494      mapfileStream << 
file << std::endl;
 
 3495      mapfileStream << 
name << std::endl;
 
 3497         for (i = 0; i < 
gInterpreter->GetRootMapFiles()->GetEntriesFast(); i++) {
 
 3502   mapfileStream.close();
 
 3507   rcling += 
" -v0 \"--lib-list-prefix=";
 
 3509   rcling += 
"\" -f \"";
 
 3512   if (produceRootmap && !useCxxModules) {
 
 3513      rcling += 
" -rml " + libname + 
" -rmf \"" + libmapfilename + 
"\" ";
 
 3514      rcling.
Append(
"-DR__ACLIC_ROOTMAP ");
 
 3519      rcling.
Append(fromConfig);
 
 3521      if (!extraFlags.
IsNull()) {
 
 3524        rcling.
Append(extraFlags);
 
 3530   if (useCxxModules && produceRootmap) {
 
 3531      rcling += 
" -cxxmodule ";
 
 3533      TString moduleName = libname + 
"_ACLiC_dict";
 
 3535          moduleName = moduleName.
Remove(0, 3);
 
 3536      TString moduleMapName = moduleName + 
".modulemap";
 
 3537      TString moduleMapFullPath = build_loc + 
"/" + moduleMapName;
 
 3540         ::Info(
"ACLiC", 
"File %s already exists!", moduleMapFullPath.
Data());
 
 3544      std::ofstream moduleMapFile(moduleMapFullPath, std::ios::out);
 
 3545      moduleMapFile << 
"module \"" << moduleName << 
"\" {" << std::endl;
 
 3546      moduleMapFile << 
"  header \"" << relative_path << 
"\"" << std::endl;
 
 3547      moduleMapFile << 
"  export *" << std::endl;
 
 3548      moduleMapFile << 
"  link \"" << libname_ext << 
"\"" << std::endl;
 
 3549      moduleMapFile << 
"}" << std::endl;
 
 3550      moduleMapFile.close();
 
 3552      rcling.
Append(
" \"-moduleMapFile=" + moduleMapFullPath + 
"\" ");
 
 3560      if (verboseLevel>3) {
 
 3561         ::Info(
"ACLiC",
"creating the dictionary files");
 
 3562         if (verboseLevel>4)  
::Info(
"ACLiC", 
"%s", rcling.
Data());
 
 3567   auto ExecAndReport = [](
TString cmd) -> 
bool {
 
 3571            ::Error(
"ACLiC", 
"Executing '%s' failed with a core dump!", cmd.
Data());
 
 3573            ::Error(
"ACLiC", 
"Executing '%s' failed!", cmd.
Data());
 
 3586      std::ifstream liblist(mapfileout);
 
 3588      while ( liblist >> libtoload ) {
 
 3590         if (libtoload == 
"#") {
 
 3592            std::string toskipcomment;
 
 3593            std::getline(liblist,toskipcomment);
 
 3596         if (libtoload != library && libtoload != libname && libtoload != libname_ext) {
 
 3597            if (produceRootmap) {
 
 3598               if (loadLib || linkDepLibraries ) {
 
 3605               if (!linkedlibs.
Contains(libtoload)) {
 
 3607                  depLibraries.
Append(
" ");
 
 3609                  depLibraries = depLibraries.
Strip(); 
 
 3612               gROOT->LoadClass(
"", libtoload);
 
 3615         unsigned char c = liblist.peek();
 
 3616         if (
c==
'\n' || 
c==
'\r') {
 
 3642   std::unique_ptr<TObjArray> tokens( linkLibrariesNoQuotes.
Tokenize(
" ") );
 
 3643   for (
auto tokenObj : *tokens) {
 
 3644      singleLibrary = ((
TObjString*)tokenObj)->GetString();
 
 3646         if (collectingSingleLibraryNameTokens) {
 
 3647            librariesWithQuotes.
Chop();
 
 3648            librariesWithQuotes += 
"\" \"" + singleLibrary + 
"\"";
 
 3649            collectingSingleLibraryNameTokens = 
kFALSE;
 
 3651            librariesWithQuotes += 
" \"" + singleLibrary + 
"\"";
 
 3654         if (collectingSingleLibraryNameTokens) {
 
 3655            librariesWithQuotes += singleLibrary + 
" ";
 
 3657            collectingSingleLibraryNameTokens = 
kTRUE;
 
 3658            librariesWithQuotes += 
" \"" + singleLibrary + 
" ";
 
 3664   linkLibraries.
Prepend(linkLibrariesNoQuotes);
 
 3666   linkLibraries.
Prepend(librariesWithQuotes);
 
 3673   cmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
 
 3675   cmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
 
 3678   cmd.
ReplaceAll(
"$SharedLib",
"\"$SharedLib\"");
 
 3680   if (linkDepLibraries) {
 
 3681      if (produceRootmap) {
 
 3706   fakeMain += 
"_ACLiC_main";
 
 3708   std::ofstream fakeMainFile( fakeMain, std::ios::out );
 
 3709   fakeMainFile << 
"// File Automatically generated by the ROOT Script Compiler " 
 3711   fakeMainFile << 
"int main(char*argc,char**argvv) {};" << std::endl;
 
 3712   fakeMainFile.close();
 
 3723   exec += 
"_ACLiC_exec";
 
 3724   testcmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
 
 3726   testcmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
 
 3730   testcmd.
ReplaceAll(
"$LinkedLibs",linkLibraries);
 
 3738   R__FixLink(testcmd);
 
 3744      TString cmdAllowUnresolved = cmd;
 
 3747      cmdAllowUnresolved.
ReplaceAll(
"-dynamiclib", 
"-dynamiclib -Wl,-w -Wl,-undefined,dynamic_lookup");
 
 3749      if (verboseLevel > 3 && withInfo) {
 
 3750         ::Info(
"ACLiC",
"compiling the dictionary and script files");
 
 3752            ::Info(
"ACLiC", 
"%s", cmdAllowUnresolved.
Data());
 
 3754      Int_t success = ExecAndReport(cmdAllowUnresolved);
 
 3756         if (produceRootmap) {
 
 3764      if (linkDepLibraries) {
 
 3770         std::function<
bool(
const char *)> CollectF = [&depLibsFullPaths](
const char *dep) {
 
 3773               ::Error(
"TSystem::CompileMacro", 
"Cannot find library '%s'", dep);
 
 3776            depLibsFullPaths += 
" " + LibFullPath;
 
 3779         ForeachSharedLibDep(library, CollectF);
 
 3782         relink_cmd += depLibsFullPaths;
 
 3783         if (verboseLevel > 3 && withInfo) {
 
 3784            ::Info(
"ACLiC", 
"relinking against all dependencies");
 
 3785            if (verboseLevel > 4)
 
 3788         result = ExecAndReport(relink_cmd);
 
 3801      if (verboseLevel>3 && withInfo)  
::Info(
"ACLiC",
"loading the shared library");
 
 3803         result = LoadLibrary(library);
 
 3808         if (verboseLevel>3 && withInfo) {
 
 3809            ::Info(
"ACLiC",
"testing for missing symbols:");
 
 3810            if (verboseLevel>4)  
::Info(
"ACLiC", 
"%s", testcmd.
Data());
 
 3818   if (verboseLevel<=5 && !internalDebug) {
 
 3828   if (verboseLevel>6) {
 
 3895      if (!
gEnv) 
return "";
 
 3981      if (!
gEnv) 
return "_linkdef";
 
 4240   filenameCopy = filenameCopy.
Strip();
 
 4244     filenameCopy = filenameCopy.
Strip();
 
 4249      int parenNestCount = 1;
 
 4250      bool inString = 
false;
 
 4251      Ssiz_t posArgBegin = posArgEnd - 1;
 
 4252      for (; parenNestCount && posArgBegin >= 0; --posArgBegin) {
 
 4255         if (posArgBegin > 0 && filenameCopy[posArgBegin] == 
'\\' &&
 
 4256             (posArgBegin == 1 || filenameCopy[posArgBegin - 1] != 
'\\')) {
 
 4261         switch (filenameCopy[posArgBegin]) {
 
 4270         case '"': inString = !inString; 
break;
 
 4273      if (parenNestCount || inString) {
 
 4274         Error(
"SplitAclicMode", 
"Cannot parse argument in %s", 
filename);
 
 4276         arguments = filenameCopy(posArgBegin + 1, posArgEnd - 1);
 
 4277         fname[posArgBegin + 1] = 0;
 
 4285      s2 = strstr(fname, 
">>");
 
 4286      if (!s2) s2 = strstr(fname, 
"2>");
 
 4287      if (!s2) s2 = strchr(fname, 
'>');
 
 4288      s3 = strchr(fname, 
'<');
 
 4289      if (s2 && s3) s2 = s2<s3 ? s2 : s3;
 
 4290      if (s3 && !s2) s2 = s3;
 
 4299         while (s2 && *s2 == 
' ') s2--;
 
 4309   int len = strlen(fname);
 
 4312      if (strchr(
"kfgOcsdv-", fname[
len - 1])) {
 
 4320   Bool_t remove  = compile && 
len > 1 && fname[
len - 2] == 
'+';
 
 4322      if (
mode.Length()) {
 
 4326         fname[strlen(fname)-2] = 0;
 
 4329         fname[strlen(fname)-1] = 0;
 
 4349   while ((lib = (
TNamed*)next())) {
 
The file contains utilities which are foundational and could be used across the core component of ROO...
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
R__EXTERN TApplication * gApplication
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char mode
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
char * Strip(const char *str, char c=' ')
Strip leading and trailing c (blanks by default) from a string.
 
char * StrDup(const char *str)
Duplicate the string str.
 
static Int_t gLibraryVersionIdx
 
TVirtualMutex * gSystemMutex
 
void AssignAndDelete(TString &target, char *tobedeleted)
 
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)
 
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.
 
static void R__AddPath(TString &target, const TString &path)
 
static Int_t * gLibraryVersion
 
static Int_t gLibraryVersionMax
 
R__EXTERN const char * gProgName
 
R__EXTERN TVirtualMutex * gSystemMutex
 
Bool_t R_ISREG(Int_t mode)
 
Bool_t R_ISDIR(Int_t mode)
 
R__EXTERN TSystem * gSystem
 
#define R__LOCKGUARD2(mutex)
 
#define R__WRITE_LOCKGUARD(mutex)
 
#define R__READ_LOCKGUARD(mutex)
 
virtual void StopIdleing()
Called when system stops idleing.
 
virtual void StartIdleing()
Called when system starts idleing.
 
virtual TObject * Remove(TObject *obj)=0
 
virtual bool UseRWLock(Bool_t enable=true)
Set this collection to use a RW lock upon access, making it thread safe.
 
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
 
void Delete(Option_t *option="") override=0
Delete this object.
 
The TEnv class reads config files, by default named .rootrc.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
THashList * GetTable() const
 
This class represents an Internet Protocol (IP) address.
 
TObject * Next() override
Return next object in the list. Returns 0 when no more objects in list.
 
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
Int_t GetEntriesFast() const
 
TObject * At(Int_t idx) const override
 
Collectable string class.
 
Mother of all ROOT objects.
 
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual UInt_t GetUniqueID() const
Return the unique object id.
 
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
 
@ kInvalidObject
if object ctor succeeded but object should not be used
 
@ kMustCleanup
if object destructor must call RecursiveRemove()
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
TProcessEventTimer(Long_t delay)
Create async event processor timer. Delay is in milliseconds.
 
Bool_t ProcessEvents()
Process events if timer did time out.
 
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
 
static const TString & GetIncludeDir()
Get the include directory in the installation. Static utility function.
 
static Int_t ConvertVersionCode2Int(Int_t code)
Convert version code to an integer, i.e. 331527 -> 51507.
 
static const TString & GetRootSys()
Get the rootsys directory in the installation. Static utility function.
 
static Int_t RootVersionCode()
Return ROOT version code as defined in RVersion.h.
 
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
 
static const TString & GetLibDir()
Get the library directory in the installation. Static utility function.
 
Regular expression class.
 
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...
 
void Add(TObject *obj) override
 
virtual EStatus Handle(std::exception &exc)=0
 
static Int_t * ReAllocInt(Int_t *vp, size_t size, size_t oldsize)
Reallocate (i.e.
 
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
 
TString & Insert(Ssiz_t pos, const char *s)
 
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
void Clear()
Clear string without changing its capacity.
 
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
 
Ssiz_t First(char c) const
Find first occurrence of a character c.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
Ssiz_t Last(char c) const
Find last occurrence of a character c.
 
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
TString & Prepend(const char *cs)
 
TString & Remove(Ssiz_t pos)
 
TString & Append(const char *cs)
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
Abstract base class defining a generic interface to the underlying Operating System.
 
virtual void NotifyApplicationCreated()
Hook to tell TSystem that the TApplication object has been created.
 
virtual const char * GetBuildNode() const
Return the build node name.
 
virtual int Umask(Int_t mask)
Set the process file creation mode mask.
 
virtual int SendBuf(int sock, const void *buffer, int length)
Send a buffer headed by a length indicator.
 
virtual int GetServiceByName(const char *service)
Get port # of internet service.
 
virtual Bool_t IsFileInIncludePath(const char *name, char **fullpath=nullptr)
Return true if 'name' is a file that can be found in the ROOT include path or the current directory.
 
virtual void Unload(const char *module)
Unload a shared library.
 
virtual const char * GetMakeSharedLib() const
Return the command line use to make a shared library.
 
virtual int AnnounceUdpService(int port, int backlog)
Announce UDP service.
 
TSeqCollection * fFileHandler
 
virtual void AddFileHandler(TFileHandler *fh)
Add a file handler to the list of system file handlers.
 
TString & GetLastErrorString()
Return the thread local storage for the custom last error message.
 
virtual void AddLinkedLibs(const char *linkedLib)
Add linkedLib to already set linked libs.
 
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=nullptr)
Redirect standard output (stdout, stderr) to the specified file.
 
virtual const char * GetBuildCompilerVersion() const
Return the build compiler version.
 
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 TInetAddress GetSockName(int sock)
Get Internet Protocol (IP) address of host and port #.
 
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 Func_t DynFindSymbol(const char *module, const char *entry)
Find specific entry point in specified library.
 
virtual const char * GetLinkedLibs() const
Return the list of library linked to this executable.
 
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 IgnoreInterrupt(Bool_t ignore=kTRUE)
If ignore is true ignore the interrupt signal, else restore previous behaviour.
 
virtual void Syslog(ELogLevel level, const char *mess)
Send mess to syslog daemon.
 
virtual int Symlink(const char *from, const char *to)
Create a symbolic link from file1 to file2.
 
virtual void SetAclicMode(EAclicMode mode)
AclicMode indicates whether the library should be built in debug mode or optimized.
 
static void ResetErrno()
Static function resetting system error number.
 
virtual UInt_t LoadAllLibraries()
Load all libraries known to ROOT via the rootmap system.
 
virtual void * GetDirPtr() const
 
virtual void SetObjExt(const char *objExt)
Set object files extension, should be either .o, .obj, etc.
 
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...
 
TSeqCollection * fHelpers
 
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
 
virtual const char * GetBuildDir() const
Return the path of the build directory.
 
virtual void Openlog(const char *name, Int_t options, ELogFacility facility)
Open connection to system log daemon.
 
static Int_t GetErrno()
Static function returning system error number.
 
virtual void AddIncludePath(const char *includePath)
Add a directory to the already set include path.
 
virtual int Chmod(const char *file, UInt_t mode)
Set the file permission bits. Returns -1 in case or error, 0 otherwise.
 
virtual Int_t GetEffectiveGid()
Returns the effective group id.
 
virtual ~TSystem()
Delete the OS interface.
 
virtual void SetDisplay()
Set DISPLAY environment variable based on utmp entry. Only for UNIX.
 
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
 
virtual void FreeDirectory(void *dirp)
Free a directory.
 
virtual void SetFlagsOpt(const char *)
FlagsOpt should contain the options to pass to the C++ compiler in order to compile the library in op...
 
void RemoveOnExit(TObject *obj)
Objects that should be deleted on exit of the OS interface.
 
TSeqCollection * fStdExceptionHandler
 
virtual char * GetServiceByPort(int port)
Get name of internet service.
 
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
 
virtual int GetPid()
Get process id.
 
virtual int RecvBuf(int sock, void *buffer, int length)
Receive a buffer headed by a length indicator.
 
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
Copy a file.
 
virtual Long_t NextTimeOut(Bool_t mode)
Time when next timer of mode (synchronous=kTRUE or asynchronous=kFALSE) will time-out (in ms).
 
virtual int SetSockOpt(int sock, int kind, int val)
Set socket option.
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
virtual TStdExceptionHandler * RemoveStdExceptionHandler(TStdExceptionHandler *eh)
Remove an exception handler from list of exception handlers.
 
virtual const char * GetIncludePath()
Get the list of include path.
 
virtual int AcceptConnection(int sock)
Accept a connection.
 
virtual Int_t GetAclicProperties() const
Return the ACLiC properties field.
 
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form:
 
virtual void ShowOutput(RedirectHandle_t *h)
Display the content associated with the redirection described by the opaque handle 'h'.
 
virtual char * ConcatFileName(const char *dir, const char *name)
Concatenate a directory and a file name. User must delete returned string.
 
virtual UserGroup_t * GetGroupInfo(Int_t gid)
Returns all group info in the UserGroup_t structure.
 
virtual void CleanCompiledMacros()
Remove the shared libs produced by the CompileMacro() function.
 
virtual Bool_t IsPathLocal(const char *path)
Returns TRUE if the url in 'path' points to the local file system.
 
virtual const char * FindFile(const char *search, TString &file, EAccessMode mode=kFileExists)
Find location of file in a search path.
 
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory.
 
virtual int MakeDirectory(const char *name)
Make a directory.
 
TString fBuildCompilerVersionStr
 
virtual const char * ExpandFileName(const char *fname)
Expand a pathname getting rid of special shell characters like ~.
 
TSystem(const TSystem &)=delete
 
virtual TInetAddress GetPeerName(int sock)
Get Internet Protocol (IP) address of remote host and port #.
 
virtual TTime Now()
Get current time in milliseconds since 0:00 Jan 1 1995.
 
virtual Int_t Exec(const char *shellcmd)
Execute a command.
 
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 int GetMemInfo(MemInfo_t *info) const
Returns ram and swap memory usage info into the MemInfo_t structure.
 
virtual EAclicMode GetAclicMode() const
AclicMode indicates whether the library should be built in debug mode or optimized.
 
virtual const char * GetLinkedLibraries()
Get list of shared libraries loaded at the start of the executable.
 
virtual void SetIncludePath(const char *includePath)
IncludePath should contain the list of compiler flags to indicate where to find user defined header f...
 
virtual TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers.
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
 
virtual void ListSymbols(const char *module, const char *re="")
List symbols in a shared library.
 
virtual void DoBeep(Int_t=-1, Int_t=-1) const
 
virtual int GetCpuInfo(CpuInfo_t *info, Int_t sampleTime=1000) const
Returns cpu load average and load info into the CpuInfo_t structure.
 
virtual void ListLibraries(const char *regexp="")
List the loaded shared libraries.
 
virtual FILE * OpenPipe(const char *command, const char *mode)
Open a pipe.
 
virtual void SetMakeSharedLib(const char *directives)
Directives should contain the description on how to compile and link a shared lib.
 
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.
 
virtual void InnerLoop()
Inner event loop.
 
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
virtual int OpenConnection(const char *server, int port, int tcpwindowsize=-1, const char *protocol="tcp")
Open a connection to another host.
 
virtual FILE * TempFileName(TString &base, const char *dir=nullptr)
Create a secure temporary file by appending a unique 6 letter string to base.
 
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
 
virtual void IgnoreSignal(ESignals sig, Bool_t ignore=kTRUE)
If ignore is true ignore the specified signal, else restore previous behaviour.
 
virtual void Run()
System event loop.
 
virtual int GetSockOpt(int sock, int kind, int *val)
Get socket option.
 
virtual void ExitLoop()
Exit from event loop.
 
virtual Bool_t ChangeDirectory(const char *path)
Change directory.
 
virtual std::string GetHomeDirectory(const char *userName=nullptr) const
Return the user's home directory.
 
virtual int AnnounceTcpService(int port, Bool_t reuse, int backlog, int tcpwindowsize=-1)
Announce TCP/IP service.
 
virtual const char * UnixPathName(const char *unixpathname)
Convert from a local pathname to a Unix pathname.
 
virtual int RecvRaw(int sock, void *buffer, int length, int flag)
Receive exactly length bytes into buffer.
 
virtual Bool_t Init()
Initialize the OS interface.
 
virtual void AddTimer(TTimer *t)
Add timer to list of system timers.
 
virtual int GetProcInfo(ProcInfo_t *info) const
Returns cpu and memory used by this process into the ProcInfo_t structure.
 
virtual const char * GetBuildCompilerVersionStr() const
Return the build compiler version identifier string.
 
virtual void DispatchOneEvent(Bool_t pendingOnly=kFALSE)
Dispatch a single event.
 
virtual int Rename(const char *from, const char *to)
Rename a file.
 
virtual int ClosePipe(FILE *pipe)
Close the pipe.
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
 
virtual void AddSignalHandler(TSignalHandler *sh)
Add a signal handler to list of system signal handlers.
 
virtual const char * GetDynamicPath()
Return the dynamic path (used to find shared libraries).
 
TSeqCollection * fSignalHandler
 
virtual const char * GetMakeExe() const
Return the command line use to make an executable.
 
virtual const char * FindDynamicLibrary(TString &lib, Bool_t quiet=kFALSE)
Find a dynamic library using the system search paths.
 
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 Exit(int code, Bool_t mode=kTRUE)
Exit the application.
 
virtual Int_t GetGid(const char *group=nullptr)
Returns the group's id. If group = 0, returns current user's group.
 
virtual void SetMakeExe(const char *directives)
Directives has the same syntax as the argument of SetMakeSharedLib but is used to create an executabl...
 
TSeqCollection * fCompiled
 
virtual TString GetFromPipe(const char *command)
Execute command and return output in TString.
 
TString fBuildCompilerVersion
 
TSystem * FindHelper(const char *path, void *dirptr=nullptr)
Create helper TSystem to handle file and directory operations that might be special for remote file a...
 
virtual const char * GetFlagsDebug() const
Return the debug flags.
 
virtual const char * HostName()
Return the system's host name.
 
Int_t fNfd
Signals that were trapped.
 
virtual void Unsetenv(const char *name)
Unset environment variable.
 
virtual Bool_t IsAbsoluteFileName(const char *dir)
Return true if dir is an absolute pathname.
 
virtual void AddDynamicPath(const char *pathname)
Add a new directory to the dynamic path.
 
virtual Int_t Select(TList *active, Long_t timeout)
Select on active file descriptors (called by TMonitor).
 
TSeqCollection * fOnExitList
 
virtual const char * GetObjExt() const
Get the object file extension.
 
virtual int AnnounceUnixService(int port, int backlog)
Announce unix domain service.
 
virtual Int_t GetUid(const char *user=nullptr)
Returns the user's id. If user = 0, returns current user's id.
 
virtual Int_t GetEffectiveUid()
Returns the effective user id.
 
virtual const char * GetLinkdefSuffix() const
Return the linkdef suffix chosen by the user for ACLiC.
 
virtual void SetDynamicPath(const char *pathname)
Set the dynamic path to a new value.
 
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
 
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 * WorkingDirectory()
Return working directory.
 
virtual void AddStdExceptionHandler(TStdExceptionHandler *eh)
Add an exception handler to list of system exception handlers.
 
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
 
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host.
 
virtual void SetProgname(const char *name)
Set the application name (from command line, argv[0]) and copy it in gProgName.
 
virtual int SendRaw(int sock, const void *buffer, int length, int flag)
Send exactly length bytes from buffer.
 
virtual Int_t SetFPEMask(Int_t mask=kDefaultMask)
Set which conditions trigger a floating point exception.
 
virtual const char * GetBuildCompiler() const
Return the build compiler.
 
virtual void CloseConnection(int sock, Bool_t force=kFALSE)
Close socket connection.
 
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries.
 
void SetErrorStr(const char *errstr)
Set the system error string.
 
virtual TSignalHandler * RemoveSignalHandler(TSignalHandler *sh)
Remove a signal handler from list of signal handlers.
 
virtual void SetSoExt(const char *soExt)
Set shared library extension, should be either .so, .sl, .a, .dll, etc.
 
virtual void Closelog()
Close connection to system log daemon.
 
virtual void Setenv(const char *name, const char *value)
Set environment variable.
 
virtual const char * GetBuildArch() const
Return the build architecture.
 
virtual int Link(const char *from, const char *to)
Create a link from file1 to file2.
 
virtual void SigAlarmInterruptsSyscalls(Bool_t)
 
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
 
virtual void SetLinkedLibs(const char *linkedLibs)
LinkedLibs should contain the library directory and list of libraries needed to recreate the current ...
 
virtual std::string GetWorkingDirectory() const
Return working directory.
 
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.
 
static const char * StripOffProto(const char *path, const char *proto)
Strip off protocol string from specified path.
 
virtual void Abort(int code=0)
Abort the application.
 
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
 
virtual const char * GetSoExt() const
Get the shared library extension.
 
virtual int Utime(const char *file, Long_t modtime, Long_t actime)
Set the a files modification and access times.
 
virtual const char * GetError()
Return system error string.
 
virtual TTimer * RemoveTimer(TTimer *t)
Remove timer from list of system timers.
 
virtual TString GetDirName(const char *pathname)
Return the directory name in pathname.
 
virtual Int_t GetFPEMask()
Return the bitmap of conditions that trigger a floating point exception.
 
virtual int Unlink(const char *name)
Unlink, i.e.
 
virtual void StackTrace()
Print a stack trace.
 
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
 
virtual void ResetSignals()
Reset signals handlers to previous behaviour.
 
virtual const char * TempDirectory() const
Return a user configured or systemwide directory to create temporary files in.
 
virtual const char * GetFlagsOpt() const
Return the optimization flags.
 
virtual Bool_t ConsistentWith(const char *path, void *dirptr=nullptr)
Check consistency of this helper with the one required by 'path' or 'dirptr'.
 
char * DynamicPathName(const char *lib, Bool_t quiet=kFALSE)
Find a dynamic library called lib using the system search paths.
 
Basic time type with millisecond precision.
 
Handles synchronous and a-synchronous timer events.
 
virtual void TurnOn()
Add the timer to the system timer list.
 
void Reset()
Reset the timer.
 
Bool_t IsInterruptingSyscalls() const
 
This class represents a WWW compatible URL.
 
const char * GetUser() const
 
const char * GetHost() const
 
const char * GetProtocol() const
 
TVersionCheck(int versionCode)
Register version of plugin library.
 
This class implements a mutex interface.
 
std::string GetCurrentDir()
 
std::string MakePathRelative(const std::string &path, const std::string &base, bool isBuildingROOT=false)
 
R__EXTERN TVirtualRWMutex * gCoreMutex