53 #include "compiledata.h" 54 #include "RConfigure.h" 110 if (gSystem && name[0] !=
'-' && strcmp(name,
"Generic"))
111 Error(
"TSystem",
"only one instance of TSystem allowed");
273 #ifdef R__SOLARIS_CC50 289 #ifdef R__SOLARIS_CC50 366 catch (std::exception& exc) {
378 Warning(
"Run",
"instructed to abort");
385 catch (
const char *str) {
390 Warning(
"Run",
"handle uncaugth exception, terminating");
431 return gROOT->IsInterrupted();
512 if (t->
IsSync() == mode) {
526 if (to && to->
IsAsync() && timeout > 0) {
692 FILE *pipe =
OpenPipe(command,
"r");
694 SysError(
"GetFromPipe",
"cannot run command \"%s\"", command);
699 while (line.
Gets(pipe)) {
707 Error(
"GetFromPipe",
"command \"%s\" returned %d", command, r);
769 while ((helper = (
TSystem*) next()))
781 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
786 }
else if ((h =
gROOT->GetPluginManager()->FindHandler(
"TSystem", path))) {
817 return (checkproto || checkdir);
879 return std::string();
895 return std::string();
935 if (name[0] ==
'/' && name[1] ==
'\0')
938 if ((cp = (
char*)strrchr(name,
'/')))
942 Error(
"BaseName",
"name = 0");
952 return dir[0] ==
'/';
966 if (!name || !name[0])
return kFALSE;
978 while ( incPath.
Index(
" :") != -1 ) {
985 incPath.
Prepend(fileLocation+
":.:");
987 char *actual =
Which(incPath,realname);
1006 if (pathname && strchr(pathname,
'/')) {
1010 static char *buf = 0;
1011 int pathlen = strlen(pathname);
1012 if (pathlen > len) {
1015 buf =
new char [len+1];
1017 strcpy(buf, pathname);
1019 char *
r = buf+pathlen-1;
1021 while ( r>buf && *(r)==
'/') { --
r; }
1023 while ( r>buf && *(r)!=
'/') { --
r; }
1026 while ( r>buf && *(r)==
'/') { --
r; }
1029 if (r==buf && *(r)!=
'/') {
1082 TTHREAD_TLS_ARRAY(
char, kBufSize, xname);
1100 char xname[kBufSize];
1115 int n, ier, iter, lx, ncopy;
1116 char *inp, *out, *
x, *t, *buff;
1117 const char *
b, *
c, *
e;
1119 buff =
new char[kBufSize * 4];
1121 iter = 0; xname[0] = 0; inp = buff + kBufSize; out = inp + kBufSize;
1122 inp[-1] =
' '; inp[0] = 0; out[-1] =
' ';
1123 c = fname + strspn(fname,
" \t\f\r");
1126 strlcat(inp, c, kBufSize);
1129 iter++; c = inp; ier = 0;
1133 if (c[0] ==
'~' && c[1] ==
'/') {
1138 strlcpy(x, p, kBufSize);
1145 }
else if (c[0] ==
'~' && c[1] !=
'/') {
1146 n = strcspn(c+1,
"/ ");
1148 strncat(buff, c+1, n);
1153 strlcpy(x, p, kBufSize);
1163 for ( ; c[0]; c++) {
1167 if (c[0] ==
'.' && c[1] ==
'/' && c[-1] ==
' ') {
1169 strlcpy(buff, wd.c_str(), kBufSize);
1174 strlcpy(x, p, kBufSize); x += strlen(p); c = e-1;
continue;
1181 if (c[1] ==
'(') b++;
1182 if (c[1] ==
'{') b++;
1186 for (e = b; isalnum(e[0]) || e[0] ==
'_'; e++) ;
1187 buff[0] = 0; strncat(buff, b, e-b);
1190 for (t = buff; (t[0] = toupper(t[0])); t++) ;
1194 for (t = buff; (t[0] = tolower(t[0])); t++) ;
1197 if (!p && !strcmp(buff,
"cwd")) {
1199 strlcpy(buff, wd.c_str(), kBufSize);
1202 if (!p && !strcmp(buff,
"$")) {
1211 if (c[1] && c[1]!=
'\\' && c[1]!=
';' && c[1]!=
'/')
1219 if (lp >= kBufSize) {
1221 strlcpy(x, p, kBufSize);
1227 c = (b==c+1) ? e-1 : e;
1232 x[0] = 0; lx = x - out;
1233 if (ier && iter < 3) { strlcpy(inp, out, kBufSize);
goto again; }
1234 ncopy = (lx >= kBufSize) ? kBufSize-1 : lx;
1235 xname[0] = 0; strncat(xname, out, ncopy);
1239 if (ier || ncopy != lx) {
1240 ::Error(
"TSystem::ExpandFileName",
"input: %s, output: %s", fname, xname);
1290 if (strlen(url.
GetHost()) > 0) {
1300 if (strlen(url.
GetUser()) > 0) {
1379 int res =
GetPathInfo(path,
id, &lsize, flags, modtime);
1381 if (res == 0 && size) {
1383 Error(
"GetPathInfo",
"file %s > 2 GB, use GetPathInfo() with Long64_t size", path);
1525 FindFile(search, wfilString, mode);
1526 if (wfilString.
IsNull())
return 0;
1702 Error(
"ShowOutput",
"handle not specified");
1708 Error(
"ShowOutput",
"file '%s' cannot be read", h->
fFile.
Data());
1714 if (!(f = fopen(h->
fFile.
Data(),
"r"))) {
1715 Error(
"ShowOutput",
"file '%s' cannot be open", h->
fFile.
Data());
1720 off_t ltot = lseek(fileno(f), (off_t) 0, SEEK_END);
1722 lseek(fileno(f), (off_t) begin, SEEK_SET);
1723 Int_t left = ltot - begin;
1726 const Int_t kMAXBUF = 16384;
1728 Int_t wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
1731 while ((len = read(fileno(f), buf, wanted)) < 0 &&
1736 SysError(
"ShowOutput",
"error reading log file");
1742 fprintf(stderr,
"%s", buf);
1746 wanted = (left > kMAXBUF) ? kMAXBUF : left;
1748 }
while (len > 0 && left > 0);
1791 if (left == right)
return kTRUE;
1793 if (left==0 || right==0)
return kFALSE;
1795 if ( (strcmp(right,left)==0) ) {
1801 char leftname[_MAX_PATH];
1802 char rightname[_MAX_PATH];
1803 _fullpath( leftname, left, _MAX_PATH );
1804 _fullpath( rightname, right, _MAX_PATH );
1805 return ((stricmp(leftname, rightname)==0));
1807 struct stat rightBuf;
1808 struct stat leftBuf;
1809 return ( ( 0 == stat( left, & leftBuf ) )
1810 && ( 0 == stat( right, & rightBuf ) )
1811 && ( leftBuf.st_dev == rightBuf.st_dev )
1812 && ( leftBuf.st_ino == rightBuf.st_ino )
1813 && ( leftBuf.st_size == rightBuf.st_size )
1814 && ( leftBuf.st_mtime == rightBuf.st_mtime )
1843 if (idx == 0 || libs[idx-1] ==
'/' || libs[idx-1] ==
'\\') {
1846 if (!l.
EndsWith(
".") && libs[idx]==
'.')
1849 while (idx < len && isdigit(libs[idx])) {
1852 if (libs[idx] ==
'.') {
1856 while (idx < len && libs[idx] !=
'.') {
1857 if (libs[idx] ==
' ' || idx+1 == len) {
1864 if (l[l.
Length()-1] ==
'.') {
1870 if ((idx == 0 || libs[idx-1] ==
' ') &&
1871 (libs[idx+l.
Length()] ==
' ' || libs[idx+l.
Length()] == 0)) {
1885 libmapfilename = path;
1886 idx = libmapfilename.
Last(
'.');
1888 libmapfilename.
Remove(idx);
1890 libmapfilename +=
".rootmap";
1892 if (
gDebug > 0)
Info(
"Load",
"loading %s", libmapfilename.
Data());
1894 deplibs =
gInterpreter->GetSharedLibDeps(moduleBasename);
1901 if (strcmp(module,deplib)==0) {
1905 Info(
"Load",
"loading dependent library %s for library %s",
1907 if ((ret =
Load(deplib,
"", system)) < 0) {
1917 const char *dirname =
DirName(path);
1931 if (ret < 0) ret = -1;
1933 Info(
"Load",
"loaded library %s, status %d", path, ret);
1936 Error(
"Load",
"version mismatch, %s = %d, ROOT = %d",
1937 path, v,
gROOT->GetVersionInt());
1941 gLibraryVersionIdx--;
1945 if (!entry || !entry[0] || ret < 0)
return ret;
1961 if (!mapfile || !mapfile->
GetTable())
return 0;
1963 std::set<std::string> loadedlibs;
1964 std::set<std::string> failedlibs;
1968 while ((rec = (
TEnvRec*) iEnvRec())) {
1974 if (failedlibs.find(lib.
Data()) != failedlibs.end()) {
1986 if (loadedlibs.find(lib.
Data()) == loadedlibs.end()) {
1988 auto res = gSystem->
Load(lib);
1990 if (res == 0) ++nlibs;
1991 loadedlibs.insert(lib.
Data());
1993 failedlibs.insert(lib.
Data());
2062 TRegexp separator(
"[^ \\t\\s]+");
2064 Ssiz_t start = 0, index = 0, end = 0;
2068 Printf(
"Loaded shared libraries");
2069 Printf(
"=======================");
2071 while ((start < libs.
Length()) && (index !=
kNPOS)) {
2072 index = libs.
Index(separator, &end, start);
2074 s = libs(index, end);
2088 Printf(
"-----------------------");
2089 Printf(
"%d libraries loaded", i);
2090 Printf(
"=======================");
2098 TTHREAD_TLS_DECL(
TString, gLastErrorString);
2099 return gLastErrorString;
2173 if (libs.
Length() == 0) {
2179 static TString lastAddMissing;
2180 if ( lastLinked != slinked ) {
2182 static TRegexp separator(
"[^ \\t\\s]+");
2183 lastLinked = slinked;
2184 lastAddMissing.
Clear();
2186 Ssiz_t start, index, end;
2187 start = index = end = 0;
2189 while ((start < slinked.
Length()) && (index !=
kNPOS)) {
2190 index = slinked.
Index(separator,&end,start);
2192 TString sub = slinked(index,end);
2193 if (sub[0]==
'-' && sub[1]==
'L') {
2208 }
else if (libs.
Length() != 0) {
2211 static TRegexp separator(
"[^ \\t\\s]+");
2212 Ssiz_t start, index, end;
2213 start = index = end = 0;
2215 while ((start < slinked.
Length()) && (index !=
kNPOS)) {
2216 index = slinked.
Index(separator,&end,start);
2218 TString sub = slinked(index,end);
2219 if (sub[0]!=
'-' && sub[1]!=
'L') {
2229 if (regexp && *regexp) {
2230 static TRegexp separator(
"[^ \\t\\s]+");
2233 Ssiz_t start, index, end;
2234 start = index = end = 0;
2236 while ((start < libs.
Length()) && (index !=
kNPOS)) {
2237 index = libs.
Index(separator,&end,start);
2239 s = libs(index,end);
2240 if ((isRegexp && s.
Index(user_re) !=
kNPOS) ||
2252 #if defined(R__MACOSX) 2258 static TRegexp separator(
"[^ \\t\\s]+");
2259 static TRegexp dynload(
"/lib-dynload/");
2261 Ssiz_t start, index, end;
2262 start = index = end = 0;
2264 while ((start < libs2.
Length()) && (index !=
kNPOS)) {
2265 index = libs2.
Index(separator, &end, start);
2279 #if defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5) 2284 static TRegexp separator(
"[^ \\t\\s]+");
2285 static TRegexp user_so(
"\\.so$");
2287 Ssiz_t start, index, end;
2288 start = index = end = 0;
2290 while ((start < libs2.
Length()) && (index !=
kNPOS)) {
2291 index = libs2.
Index(separator, &end, start);
2530 target = tobedeleted;
2531 delete [] tobedeleted;
2536 static TString R__Exec(
const char *cmd)
2547 while ((x = fgetc(f))!=EOF ) {
2548 if (x==
'\n' || x==
'\r')
break;
2556 static void R__FixLink(
TString &cmd)
2562 TString res = R__Exec(
"link 2>&1");
2564 if (res.
Contains(
"Microsoft (R) Incremental Linker"))
2568 res = R__Exec(
"cygpath . 2>&1");
2574 res = R__Exec(
"which cl.exe 2>&1|grep cl|sed 's,cl\\.exe$,link\\.exe,' 2>&1");
2576 res = R__Exec(
Form(
"cygpath -w '%s' 2>&1",res.
Data()));
2584 #if defined(__CYGWIN__) 2586 if (path.
Length() > 2 && path[1]==
':') {
2605 const char * stderrfile =
"/dev/null";
2610 TString bakdepfilename = depfilename +
".bak";
2613 TString touch =
"echo # > "; touch +=
"\"" + depfilename +
"\"";
2615 TString touch =
"echo > "; touch +=
"\"" + depfilename +
"\"";
2617 TString builddep =
"rmkdepend";
2619 builddep +=
" \"-f";
2620 builddep += depfilename;
2621 builddep +=
"\" -o_" + extension +
"." + gSystem->
GetSoExt() +
" ";
2624 if ( build_loc.
Length() > (len+1) ) {
2625 builddep +=
" \"-p";
2626 if (build_loc[len] ==
'/' || build_loc[len+1] !=
'\\' ) {
2636 builddep +=
" \"-p";
2640 builddep +=
" -Y -- ";
2642 builddep +=
" \"-I"+rootsysInclude+
"\" ";
2643 builddep += includes;
2644 builddep += defines;
2645 builddep +=
" -- \"";
2646 builddep += filename;
2651 if ( library.
Length() > (len+1) ) {
2652 if (library[len] ==
'/' || library[len+1] !=
'\\' ) {
2653 targetname = library.
Data() + len + 1;
2655 targetname = library.
Data() + len + 2;
2658 targetname = library;
2661 targetname = library;
2666 builddep +=
"\" > ";
2667 builddep += stderrfile;
2668 builddep +=
" 2>&1 ";
2673 #if defined(R__HAS_CLING_DICTVERSION) 2675 char *clingdictversion = gSystem->
Which(incPath,
"clingdictversion.h");
2676 if (clingdictversion) {
2679 delete [] clingdictversion;
2681 R__AddPath(adddictdep,rootsysInclude+
"/clingdictversion.h ");
2686 const char *dictHeaders[] = {
"RVersion.h",
"RConfig.h",
"TClass.h",
2687 "TDictAttributeMap.h",
"TInterpreter.h",
"TROOT.h",
"TBuffer.h",
2688 "TMemberInspector.h",
"TError.h",
"RtypesImp.h",
"TIsAProxy.h",
2689 "TFileMergeInfo.h",
"TCollectionProxyInfo.h"};
2691 for (
unsigned int h=0;
h <
sizeof(dictHeaders)/
sizeof(dictHeaders[0]); ++
h)
2693 char *rootVersion = gSystem->
Which(incPath,dictHeaders[
h]);
2696 delete [] rootVersion;
2698 R__AddPath(adddictdep,rootsysInclude +
"/" + dictHeaders[h]);
2705 char *rootCling = gSystem->
Which(gSystem->
Getenv(
"PATH"),
"rootcling");
2709 delete [] rootCling;
2712 adddictdep +=
" >> \""+depfilename+
"\"";
2714 TString addversiondep(
"echo ");
2715 addversiondep += libname + version_var_prefix +
" \"" +
ROOT_RELEASE +
"\" >> \""+depfilename+
"\"";
2724 if (depbuilt) depbuilt = !gSystem->
Exec(builddep);
2725 if (depbuilt) depbuilt = !gSystem->
Exec(adddictdep);
2726 if (depbuilt) depbuilt = !gSystem->
Exec(addversiondep);
2729 ::Warning(
"ACLiC",
"Failed to generate the dependency file for %s",
2733 gSystem->
Unlink(stderrfile);
2735 gSystem->
Unlink(bakdepfilename);
2860 const char *library_specified,
2861 const char *build_dir,
2864 static const char *version_var_prefix =
"__ROOTBUILDVERSION=";
2875 keep = (strchr(opt,
'k')!=0);
2876 recompile = (strchr(opt,
'f')!=0);
2877 if (strchr(opt,
'O')!=0) {
2880 if (strchr(opt,
'g')!=0) {
2883 if (strchr(opt,
'c')!=0) {
2886 withInfo = strchr(opt,
's') == 0;
2887 verbose = strchr(opt,
'v') != 0;
2888 internalDebug = strchr(opt,
'd') != 0;
2891 TString rootbuild = ROOTBUILD;
2903 if (build_dir && strlen(build_dir)) build_loc = build_dir;
2904 if (build_loc ==
".") {
2917 incPath.
Append(fromConfig);
2920 auto posISysRoot = incPath.
Index(
" -isysroot \"");
2921 if (posISysRoot !=
kNPOS) {
2922 auto posISysRootEnd = incPath.
Index(
'"', posISysRoot + 12);
2923 if (posISysRootEnd !=
kNPOS) {
2926 incPath.
Insert(posISysRootEnd - 1,
"/usr/include/");
2927 incPath.
Replace(posISysRoot, 12,
":\"");
2930 while ( incPath.
Index(
" :") != -1 ) {
2937 TString expFileName(filename);
2940 TString library = expFileName;
2943 const char *whichlibrary =
Which(incPath,library);
2945 library = whichlibrary;
2946 delete [] whichlibrary;
2948 ::Error(
"ACLiC",
"The file %s can not be found in the include path: %s",filename,incPath.
Data());
2953 ::Error(
"ACLiC",
"The file %s can not be found.",filename);
2964 TString filename_fullpath = library;
2971 if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
2972 file_dirname.
Prepend(library(0,2));
2974 TString file_location( file_dirname );
2975 incPath.
Prepend( file_location +
":" );
2979 extension.
Replace( 0, dot_pos+1, 0 , 0);
2980 TString libname_noext = library;
2981 if (dot_pos>=0) libname_noext.
Remove( dot_pos );
2990 if (library_specified && strlen(library_specified) ) {
2992 libname =
BaseName( library_specified );
2993 library = library_specified;
3002 TString libname_ext ( libname );
3003 libname_ext +=
"." +
fSoExt;
3010 if (library.
Length()>1 && isalpha(library[0]) && library[1]==
':') {
3011 lib_dirname.
Prepend(library(0,2));
3014 if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]),
"/.", 2) == 0 ) {
3017 if ( strncmp( &(lib_dirname[lib_dirname.
Length()-2]),
"\\.", 2) == 0 ) {
3020 TString lib_location( lib_dirname );
3023 if (build_loc.
Length()==0) {
3024 build_loc = lib_location;
3027 TRegexp disk_finder (
"[A-z]:");
3029 if (pos==0) library.
Remove(pos,3);
3030 pos = lib_location.
Index( disk_finder );
3031 if (pos==0) lib_location.
Remove(pos,3);
3040 TString build_loc_store( build_loc );
3041 if (!flatBuildDir) {
3046 mkdirFailed = (0 !=
mkdir(build_loc,
true));
3047 if (mkdirFailed && !canWriteBuild_loc) {
3050 build_loc = build_loc_store;
3052 }
else if (!mkdirFailed && dirmode!=0) {
3053 Chmod(build_loc,dirmode);
3066 ::Info(
"ACLiC",
"script has already been loaded in interpreted mode");
3067 ::Info(
"ACLiC",
"unloading %s and compiling it", filename);
3082 TRegexp rel_inc(
" -I[^\"/\\$%-][^:-]+");
3084 pos = rel_inc.
Index(includes,&len);
3086 TString sub = includes(pos,len);
3092 includes.
Replace(pos,len,sub);
3093 pos = rel_inc.
Index(includes,&len);
3098 TRegexp rel_inc(
" -I\"[^/\\$%-][^:-]+");
3100 pos = rel_inc.
Index(includes,&len);
3102 TString sub = includes(pos,len);
3106 includes.
Replace(pos,len,sub);
3107 pos = rel_inc.
Index(includes,&len);
3128 TRegexp rel_def(
"-D[^\\s\\t\\n\\r]*");
3130 pos = rel_def.
Index(cmd,&len);
3132 defines += cmd(pos,len);
3134 pos = rel_def.
Index(cmd,&len,pos+1);
3158 depfilename +=
"_" + extension +
".d";
3162 Long_t lib_time, file_time;
3166 (lib_time < file_time))) {
3176 depdir = emergency_loc;
3178 depfilename +=
"_" + extension +
".d";
3180 R__WriteDependencyFile(build_loc, depfilename, filename_fullpath, library, libname, extension, version_var_prefix, includes, defines, incPath);
3187 FILE * depfile = fopen(depfilename.
Data(),
"r");
3196 TString version_var = libname + version_var_prefix;
3199 char *
line =
new char[sz];
3205 Bool_t hasversion =
false;
3207 while ((c = fgetc(depfile)) != EOF) {
3210 while ((c = fgetc(depfile)) != EOF) {
3217 if (current && line[current-1]==
'=' && strncmp(version_var.
Data(),
line,current)==0) {
3223 }
else if (isspace(c) && !nested) {
3225 if (line[current-1]!=
':') {
3234 modified |= ( lib_time <= filetime );
3241 if (current==sz-1) {
3243 char *newline =
new char[sz];
3244 memcpy(newline,line, current);
3248 if (c==
'"') nested = !nested;
3257 recompile = modified;
3274 && (lib_time>load_time)) {
3279 if ( !recompile && reload ) {
3282 ::Info(
"ACLiC",
"%s has been modified and will be reloaded",
3301 return !gSystem->
Load(library);
3305 ::Info(
"ACLiC",
"%s script has already been compiled and loaded",
3306 modified ?
"modified" :
"unmodified");
3313 ::Info(
"ACLiC",
"it will be regenerated and reloaded!");
3331 libmapfilename +=
".rootmap";
3332 #if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)) || defined(R__WIN32) 3337 Bool_t linkDepLibraries = !produceRootmap;
3339 #if (defined(R__MACOSX) && !defined(MAC_OS_X_VERSION_10_5)) 3341 #elif defined(R__WIN32) 3346 produceRootmap = linkLibs & 0x2;
3347 linkDepLibraries = linkLibs & 0x1;
3364 return !gSystem->
Load(library);
3369 if (!canWrite && recompile) {
3372 ::Warning(
"ACLiC",
"Could not create the directory: %s",
3375 ::Warning(
"ACLiC",
"%s is not writable!",
3378 if (emergency_loc == build_dir ) {
3379 ::Error(
"ACLiC",
"%s is the last resort location (i.e. temp location)",build_loc.
Data());
3382 ::Warning(
"ACLiC",
"Output will be written to %s",
3383 emergency_loc.
Data());
3384 return CompileMacro(expFileName, opt, library_specified, emergency_loc, dirmode);
3388 Info(
"ACLiC",
"creating shared library %s",library.
Data());
3391 R__WriteDependencyFile(build_loc, depfilename, filename_fullpath, library, libname, extension, version_var_prefix, includes, defines, incPath);
3394 TString dict = libname +
"_ACLiC_dict";
3398 static const int maxforbidden = 27;
3399 static const char *forbidden_chars[maxforbidden] =
3400 {
"+",
"-",
"*",
"/",
"&",
"%",
"|",
"^",
">",
"<",
3401 "=",
"~",
".",
"(",
")",
"[",
"]",
"!",
",",
"$",
3402 " ",
":",
"'",
"#",
"@",
"\\",
"\"" };
3403 for(
int ic = 0; ic < maxforbidden; ic++ ) {
3418 linkdef +=
"_ACLiC_linkdef.h";
3419 std::ofstream linkdefFile( linkdef, std::ios::out );
3420 linkdefFile <<
"// File Automatically generated by the ROOT Script Compiler " 3422 linkdefFile << std::endl;
3423 linkdefFile <<
"#ifdef __CINT__" << std::endl;
3424 linkdefFile << std::endl;
3425 linkdefFile <<
"#pragma link C++ nestedclasses;" << std::endl;
3426 linkdefFile <<
"#pragma link C++ nestedtypedefs;" << std::endl;
3427 linkdefFile << std::endl;
3431 const char * extensions[] = {
".h",
".hh",
".hpp",
".hxx",
".hPP",
".hXX" };
3434 for (i = 0; i < 6; i++ ) {
3438 extra_linkdef.
Append(extensions[i]);
3439 name =
Which(incPath,extra_linkdef);
3441 if (verboseLevel>4 && withInfo) {
3442 Info(
"ACLiC",
"including extra linkdef file: %s",name);
3444 linkdefFile <<
"#include \"" << name <<
"\"" << std::endl;
3449 if (verboseLevel>5 && withInfo) {
3450 Info(
"ACLiC",
"looking for header in: %s",incPath.
Data());
3452 for (i = 0; i < 6; i++ ) {
3455 lookup.
Append(extensions[i]);
3456 name =
Which(incPath,lookup);
3458 linkdefFile <<
"#pragma link C++ defined_in "<<gSystem->
UnixPathName(name)<<
";"<< std::endl;
3462 linkdefFile <<
"#pragma link C++ defined_in \""<<filename_fullpath <<
"\";" << std::endl;
3463 linkdefFile << std::endl;
3464 linkdefFile <<
"#endif" << std::endl;
3465 linkdefFile.close();
3470 mapfile +=
"_ACLiC_map";
3471 TString mapfilein = mapfile +
".in";
3472 TString mapfileout = mapfile +
".out";
3477 needLoadMap =
kTRUE;
3480 std::ofstream mapfileStream( mapfilein, std::ios::out );
3483 TString sname =
"system.rootmap";
3496 mapfileStream << file << std::endl;
3498 mapfileStream << file << std::endl;
3499 mapfileStream << name << std::endl;
3501 for (i = 0; i <
gInterpreter->GetRootMapFiles()->GetEntriesFast(); i++) {
3506 mapfileStream.close();
3511 rcling +=
" -v0 \"--lib-list-prefix=";
3513 rcling +=
"\" -f \"";
3515 if (produceRootmap) {
3516 rcling +=
" -rml " + libname +
" -rmf \"" + libmapfilename +
"\" ";
3519 if (produceRootmap) {
3520 rcling.
Append(
"-DR__ACLIC_ROOTMAP ");
3530 if (verboseLevel>3) {
3531 ::Info(
"ACLiC",
"creating the dictionary files");
3532 if (verboseLevel>4)
::Info(
"ACLiC",
"%s", rcling.
Data());
3536 Int_t dictResult = gSystem->
Exec(rcling);
3538 if (dictResult==139)
::Error(
"ACLiC",
"Dictionary generation failed with a core dump!");
3542 Bool_t result = !dictResult;
3550 std::ifstream liblist(mapfileout);
3552 while ( liblist >> libtoload ) {
3554 if (libtoload ==
"#") {
3556 std::string toskipcomment;
3557 std::getline(liblist,toskipcomment);
3560 if (libtoload != library && libtoload != libname && libtoload != libname_ext) {
3561 if (produceRootmap) {
3562 if (loadLib || linkDepLibraries ) {
3563 result =
gROOT->LoadClass(
"", libtoload) >= 0;
3569 if (!linkedlibs.
Contains(libtoload)) {
3571 depLibraries.
Append(
" ");
3573 depLibraries = depLibraries.
Strip();
3576 gROOT->LoadClass(
"", libtoload);
3579 unsigned char c = liblist.peek();
3580 if (c==
'\n' || c==
'\r') {
3606 for (
auto tokenObj : *linkLibrariesNoQuotes.
Tokenize(
" ")) {
3607 singleLibrary = ((
TObjString*)tokenObj)->GetString();
3609 if (collectingSingleLibraryNameTokens) {
3610 librariesWithQuotes.
Chop();
3611 librariesWithQuotes +=
"\" \"" + singleLibrary +
"\"";
3612 collectingSingleLibraryNameTokens =
kFALSE;
3614 librariesWithQuotes +=
" \"" + singleLibrary +
"\"";
3617 if (collectingSingleLibraryNameTokens) {
3618 librariesWithQuotes += singleLibrary +
" ";
3620 collectingSingleLibraryNameTokens =
kTRUE;
3621 librariesWithQuotes +=
" \"" + singleLibrary +
" ";
3627 linkLibraries.
Prepend(linkLibrariesNoQuotes);
3629 linkLibraries.
Prepend(librariesWithQuotes);
3636 cmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
3638 cmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
3641 cmd.
ReplaceAll(
"$SharedLib",
"\"$SharedLib\"");
3643 if (linkDepLibraries) {
3644 if (produceRootmap) {
3668 fakeMain +=
"_ACLiC_main";
3670 std::ofstream fakeMainFile( fakeMain, std::ios::out );
3671 fakeMainFile <<
"// File Automatically generated by the ROOT Script Compiler " 3673 fakeMainFile <<
"int main(char*argc,char**argvv) {};" << std::endl;
3674 fakeMainFile.close();
3685 exec +=
"_ACLiC_exec";
3686 testcmd.
ReplaceAll(
"$SourceFiles",
"-D__ACLIC__ \"$SourceFiles\"");
3688 testcmd.
ReplaceAll(
"$ObjectFiles",
"\"$ObjectFiles\"");
3692 testcmd.
ReplaceAll(
"$LinkedLibs",linkLibraries);
3700 R__FixLink(testcmd);
3706 if (verboseLevel>3 && withInfo) {
3707 ::Info(
"ACLiC",
"compiling the dictionary and script files");
3708 if (verboseLevel>4)
::Info(
"ACLiC",
"%s", cmd.
Data());
3710 Int_t compilationResult = gSystem->
Exec( cmd );
3711 if (compilationResult) {
3712 if (compilationResult==139)
::Error(
"ACLiC",
"Compilation failed with a core dump!");
3714 if (produceRootmap) {
3715 gSystem->
Unlink(libmapfilename);
3718 result = !compilationResult;
3733 if (verboseLevel>3 && withInfo)
::Info(
"ACLiC",
"loading the shared library");
3734 if (loadLib) result = !gSystem->
Load(library);
3735 else result =
kTRUE;
3738 if (verboseLevel>3 && withInfo) {
3739 ::Info(
"ACLiC",
"testing for missing symbols:");
3740 if (verboseLevel>4)
::Info(
"ACLiC",
"%s", testcmd.
Data());
3742 gSystem->
Exec(testcmd);
3748 if (verboseLevel<=5 && !internalDebug) {
3750 gSystem->
Unlink( dicth );
3751 gSystem->
Unlink( dictObj );
3752 gSystem->
Unlink( linkdef );
3753 gSystem->
Unlink( mapfilein );
3754 gSystem->
Unlink( mapfileout );
3755 gSystem->
Unlink( fakeMain );
3758 if (verboseLevel>6) {
3762 gSystem->
Exec(rcling);
3763 gSystem->
Exec( cmd );
3764 gSystem->
Exec(testcmd);
3817 if (!
gEnv)
return "";
3895 if (!
gEnv)
return "_linkdef";
4141 char *fname =
Strip(filename);
4143 char *arg = strchr(fname,
'(');
4145 while (arg && *arg && (arg > fname && *(arg-1) ==
'$') && *(arg+1))
4146 arg = strchr(arg+1,
'(');
4147 if (arg && arg > fname) {
4160 s2 = strstr(fname,
">>");
4161 if (!s2) s2 = strstr(fname,
"2>");
4162 if (!s2) s2 = strchr(fname,
'>');
4163 s3 = strchr(fname,
'<');
4164 if (s2 && s3) s2 = s2<s3 ? s2 : s3;
4165 if (s3 && !s2) s2 = s3;
4174 while (s2 && *s2 ==
' ') s2--;
4184 int len = strlen(fname);
4187 if (strchr(
"kfgOcsdv-", fname[len - 1])) {
4188 mode += fname[len - 1];
4194 Bool_t compile = len && fname[len - 1] ==
'+';
4195 Bool_t remove = compile && len > 1 && fname[len - 2] ==
'+';
4201 fname[strlen(fname)-2] = 0;
4204 fname[strlen(fname)-1] = 0;
4213 if (arg) arguments += arg;
4214 else arguments =
"";
4227 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 const char * GetName() const
Returns name of object.
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 TObject * Remove(TObject *obj)=0
virtual void Add(TObject *obj)
virtual UInt_t GetUniqueID() const
Return the unique object id.
TSeqCollection * fCompiled
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.
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 SigAlarmInterruptsSyscalls(Bool_t)
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.
TSeqCollection * fOnExitList
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.
const char * GetProtocol() const
TString fBuildCompilerVersion
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.
virtual void * GetDirPtr() const
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
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) 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 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.
The TEnv class reads config files, by default named .rootrc.
TSeqCollection * fSignalHandler
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.
const char * GetValue() const
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.
static const TString & GetRootSys()
Get the rootsys directory in the installation. Static utility function.
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 #.
TString & Insert(Ssiz_t pos, const char *s)
static const TString & GetIncludeDir()
Get the include directory in the installation. Static utility function.
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.
TSeqCollection * fStdExceptionHandler
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.
virtual void Delete(Option_t *option="")=0
Delete this object.
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.
TSeqCollection * fHelpers
TObject * Next()
Return next object in collection.
Int_t fNfd
Signals that were trapped.
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.
TSeqCollection * fFileHandler
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 UInt_t LoadAllLibraries()
Load all libraries known to ROOT via the rootmap system.
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 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.
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.
THashList * GetTable() const
Long_t ExecPlugin(int nargs, const T &... params)
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.
TFdSet * fReadready
Files that should be checked for write events.
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 const char * ExpandFileName(const char *fname)
Expand a pathname getting rid of special shell characters like ~.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
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
TFdSet * fSignals
Files with writes waiting.
static constexpr double s
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.
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
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 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.
virtual void DoBeep(Int_t=-1, Int_t=-1) const
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 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.
static const TString & GetLibDir()
Get the library directory in the installation. Static utility function.
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 TObject * FindObject(const char *name) const
Find an object in this collection using its name.
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.
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
TFdSet * fWriteready
Files with reads waiting.
void SetErrorStr(const char *errstr)
Set the system error string.
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.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
virtual void TurnOn()
Add the timer to the system timer list.
TFdSet * fWritemask
Files that should be checked for read events.
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...
virtual const char * GetTitle() const
Returns title of object.
TProcessEventTimer(Long_t delay)
Create async event processor timer. Delay is in milliseconds.
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.