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