90#define _XOPEN_SOURCE 600 
  104#   include <sys/types.h> 
  109#include "RConfigure.h" 
  145#include "compiledata.h" 
  157#include <sys/extattr.h> 
  178#define getxattr(path, name, value, size) getxattr(path, name, value, size, 0u, 0) 
  181#define getxattr(path, name, value, size) extattr_get_file(path, EXTATTR_NAMESPACE_USER, name, value, size) 
  191static struct AddPseudoGlobals {
 
  208      Info(
"TFile", 
"default ctor");
 
 
  344      ::Fatal(
"TFile::TFile", 
"ROOT system not initialized");
 
  350         gROOT->GetListOfClosedObjects()->Add(
this);
 
  360            "please use TFile::Open to access remote files:\n\tauto f = std::unique_ptr<TFile>{TFile::Open(\"%s\")};",
 
  449      Error(
"TFile", 
"file name is not specified");
 
  491            SysError(
"TFile", 
"could not delete %s (errno: %d)",
 
  502      Error(
"TFile", 
"file %s already exists", 
fname.Data());
 
  512         Error(
"TFile", 
"no write permission, could not open file %s", 
fname.Data());
 
  519         Error(
"TFile", 
"file %s does not exist", 
fname.Data());
 
  524         Error(
"TFile", 
"no read permission, could not open file %s", 
fname.Data());
 
  538         SysError(
"TFile", 
"file %s can not be opened", 
fname.Data());
 
  550         SysError(
"TFile", 
"file %s can not be opened for reading", 
fname.Data());
 
 
  591      gROOT->GetListOfClosedObjects()->Remove(
this);
 
  602      Info(
"~TFile", 
"dtor called for %s [%zx]", 
GetName(),(
size_t)
this);
 
 
  628         Error(
"Init", 
"archive %s can only be opened in read mode", 
GetName());
 
  647         Error(
"Init", 
"member %s not found in archive %s",
 
  670      if (
gEnv->
GetValue(
"TFile.v630forwardCompatibility", 0) == 1)
 
  690      char *header = 
new char[
kBEGIN+200];
 
  695         Error(
"Init",
"%s failed to read the file type data.",
 
  702      if (
strncmp(header, 
"root", 4)) {
 
  708      char *buffer = header + 4;    
 
  737         Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
 
  749            Warning(
"Init",
"file %s probably not closed, cannot read free segments",
GetName());
 
  759         Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
 
  766         header       = 
new char[
nbytes];
 
  771            Error(
"Init",
"%s failed to read the file header information at %lld (size=%d)",
 
  817         Error(
"Init",
"cannot read directory info of file %s", 
GetName());
 
  834      if (
gEnv->
GetValue(
"TFile.v630forwardCompatibility", 0) == 1)
 
  858               Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld, " 
  861               Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld",
 
  867               Warning(
"Init",
"file %s probably not closed, " 
  868                       "trying to recover", 
GetName());
 
  878            Warning(
"Init", 
"no keys recovered, file has been made a Zombie");
 
  886      gROOT->GetListOfFiles()->Add(
this);
 
  900               gROOT->GetListOfFiles()->Remove(
this);
 
  907               const auto separator = 
fVersion < 63200 ? 
"/" : 
".";
 
  909               const auto msg = 
"no StreamerInfo found in %s therefore preventing schema evolution when reading this file. " 
  910                                "The file was produced with ROOT version %d.%02d%s%02d, " 
  911                                "while the current version is %d.%02d.%02d";
 
  925      while ((key = (
TKey*)next())) {
 
  936      gROOT->GetListOfClosedObjects()->Add(
this);
 
 
  984      while ((key = iter()) != 
nullptr) {
 
 1042      gROOT->GetListOfFiles()->Remove(
this);
 
 1043      gROOT->GetListOfBrowsers()->RecursiveRemove(
this);
 
 1044      gROOT->GetListOfClosedObjects()->Add(
this);
 
 
 1137   if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFileDrawMap"))) {
 
 1138      if (
h->LoadPlugin() == -1)
 
 
 1195   if (
result >= (
double)std::numeric_limits<Int_t>::max()) {
 
 1196      return std::numeric_limits<Int_t>::max() -1;
 
 
 1213   char    *header = 
new char[
fBEGIN];
 
 
 1312   if (first < 
fBEGIN) 
return 0;
 
 1313   if (first > 
fEND)   
return 0;
 
 1318      Warning(
"GetRecordHeader",
"%s: parameter maxbytes = %d must be >= 4",
 
 1324      Warning(
"GetRecordHeader",
"%s: failed to read header data (maxbytes = %d)",
 
 
 1362         Error(
"GetSize", 
"cannot stat the file %s", 
GetName());
 
 
 1388   TList *list = 
nullptr;
 
 1391      auto key = std::make_unique<TKey>(
this);
 
 1393      auto buf = buffer.data();
 
 1397         Warning(
"GetRecordHeader",
"%s: failed to read the StreamerInfo data from disk.",
 
 1399         return {
nullptr, 1, 
hash};
 
 1409               Info(
"GetStreamerInfo", 
"The streamer info record for file %s has already been treated, skipping it.", 
GetName());
 
 1412            return {
nullptr, 0, 
hash};
 
 1415      key->ReadKeyBuffer(buf);
 
 1416      list = 
dynamic_cast<TList*
>(key->ReadObjWithBuffer(buffer.data()));
 
 1419      list = (
TList*)
Get(
"StreamerInfo"); 
 
 1423      Info(
"GetStreamerInfoList", 
"cannot find the StreamerInfo record in file %s",
 
 1425      return {
nullptr, 1, 
hash};
 
 1428   return {list, 0, 
hash};
 
 
 1502   char * buffer   = 
new char[
nb];
 
 1503   char * 
psave    = buffer;
 
 
 1593   char classname[512];
 
 1606         Warning(
"Map",
"%s: failed to read the key data from disk at %lld.",
 
 1641      for (
int i = 0;i < 
nwhc; i++) 
frombuf(buffer, &classname[i]);
 
 
 1753         Error(
"ReadBuffer", 
"error reading all requested bytes from file %s, got %ld of %d",
 
 
 1800         Error(
"ReadBuffer", 
"error reading all requested bytes from file %s, got %ld of %d",
 
 
 1845   char *
buf2 = 
nullptr;
 
 
 1945      afree->ReadBuffer(buffer);
 
 
 1999      p->IncrementCount();
 
 
 2067      Error(
"Recover", 
"cannot stat the file %s", 
GetName());
 
 2085         Error(
"Recover",
"%s: failed to read the key data from disk at %lld.",
 
 2093         Error(
"Recover",
"Address = %lld\tNbytes = %d\t=====E R R O R=======", 
idcur, 
nbytes);
 
 2117      char *classname = 
nullptr;
 
 2119      classname = 
new char[
nwhc+1];
 
 2121      for (i = 0;i < 
nwhc; i++) 
frombuf(buffer, &classname[i]);
 
 2122      classname[
nwhci] = 
'\0';
 
 2126                               && 
strcmp(classname,
"TBasket")) {
 
 2127         key = 
new TKey(
this);
 
 2140      delete [] classname;
 
 
 2175   if (opt != 
"READ" && opt != 
"UPDATE") {
 
 2176      Error(
"ReOpen", 
"mode must be either READ or UPDATE, not %s", opt.
Data());
 
 2183   if (opt == 
"READ") {
 
 2219         SysError(
"ReOpen", 
"file %s can not be opened in read mode", 
GetName());
 
 2241         SysError(
"ReOpen", 
"file %s can not be opened in update mode", 
GetName());
 
 2250         Warning(
"ReOpen",
"file %s probably not closed, cannot read free segments", 
GetName());
 
 
 2271            Error(
"SetOffset", 
"seeking from end in archive is not (yet) supported");
 
 
 2295            Error(
"Seek", 
"seeking from end in archive is not (yet) supported");
 
 2300      SysError(
"Seek", 
"cannot seek to position %lld in file %s, retpos=%lld",
 
 
 2327   if (level < 0) level = 0;
 
 2328   if (level > 99) level = 99;
 
 
 2413   if (
b.IsReading()) {
 
 
 2474   Error(
"Write const",
"A const TFile object should not be saved. We try to proceed anyway.");
 
 
 2506         Error(
"WriteBuffer", 
"error writing all requested bytes to file %s, wrote %ld of %d",
 
 
 2533      Error(
"WriteBuffer", 
"error writing to cache");
 
 
 2571         return (
TKey*)
nullptr;
 
 2593   char *start = buffer;
 
 2600      afree->FillBuffer(buffer);
 
 2609         Error(
"WriteFree",
"The free block list TKey wrote more data than expected (%d vs %ld). Most likely there has been an out-of-bound write.",
nbytes,(
long int)
actualBytes);
 
 
 2626   const char *root = 
"root";
 
 2628   char *buffer = 
psave;
 
 2630   memcpy(buffer, root, 4); buffer += 4;
 
 
 2751            path += 
"/PROOF-INF";
 
 2753            const char *
afile = 0;
 
 2775               Warning(
"MakeProject", 
"problems unlinking '%s'", path.
Data());
 
 2781         Error(
"MakeProject", 
"problems creating '%s'", path.
Data());
 
 2796      } 
else if (opt.
Contains(
"recreate")) {
 
 2800               Error(
"MakeProject",
"cannot create directory '%s'",
dirname);
 
 2818            Error(
"MakeProject",
"cannot create directory %s, already existing",
dirname);
 
 2823            Error(
"MakeProject",
"cannot create directory '%s'",
dirname);
 
 2838      Error(
"MakeProject",
"file %s has no StreamerInfo", 
GetName());
 
 2855      Error(
"MakeProject",
"Directory name must not be empty.");
 
 2863      Error(
"MakeProject",
"Unable to create the source file %s.",
spath.Data());
 
 2866   fprintf(
sfp, 
"namespace std {}\nusing namespace std;\n");
 
 2870   fprintf(
sfp, 
"struct DeleteObjectFunctor {\n");
 
 2872   fprintf(
sfp, 
"   void operator()(const T *ptr) const {\n");
 
 2875   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2876   fprintf(
sfp, 
"   void operator()(const std::pair<T,Q> &) const {\n");
 
 2879   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2880   fprintf(
sfp, 
"   void operator()(const std::pair<T,Q*> &ptr) const {\n");
 
 2883   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2884   fprintf(
sfp, 
"   void operator()(const std::pair<T*,Q> &ptr) const {\n");
 
 2887   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2888   fprintf(
sfp, 
"   void operator()(const std::pair<T*,Q*> &ptr) const {\n");
 
 2924            if( 
rule->IsRenameRule() || 
rule->IsAliasRule() )
 
 2927            if ( 
rule->HasTarget( 
el->GetName()) && 
rule->GetAttributes()[0] != 0 ) {
 
 2930               if (
attr.Contains(
"owner")) {
 
 2931                  if (
attr.Contains(
"notowner")) {
 
 2943         if ((
info->GetClass() && 
info->GetClassVersion() == 
info->GetClass()->GetClassVersion())
 
 2944             || (
info->GetClassVersion() > 
alternate->GetClassVersion()) ) {
 
 2967      if (
info->GetClassVersion()==-4) 
continue; 
 
 2996      Error(
"MakeProject",
"Cannot open output file:%s\n",path.
Data());
 
 3028         Error(
"MakeProject", 
"cannot open file %s", path.
Data());
 
 3045      Error(
"MakeProject", 
"cannot open path file %s", path.
Data());
 
 3073      Error(
"MakeProject", 
"cannot open path file %s", path.
Data());
 
 3085      fprintf(fp,
"#ifdef __CINT__\n");
 
 3126         std::vector<std::string> inside;
 
 3137                  what = 
"std::pair<";
 
 3147                     tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3151                     tmp.Form(
"template class %s;\n",
what.Data());
 
 3156                     what.ReplaceAll(
"std::",
"");
 
 3159                        fprintf(fp,
"#pragma link C++ class %s+;\n",
what.Data());
 
 3167                     tmp.Form(
"<class name=\"%s\" />\n",key->
GetName());
 
 3171                     tmp.Form(
"template class %s;\n",key->
GetName());
 
 3176                     what.ReplaceAll(
"std::",
"");
 
 3188            tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3192            if (
what[
what.Length()-1] == 
'>') {
 
 3193               tmp.Form(
"template class %s;\n",
what.Data());
 
 3199            what.ReplaceAll(
"std::",
"");
 
 3200            fprintf(fp,
"#pragma link C++ class %s+;\n",
what.Data());
 
 3208            if (
element->GetClass() && !
element->GetClass()->IsLoaded() && 
element->GetClass()->GetCollectionProxy()) {
 
 3210               tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3214               tmp.Form(
"template class %s;\n",
what.Data());
 
 3223      fprintf(
ifp,
"#ifndef PROJECT_INSTANCES_H\n");
 
 3224      fprintf(
ifp,
"#define PROJECT_INSTANCES_H\n");
 
 3241      cmd.ReplaceAll(
"$SourceFiles",
sources.Data());
 
 3244      cmd.ReplaceAll(
"$ObjectFiles", 
object.Data());
 
 3248      cmd.ReplaceAll(
"$LibName",
sdirname);
 
 3249      cmd.ReplaceAll(
"$BuildDir",
".");
 
 3257      cmd.ReplaceAll(
"$Opt", 
sOpt);
 
 3277         Error(
"MakeProject", 
"problems creating PAR make file '%s'", 
filemake.Data());
 
 3298         Error(
"MakeProject", 
"problems creating BUILD.sh and/or SETUP.C under '%s'", 
proofinf.Data());
 
 3311      chmod(
cmod.Data(), 00700);
 
 3313      Printf(
"Files Makefile, Makefile.arch, PROOF-INF/BUILD.sh and" 
 3314             " PROOF-INF/SETUP.C have been generated under '%s'", 
clean_dirname.Data());
 
 3325            Warning(
"MakeProject", 
"problems changing directory back to '%s'", 
curdir.Data());
 
 3328         Error(
"MakeProject", 
"problems changing directory to '%s' - skipping PAR file generation", 
pardir.Data());
 
 3331      Warning(
"MakeProject", 
"on Windows systems the PAR file cannot be generated out of the package directory!");
 
 3345      chmod(
"makep.cmd",00700);
 
 3350      if (res) 
printf(
"Shared lib %s has been generated\n",path.
Data());
 
 3355         if (res) 
printf(
"Shared lib %s has been dynamically linked\n",path.
Data());
 
 
 3374      Error(
"MakeProjectParMake", 
"path for output file undefined!");
 
 3380      Error(
"MakeProjectParMake", 
"package name undefined!");
 
 3395   fprintf(
fmk, 
"# Makefile for the ROOT test programs.\n");
 
 3396   fprintf(
fmk, 
"# This Makefile shows how to compile and link applications\n");
 
 3397   fprintf(
fmk, 
"# using the ROOT libraries on all supported platforms.\n");
 
 3399   fprintf(
fmk, 
"# Copyright (c) 2000 Rene Brun and Fons Rademakers\n");
 
 3401   fprintf(
fmk, 
"# Author: this makefile has been automatically generated via TFile::MakeProject\n");
 
 3405   fprintf(
fmk, 
"#------------------------------------------------------------------------------\n");
 
 3408   fprintf(
fmk, 
"PACKS        = %sProjectSource.$(SrcSuf) %sProjectDict.$(SrcSuf)\n", 
pack, 
pack);
 
 3421   fprintf(
fmk, 
"#------------------------------------------------------------------------------\n");
 
 3423   fprintf(
fmk, 
".SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf)\n");
 
 3429   fprintf(
fmk, 
"\t\t/usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^\n");
 
 3432   fprintf(
fmk, 
"\t\t/usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^\n");
 
 3435   fprintf(
fmk, 
"# We need to make both the .dylib and the .so\n");
 
 3436   fprintf(
fmk, 
"\t\t$(LD) $(SOFLAGS)$@ $(LDFLAGS) $^ $(OutPutOpt) $@ $(LIBS)\n");
 
 3437   fprintf(
fmk, 
"ifneq ($(subst $(MACOSX_MINOR),,1234),1234)\n");
 
 3439   fprintf(
fmk, 
"\t\tln -sf $@ $(subst .$(DllSuf),.so,$@)\n");
 
 3441   fprintf(
fmk, 
"\t\t$(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \\\n");
 
 3442   fprintf(
fmk, 
"\t\t   $(OutPutOpt) $(subst .$(DllSuf),.so,$@)\n");
 
 3447   fprintf(
fmk, 
"\t\tbindexplib $* $^ > $*.def\n");
 
 3448   fprintf(
fmk, 
"\t\tlib -nologo -MACHINE:IX86 $^ -def:$*.def \\\n");
 
 3449   fprintf(
fmk, 
"\t\t   $(OutPutOpt)$(PACKLIB)\n");
 
 3450   fprintf(
fmk, 
"\t\t$(LD) $(SOFLAGS) $(LDFLAGS) $^ $*.exp $(LIBS) \\\n");
 
 3453   fprintf(
fmk, 
"\t\t$(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@ $(LIBS) $(EXPLLINKLIBS)\n");
 
 3464   fprintf(
fmk, 
"\t\t@rm -f $(PROGRAMS) $(PACKSO) $(PACKLIB) *Dict.* *.def *.exp \\\n");
 
 3465   fprintf(
fmk, 
"\t\t   *.so *.lib *.dll *.d *.log .def so_locations\n");
 
 3466   fprintf(
fmk, 
"\t\t@rm -rf cxx_repository\n");
 
 3473   fprintf(
fmk, 
"\t\t@echo \"Generating dictionary $@...\"\n");
 
 3477   fprintf(
fmk, 
"\t\t$(CXX) $(CXXFLAGS) -c $<\n");
 
 
 3496      Error(
"MakeProjectParProofInf", 
"directory path undefined!");
 
 3505                       ((
rcst == 0) ? 
"is not a directory" : 
"does not exist"));
 
 3511      Error(
"MakeProjectParProofInf", 
"package name undefined!");
 
 3525      Error(
"MakeProjectParProofInf", 
"cannot create file '%s' (errno: %d)",
 
 3531   fprintf(
f, 
"# Build libEvent library.\n");
 
 3534   fprintf(
f, 
"# The environment variables ROOTPROOFLITE and ROOTPROOFCLIENT can be used to\n");
 
 3535   fprintf(
f, 
"# adapt the script to the calling environment\n");
 
 3537   fprintf(
f, 
"# if test ! \"x$ROOTPROOFLITE\" = \"x\"; then\n");
 
 3538   fprintf(
f, 
"#    echo \"event-BUILD: PROOF-Lite node (session has $ROOTPROOFLITE workers)\"\n");
 
 3539   fprintf(
f, 
"# elif test ! \"x$ROOTPROOFCLIENT\" = \"x\"; then\n");
 
 3540   fprintf(
f, 
"#    echo \"event-BUILD: PROOF client\"\n");
 
 3542   fprintf(
f, 
"#    echo \"event-BUILD: standard PROOF node\"\n");
 
 3545   fprintf(
f, 
"if [ \"\" = \"clean\" ]; then\n");
 
 3553   fprintf(
f, 
"if [ $? != \"0\" ] ; then\n");
 
 3569      Error(
"MakeProjectParProofInf", 
"cannot create file '%s' (errno: %d)",
 
 3578   fprintf(
f, 
"// The environment variables ROOTPROOFLITE and ROOTPROOFCLIENT can be used to\n");
 
 3579   fprintf(
f, 
"// adapt the macro to the calling environment\n");
 
 3581   fprintf(
f, 
"//   if (gSystem->Getenv(\"ROOTPROOFLITE\")) {\n");
 
 3582   fprintf(
f, 
"//      Printf(\"event-SETUP: PROOF-Lite node (session has %%s workers)\",\n");
 
 3583   fprintf(
f, 
"//                                   gSystem->Getenv(\"ROOTPROOFLITE\"));\n");
 
 3584   fprintf(
f, 
"//   } else if (gSystem->Getenv(\"ROOTPROOFCLIENT\")) {\n");
 
 3585   fprintf(
f, 
"//      Printf(\"event-SETUP: PROOF client\");\n");
 
 3587   fprintf(
f, 
"//      Printf(\"event-SETUP: standard PROOF node\");\n");
 
 3590   fprintf(
f, 
"   if (gSystem->Load(\"lib%s\") == -1)\n", 
pack);
 
 
 3644            if (!base) 
continue;
 
 3682                  Warning(
"ReadStreamerInfo",
"%s has a %s in the list of TStreamerInfo.", 
GetName(), 
info->IsA()->GetName());
 
 3691         if (
info->GetElements()==0) {
 
 3692            Warning(
"ReadStreamerInfo",
"The StreamerInfo for %s does not have a list of elements.",
info->GetName());
 
 3702            info->BuildCheck(
this);
 
 3710            else if (!
isstl && !
info->GetClass()->IsSyntheticPair()) {
 
 3711               printf(
"ReadStreamerInfo, class:%s, illegal uid=%d\n",
info->GetName(),uid);
 
 3713            if (
gDebug > 0) 
printf(
" -class: %s version: %d info read at slot %d\n",
info->GetName(), 
info->GetClassVersion(),uid);
 
 
 3787      Info(
"WriteProcessID", 
"name=%s, file=%s", name, 
GetName());
 
 
 3828         if (
gDebug > 0) 
printf(
" -class: %s info number %d saved\n",
info->GetName(),uid);
 
 3835               if (
gDebug > 0) 
printf(
" -class: %s stored the I/O customization rules\n",
info->GetName());
 
 
 3887                "you want to read through a cache, but you have no valid cache " 
 3888                "directory set - reading remotely");
 
 3889      ::Info(
"TFile::OpenFromCache", 
"set cache directory using TFile::SetCacheFileDir()");
 
 3897                      "you want to read through a cache, but you are reading " 
 3898                      "local files - CACHEREAD disabled");
 
 3909            ::Warning(
"TFile::OpenFromCache",
"you want to read through a cache, but I " 
 3910                      "cannot create the directory %s - CACHEREAD disabled",
 
 3930                  if (
objTags->GetEntries() == 2) {
 
 3969                  cfurl += 
"?filetype=raw";
 
 3972                  ropt += 
"&filetype=raw";
 
 3985                     ::Error(
"TFile::OpenFromCache",
 
 3986                             "cannot open the cache file to check cache consistency");
 
 3991                     ::Error(
"TFile::OpenFromCache",
 
 3992                             "cannot open the remote file to check cache consistency");
 
 4002                        ::Warning(
"TFile::OpenFromCache", 
"the header of the cache file " 
 4003                                  "differs from the remote file - forcing an update");
 
 4007                     ::Warning(
"TFile::OpenFromCache", 
"the header of the cache and/or " 
 4008                               "remote file are not readable - forcing an update");
 
 4026                            "you want to read through a cache, but I " 
 4027                            "cannot make a cache copy of %s - CACHEREAD disabled",
 
 
 4104      ::Error(
"TFile::Open", 
"no url specified");
 
 4113   if (
gEnv->
GetValue(
"TFile.CrossProtocolRedirects", 1) == 1) {
 
 4121                  if (!
f->IsZombie()) {
 
 4141      while (!(
sto.IsDigit()) && !(
sto.IsNull())) { 
sto.Remove(
sto.Length()-1,1); }
 
 4142      if (!(
sto.IsNull())) {
 
 4145         if (
gDebug > 0) 
::Info(
"TFile::Open", 
"timeout of %d millisec requested", 
toms);
 
 4147         sto.Insert(0, 
"TIMEOUT=");
 
 4165                  ::Info(
"TFile::Open", 
"waited %d millisec for asynchronous open", 
toms - 
xtms);
 
 4167                  ::Info(
"TFile::Open", 
"timeout option not supported (requires asynchronous" 
 4179         ::Warning(
"TFile::Open", 
"incomplete 'TIMEOUT=' option specification - ignored");
 
 4180         opts.ReplaceAll(
"TIMEOUT=", 
"");
 
 4255            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name))) {
 
 4256               if (
h->LoadPlugin() == -1)
 
 4264            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name))) {
 
 4265               if (
h->LoadPlugin() == -1)
 
 4273            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name)) &&
 
 4274                h->LoadPlugin() == 0) {
 
 4275               name.ReplaceAll(
"file:", 
"");
 
 4283            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name.Data()))) {
 
 4284               if (
h->LoadPlugin() == -1)
 
 4300      if (
f && 
f->IsZombie()) {
 
 4323       f && 
f->IsWritable() && !
f->IsRaw()) {
 
 
 4367      ::Error(
"TFile::AsyncOpen", 
"no url specified");
 
 4405         if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name)) &&
 
 4406            (!
strcmp(
h->GetClass(),
"TXNetFile") || !
strcmp(
h->GetClass(),
"TNetXNGFile"))
 
 4407            && 
h->LoadPlugin() == 0) {
 
 
 4463      if ((
f = fh->
GetFile()) && !(
f->IsZombie())) {
 
 4466                      !
strcmp(
f->GetOption(),
"RECREATE") ||
 
 4477      if (
f) 
f->fAsyncHandle = fh;
 
 
 4489#if defined(R__WINGCC) 
 4493#elif defined(R__SEEK64) 
 
 4505   if (fd < 0) 
return 0;
 
 
 4514   return ::read(fd, buf, 
len);
 
 
 4522   return ::write(fd, buf, 
len);
 
 
 4533#if defined (R__SEEK64) 
 
 4565   return ::_commit(fd);
 
 
 4636   if (!
cached.EndsWith(
"/"))
 
 4643         ::Error(
"TFile::SetCacheFileDir", 
"no sufficient permissions on cache directory %s or cannot create it", 
TString(
cachedir).Data());
 
 
 4700      ::Error(
"TFile::ShrinkCacheFileDir", 
"cannot create the cache tag file %s", 
cachetagfile.Data());
 
 4708#if defined(R__WIN32) 
 4709   cmd = 
"echo <TFile::ShrinkCacheFileDir>: cleanup to be implemented";
 
 4710#elif defined(R__MACOSX) 
 4711   cmd.
Form(
"perl -e 'my $cachepath = \"%s\"; my $cachesize = %lld;my $findcommand=\"find $cachepath -type f -exec stat -f \\\"\\%%a::\\%%N::\\%%z\\\" \\{\\} \\\\\\;\";my $totalsize=0;open FIND, \"$findcommand | sort -k 1 |\";while (<FIND>) { my ($accesstime, $filename, $filesize) = split \"::\",$_; $totalsize += $filesize;if ($totalsize > $cachesize) {if ( ( -e \"${filename}.ROOT.cachefile\" ) || ( -e \"${filename}\" ) ) {unlink \"$filename.ROOT.cachefile\";unlink \"$filename\";}}}close FIND;' ", 
fgCacheFileDir.Data(),
shrinksize);
 
 4713   cmd.Form(
"perl -e 'my $cachepath = \"%s\"; my $cachesize = %lld;my $findcommand=\"find $cachepath -type f -exec stat -c \\\"\\%%x::\\%%n::\\%%s\\\" \\{\\} \\\\\\;\";my $totalsize=0;open FIND, \"$findcommand | sort -k 1 |\";while (<FIND>) { my ($accesstime, $filename, $filesize) = split \"::\",$_; $totalsize += $filesize;if ($totalsize > $cachesize) {if ( ( -e \"${filename}.ROOT.cachefile\" ) || ( -e \"${filename}\" ) ) {unlink \"$filename.ROOT.cachefile\";unlink \"$filename\";}}}close FIND;' ", 
fgCacheFileDir.Data(),
shrinksize);
 
 4716   tagfile->WriteBuffer(cmd, 4096);
 
 4720      ::Error(
"TFile::ShrinkCacheFileDir", 
"error executing clean-up script");
 
 
 4806         if (
u.GetPort() == 
uref.GetPort()) {
 
 4808            if (!
strcmp(
u.GetHostFQDN(), 
uref.GetHostFQDN())) {
 
 
 4832   if (re.Match(
name)) {
 
 4849      if (
opts.Contains(
"remote=1"))
 
 4851      else if (
opts.Contains(
"remote=0"))
 
 4858            const char *
fname = 
url.GetFileAndOptions();
 
 4860            if (
fname[0] == 
'/') {
 
 4865            } 
else if (
fname[0] == 
'~' || 
fname[0] == 
'$') {
 
 4889   } 
else if (
TPMERegexp(
"^(http[s]?|s3http[s]?|[a]?s3|gs|gshttp[s]?){1}:", 
"i").Match(
name)) {
 
 
 4919   if (of && (of->
GetSize() > 0)) {
 
 4923         if (
f->Matches(
name))
 
 
 4936   if (handle && handle->
fFile) {
 
 
 4966   if (of && (of->
GetSize() > 0)) {
 
 4970         if (
f->Matches(
name))
 
 4975   return (
const TUrl *)
nullptr;
 
 
 4985   for (
int l = 0; 
l < 20; 
l++) {
 
 
 5025   if (opt != 
"") opt += 
"&";
 
 5032   dURL.SetOptions(opt);
 
 5047         dURL.SetOptions(opt);
 
 5053      ::Error(
"TFile::Cp", 
"cannot open destination file %s", 
dst);
 
 5066      ::Error(
"TFile::Cp", 
"cannot allocate the copy buffer");
 
 5097      read   = 
sfile->GetBytesRead() - b0;
 
 5098      if ((read <= 0) || 
readop) {
 
 5099         ::Error(
"TFile::Cp", 
"cannot read from source file %s. readsize=%lld read=%lld readop=%d",
 
 5108         ::Error(
"TFile::Cp", 
"cannot write %lld bytes to destination file %s", read, 
dst);
 
 
 5150   if (opt != 
"") opt += 
"&";
 
 5157   sURL.SetOptions(opt);
 
 5165      ::Error(
"TFile::Cp", 
"cannot open source file %s", 
src);
 
 
 5182#if defined(R__neverLINUX) && !defined(R__WINGCC) 
 5203#if defined(R__SEEK64) 
void frombuf(char *&buf, Bool_t *x)
 
void tobuf(char *&buf, Bool_t x)
 
virtual RooAbsTestStatistic * create(const char *name, const char *title, RooAbsReal &real, RooAbsData &data, const RooArgSet &projDeps, Configuration const &cfg)=0
 
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char cname
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
 
Option_t Option_t TPoint TPoint const char mode
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t bytes
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
R__EXTERN TPluginManager * gPluginMgr
 
R__EXTERN TVirtualMutex * gROOTMutex
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
Bool_t R_ISDIR(Int_t mode)
 
R__EXTERN TSystem * gSystem
 
R__EXTERN void **(* gThreadTsd)(void *, Int_t)
 
R__EXTERN TVirtualMonitoringWriter * gMonitoringWriter
 
#define R__LOCKGUARD(mutex)
 
#define R__WRITE_LOCKGUARD(mutex)
 
#define R__READ_LOCKGUARD(mutex)
 
This class is a thread-safe associative collection connecting a 256 bits digest/hash to a collection ...
 
const_iterator end() const
 
const char * GetMemberName() const
 
virtual Int_t SetCurrentMember()=0
 
const char * GetArchiveName() const
 
TArchiveMember * GetMember() const
 
static TArchiveFile * Open(const char *url, TFile *file)
Return proper archive file handler depending on passed url.
 
Long64_t GetMemberFilePosition() const
Return position in archive of current member.
 
virtual Int_t OpenArchive()=0
 
Long64_t GetDecompressedSize() const
 
Array of chars or bytes (8 bits per element).
 
void Set(Int_t n) override
Set size of this array to n chars.
 
Buffer base class used for serializing objects.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
Bool_t HasInterpreterInfo() const
 
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
 
static Bool_t AddRule(const char *rule)
Add a schema evolution customization rule.
 
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
virtual bool UseRWLock(Bool_t enable=true)
Set this collection to use a RW lock upon access, making it thread safe.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
static void GetDateTime(UInt_t datetime, Int_t &date, Int_t &time)
Static function that returns the date and time.
 
void ReadBuffer(char *&buffer)
Decode Date/Time from output buffer, used by I/O system.
 
A ROOT file is structured in Directories (like a file system).
 
void Close(Option_t *option="") override
Delete all objects from memory and directory structure itself.
 
Bool_t cd() override
Change current directory to "this" directory.
 
Bool_t IsWritable() const override
 
void Delete(const char *namecycle="") override
Delete Objects or/and keys in a directory.
 
Int_t AppendKey(TKey *key) override
Insert key in the linked list of keys of this directory.
 
Int_t ReadKeys(Bool_t forceRead=kTRUE) override
Read the linked list of keys.
 
TDatime fDatimeM
Date and time of last modification.
 
void Save() override
Save recursively all directory keys and headers.
 
Int_t fNbytesKeys
Number of bytes for the keys.
 
Int_t GetNkeys() const override
 
Long64_t fSeekKeys
Location of Keys record on file.
 
Int_t Sizeof() const override
Return the size in bytes of the directory header.
 
Long64_t fSeekParent
Location of parent directory on file.
 
void BuildDirectoryFile(TFile *motherFile, TDirectory *motherDir)
Initialise directory to defaults.
 
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override
Write all objects in memory to disk.
 
Long64_t fSeekDir
Location of directory on file.
 
Int_t fNbytesName
Number of bytes in TNamed at creation time.
 
TDatime fDatimeC
Date and time when directory is created.
 
Bool_t fWritable
True if directory is writable.
 
Int_t WriteTObject(const TObject *obj, const char *name=nullptr, Option_t *option="", Int_t bufsize=0) override
Write object obj to this directory.
 
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
 
void FillBuffer(char *&buffer) override
Encode directory header into output buffer.
 
void SetWritable(Bool_t writable=kTRUE) override
Set the new value of fWritable recursively.
 
TList * fKeys
Pointer to keys list in memory.
 
void ls(Option_t *option="") const override
List Directory contents.
 
TDirectory::TContext keeps track and restore the current directory.
 
Describe directory structure in memory.
 
virtual TList * GetList() const
 
void SetName(const char *newname) override
Set the name for directory If the directory name is changed after the directory was written once,...
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
A cache when reading files over the network.
 
virtual Int_t ReadBuffer(char *buf, Long64_t pos, Int_t len)
Read buffer at position pos.
 
virtual void Close(Option_t *option="")
Close out any threads or asynchronous fetches used by the underlying implementation.
 
virtual void SetFile(TFile *file, TFile::ECacheAction action=TFile::kDisconnect)
Set the file using this cache and reset the current blocks (if any).
 
A cache when writing files over the network.
 
virtual Bool_t Flush()
Flush the current write buffer to the file.
 
virtual Int_t ReadBuffer(char *buf, Long64_t pos, Int_t len)
Called by the read cache to check if the requested data is not in the write cache buffer.
 
virtual Int_t GetBytesInCache() const
 
virtual Int_t WriteBuffer(const char *buf, Long64_t pos, Int_t len)
Write buffer at position pos in the write buffer.
 
Class holding info about the file being opened.
 
TFile * fFile
TFile instance of the file being opened.
 
const char * GetOpt() const
 
Bool_t Matches(const char *name)
Return kTRUE if this async request matches the open request specified by 'url'.
 
Int_t GetCompress() const
 
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
static std::atomic< Long64_t > fgBytesRead
Number of bytes read by all TFile objects.
 
Int_t fReadCalls
Number of read calls ( not counting the cache calls )
 
static void SetFileBytesWritten(Long64_t bytes=0)
 
static Bool_t fgCacheFileForce
Indicates, to force all READ to CACHEREAD.
 
Long64_t fBytesRead
Number of bytes read from this file.
 
virtual TProcessID * ReadProcessID(UShort_t pidf)
The TProcessID with number pidf is read from this file.
 
void ls(Option_t *option="") const override
List file contents.
 
virtual void Seek(Long64_t offset, ERelativeTo pos=kBeg)
Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
 
static Bool_t GetOnlyStaged()
Returns staged only flag.
 
static void IncrementFileCounter()
 
static Bool_t ShrinkCacheFileDir(Long64_t shrinkSize, Long_t cleanupInteval=0)
Try to shrink the cache to the desired size.
 
Long64_t fSeekFree
Location on disk of free segments structure.
 
static Int_t fgReadaheadSize
Readahead buffer size.
 
void FillBuffer(char *&buffer) override
Encode file output buffer.
 
Double_t fSum2Buffer
Sum of squares of buffer sizes of objects written so far.
 
static void SetReadaheadSize(Int_t bufsize=256000)
 
static Bool_t fgCacheFileDisconnected
Indicates, we trust in the files in the cache dir without stat on the cached file.
 
const TList * GetStreamerInfoCache()
Returns the cached list of StreamerInfos used in this file.
 
static Bool_t GetReadStreamerInfo()
If the streamerinfos are to be read at file opening.
 
TArchiveFile * fArchive
!Archive file from which we read this file
 
virtual Int_t SysSync(Int_t fd)
Interface to system fsync. All arguments like in POSIX fsync().
 
virtual Int_t ReOpen(Option_t *mode)
Reopen a file with a different access mode.
 
virtual void ReadStreamerInfo()
Read the list of StreamerInfo from this file.
 
virtual Bool_t Matches(const char *name)
Return kTRUE if 'url' matches the coordinates of this file.
 
virtual void SetCacheRead(TFileCacheRead *cache, TObject *tree=nullptr, ECacheAction action=kDisconnect)
Set a pointer to the read cache.
 
TArrayC * fClassIndex
!Index of TStreamerInfo classes written to this file
 
static Long64_t GetFileBytesWritten()
Static function returning the total number of bytes written to all files.
 
virtual InfoListRet GetStreamerInfoListImpl(bool lookupSICache)
See documentation of GetStreamerInfoList for more details.
 
static void SetReadStreamerInfo(Bool_t readinfo=kTRUE)
Specify if the streamerinfos must be read at file opening.
 
Bool_t fNoAnchorInName
!True if we don't want to force the anchor to be appended to the file name
 
static void SetFileBytesRead(Long64_t bytes=0)
 
Long64_t fSeekInfo
Location on disk of StreamerInfo record.
 
void Paint(Option_t *option="") override
Paint all objects in the file.
 
Int_t GetBestBuffer() const
Return the best buffer size of objects on this file.
 
TList * fOpenPhases
!Time info about open phases
 
virtual void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
See comments for function SetCompressionSettings.
 
TFileCacheWrite * GetCacheWrite() const
Return a pointer to the current write cache.
 
static void SetFileReadCalls(Int_t readcalls=0)
 
static TString fgCacheFileDir
Directory where to locally stage files.
 
virtual Int_t SysRead(Int_t fd, void *buf, Int_t len)
Interface to system read. All arguments like in POSIX read().
 
Int_t fVersion
File format version.
 
void Print(Option_t *option="") const override
Print all objects in the file.
 
static std::atomic< Long64_t > fgFileCounter
Counter for all opened files.
 
virtual EAsyncOpenStatus GetAsyncOpenStatus()
 
void Streamer(TBuffer &) override
Stream a TFile object.
 
static UInt_t GetOpenTimeout()
Returns open timeout (in ms).
 
static void CpProgress(Long64_t bytesread, Long64_t size, TStopwatch &watch)
Print file copy progress.
 
static Bool_t fgOnlyStaged
Before the file is opened, it is checked, that the file is staged, if not, the open fails.
 
virtual Int_t GetNProcessIDs() const
 
Bool_t fMustFlush
!True if the file buffers must be flushed
 
Int_t WriteBufferViaCache(const char *buf, Int_t len)
Write buffer via cache.
 
static Long64_t GetFileBytesRead()
Static function returning the total number of bytes read from all files.
 
Int_t ReadBufferViaCache(char *buf, Int_t len)
Read buffer via cache.
 
virtual TKey * CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
Creates key for object and converts data to buffer.
 
virtual void WriteFree()
Write FREE linked list on the file.
 
static Int_t GetReadaheadSize()
Static function returning the readahead buffer size.
 
~TFile() override
File destructor.
 
virtual Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf)
Read the nbuf blocks described in arrays pos and len.
 
static Long64_t GetFileCounter()
 
TMap * fCacheReadMap
!Pointer to the read cache (if any)
 
Long64_t fBEGIN
First used byte in file.
 
Int_t MakeProjectParProofInf(const char *packname, const char *proofinfdir)
Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'.
 
virtual UShort_t WriteProcessID(TProcessID *pid)
Check if the ProcessID pidd is already in the file, if not, add it and return the index number in the...
 
virtual void MakeProject(const char *dirname, const char *classes="*", Option_t *option="new")
Generate source code necessary to access the objects stored in the file.
 
Long64_t fArchiveOffset
!Offset at which file starts in archive
 
Int_t fNbytesInfo
Number of bytes for StreamerInfo record.
 
virtual Long64_t GetSize() const
Returns the current file size.
 
virtual Bool_t IsOpen() const
Returns kTRUE in case file is open and kFALSE if file is not open.
 
TFileOpenHandle * fAsyncHandle
!For proper automatic cleanup
 
static Bool_t SetOnlyStaged(Bool_t onlystaged)
Sets only staged flag.
 
virtual Int_t GetErrno() const
Method returning errno.
 
virtual void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
Used to specify the compression level and algorithm.
 
static Bool_t fgReadInfo
if true (default) ReadStreamerInfo is called when opening a file
 
virtual void Init(Bool_t create)
Initialize a TFile object.
 
Long64_t GetRelOffset() const
 
static TFileOpenHandle * AsyncOpen(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Submit an asynchronous open request.
 
virtual void SetCacheWrite(TFileCacheWrite *cache)
Set a pointer to the write cache.
 
TString fOption
File options.
 
virtual Bool_t WriteBuffer(const char *buf, Int_t len)
Write a buffer to the file.
 
void SumBuffer(Int_t bufsize)
Increment statistics for buffer sizes of objects in this file.
 
static const char * GetCacheFileDir()
Get the directory where to locally stage/cache remote files.
 
EAsyncOpenStatus
Asynchronous open request status.
 
virtual void WriteStreamerInfo()
Write the list of TStreamerInfo as a single object in this file The class Streamer description for al...
 
virtual Long64_t GetBytesWritten() const
Return the total number of bytes written so far to the file.
 
Int_t fCompress
Compression level and algorithm.
 
static TFile *& CurrentFile()
Return the current ROOT file if any.
 
virtual void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
See comments for function SetCompressionSettings.
 
virtual const TUrl * GetEndpointUrl() const
 
Int_t fNbytesFree
Number of bytes for free segments structure.
 
static constexpr Version_t Class_Version()
 
virtual void ResetErrno() const
Method resetting the errno.
 
Int_t Sizeof() const override
Return the size in bytes of the file header.
 
Bool_t FlushWriteCache()
Flush the write cache if active.
 
virtual void IncrementProcessIDs()
 
Bool_t fIsPcmFile
!True if the file is a ROOT pcm file.
 
TFileCacheRead * fCacheRead
!Pointer to the read cache (if any)
 
virtual Int_t SysClose(Int_t fd)
Interface to system close. All arguments like in POSIX close().
 
TFile()
File default Constructor.
 
Char_t fUnits
Number of bytes for file pointers.
 
TObjArray * fProcessIDs
!Array of pointers to TProcessIDs
 
static EFileType GetType(const char *name, Option_t *option="", TString *prefix=nullptr)
Resolve the file type as a function of the protocol field in 'name'.
 
virtual void ShowStreamerInfo()
Show the StreamerInfo of all classes written to this file.
 
virtual Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence)
Interface to system lseek.
 
virtual Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
Return file stat information.
 
virtual Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode)
Interface to system open. All arguments like in POSIX open().
 
ECacheAction
TTreeCache flushing semantics.
 
static UInt_t SetOpenTimeout(UInt_t timeout)
Sets open timeout time (in ms). Returns previous timeout value.
 
virtual void ReadFree()
Read the FREE linked list.
 
virtual Bool_t Cp(const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
Allows to copy this file to the dst URL.
 
static ROOT::Internal::RConcurrentHashColl fgTsSIHashes
!TS Set of hashes built from read streamer infos
 
Long64_t fBytesReadExtra
Number of extra bytes (overhead) read by the readahead buffer.
 
Long64_t fBytesWrite
Number of bytes written to this file.
 
Bool_t fIsRootFile
!True is this is a ROOT file, raw file otherwise
 
virtual void Flush()
Synchronize a file's in-memory and on-disk states.
 
TList * fFree
Free segments linked list table.
 
virtual Bool_t ReadBufferAsync(Long64_t offs, Int_t len)
 
void Delete(const char *namecycle="") override
Delete object namecycle.
 
Bool_t fInitDone
!True if the file has been initialized
 
virtual void DrawMap(const char *keys="*", Option_t *option="")
Draw map of objects in this file.
 
virtual void MakeFree(Long64_t first, Long64_t last)
Mark unused bytes on the file.
 
TFileCacheWrite * fCacheWrite
!Pointer to the write cache (if any)
 
TString fRealName
Effective real file name (not original url)
 
virtual void SetOffset(Long64_t offset, ERelativeTo pos=kBeg)
Set position from where to start reading.
 
Long64_t fOffset
!Seek offset cache
 
static std::atomic< Long64_t > fgBytesWrite
Number of bytes written by all TFile objects.
 
TList * fInfoCache
!Cached list of the streamer infos in this file
 
virtual Int_t GetBytesToPrefetch() const
Max number of bytes to prefetch.
 
static UInt_t fgOpenTimeout
Timeout for open operations in ms - 0 corresponds to blocking i/o.
 
Int_t MakeProjectParMake(const char *packname, const char *filename)
Create makefile at 'filemake' for PAR package 'pack'.
 
Long64_t fEND
Last used byte in file.
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
static Bool_t SetCacheFileDir(std::string_view cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Sets the directory where to locally stage/cache remote files.
 
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) override
Write memory objects to this file.
 
EAsyncOpenStatus fAsyncOpenStatus
!Status of an asynchronous open request
 
bool fGlobalRegistration
! if true, bypass use of global lists
 
Double_t fSumBuffer
Sum of buffer sizes of objects written so far.
 
Bool_t fIsArchive
!True if this is a pure archive file
 
TObjArray * GetListOfProcessIDs() const
 
void Draw(Option_t *option="") override
Fill Graphics Structure and Paint.
 
void Close(Option_t *option="") override
Close a file.
 
TClass * IsA() const override
 
static std::atomic< Int_t > fgReadCalls
Number of bytes read from all TFile objects.
 
virtual Int_t Recover()
Attempt to recover file if not correctly closed.
 
virtual TList * GetStreamerInfoList() final
Read the list of TStreamerInfo objects written to this file.
 
virtual void WriteHeader()
Write File Header.
 
@ k630forwardCompatibility
 
static TFile * OpenFromCache(const char *name, Option_t *="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Open a file for reading through the file cache.
 
Int_t fNProcessIDs
Number of TProcessID written to this file.
 
Int_t fWritten
Number of objects written so far.
 
Int_t GetRecordHeader(char *buf, Long64_t first, Int_t maxbytes, Int_t &nbytes, Int_t &objlen, Int_t &keylen)
Read the logical record header starting at a certain postion.
 
virtual Bool_t ReadBuffer(char *buf, Int_t len)
Read a buffer from the file.
 
Float_t GetCompressionFactor()
Return the file compression factor.
 
virtual Int_t SysWrite(Int_t fd, const void *buf, Int_t len)
Interface to system write. All arguments like in POSIX write().
 
static Int_t GetFileReadCalls()
Static function returning the total number of read calls from all files.
 
TFileCacheRead * GetCacheRead(const TObject *tree=nullptr) const
Return a pointer to the current read cache.
 
Option_t * GetOption() const override
 
static TList * fgAsyncOpenRequests
 
TFree * AddFree(TList *lfree, Long64_t first, Long64_t last)
Add a new free segment to the list of free segments.
 
static void MakeFunctor(const char *name, const char *type, GlobFunc &func)
 
Book space in a file, create I/O buffers, to fill them, (un)compress them.
 
void Delete(Option_t *option="") override
Delete an object from the file.
 
virtual Long64_t GetSeekKey() const
 
virtual const char * GetClassName() const
 
void ReadKeyBuffer(char *&buffer)
Decode input buffer.
 
virtual Int_t WriteFile(Int_t cycle=1, TFile *f=nullptr)
Write the encoded object supported by this key.
 
virtual char * GetBuffer() const
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
 
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
static void GenerateMissingStreamerInfos(TList *extrainfos, TStreamerElement *element)
Generate an empty StreamerInfo for types that are used in templates parameters but are not known in t...
 
static TString UpdateAssociativeToVector(const char *name)
 
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
 
void Add(TObject *obj) override
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
 
TObject * Remove(TObject *key) override
Remove the (key,value) pair with key from the map.
 
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
 
virtual void FillBuffer(char *&buffer)
Encode TNamed into output buffer.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual Int_t Sizeof() const
Return size of the TNamed part of the TObject.
 
Iterator of object array.
 
TObject * Next() override
Return next object in array. Returns 0 when no more objects in array.
 
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
 
Wrapper around a TObject so it can be stored in a TList.
 
Collectable string class.
 
Mother of all ROOT objects.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual UInt_t GetUniqueID() const
Return the unique object id.
 
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
 
R__ALWAYS_INLINE Bool_t IsOnHeap() const
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
R__ALWAYS_INLINE Bool_t IsZombie() const
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
 
@ kCanDelete
if object in a list can be deleted
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Wrapper for PCRE library (Perl Compatible Regular Expressions).
 
Longptr_t ExecPlugin(int nargs)
 
A TProcessID identifies a ROOT job in a unique way in time and space.
 
Int_t IncrementCount()
Increase the reference count to this object.
 
void Clear(Option_t *option="") override
delete the TObjArray pointing to referenced objects this function is called by TFile::Close("R")
 
void CheckInit()
Initialize fObjects.
 
static TObjArray * GetPIDs()
static: returns array of TProcessIDs
 
static TProcessID * GetSessionProcessID()
static function returning the pointer to the session TProcessID
 
Int_t DecrementCount()
The reference fCount is used to delete the TProcessID in the TFile destructor when fCount = 0.
 
static TProcessID * GetPID()
static: returns pointer to current TProcessID
 
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
 
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
 
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
 
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
 
Sequenceable collection abstract base class.
 
void SetBaseCheckSum(UInt_t cs)
 
Describes a persistent version of a class.
 
void ToLower()
Change string to lower-case.
 
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
void ToUpper()
Change string to upper case.
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
virtual void ReadBuffer(char *&buffer)
Read string from I/O buffer.
 
virtual FILE * TempFileName(TString &base, const char *dir=nullptr, const char *suffix=nullptr)
Create a secure temporary file by appending a unique 6 letter string to base.
 
virtual const char * GetMakeSharedLib() const
Return the command line use to make a shared library.
 
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=nullptr)
Redirect standard output (stdout, stderr) to the specified file.
 
virtual void IgnoreInterrupt(Bool_t ignore=kTRUE)
If ignore is true ignore the interrupt signal, else restore previous behaviour.
 
virtual int Symlink(const char *from, const char *to)
Create a symbolic link from file1 to file2.
 
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 ~.
 
static Int_t GetErrno()
Static function returning system error number.
 
virtual int Chmod(const char *file, UInt_t mode)
Set the file permission bits. Returns -1 in case or error, 0 otherwise.
 
virtual void FreeDirectory(void *dirp)
Free a directory.
 
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
 
virtual int GetPid()
Get process id.
 
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
Copy a file.
 
virtual const char * GetIncludePath()
Get the list of include path.
 
virtual void ShowOutput(RedirectHandle_t *h)
Display the content associated with the redirection described by the opaque handle 'h'.
 
virtual Bool_t IsPathLocal(const char *path)
Returns TRUE if the url in 'path' points to the local file system.
 
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory.
 
virtual Int_t Exec(const char *shellcmd)
Execute a command.
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
 
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
 
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
 
virtual Bool_t ChangeDirectory(const char *path)
Change directory.
 
virtual int Rename(const char *from, const char *to)
Rename a file.
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
 
virtual const char * GetFlagsDebug() const
Return the debug flags.
 
virtual Bool_t IsAbsoluteFileName(const char *dir)
Return true if dir is an absolute pathname.
 
virtual const char * GetObjExt() const
Get the object file extension.
 
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
 
virtual const char * WorkingDirectory()
Return working directory.
 
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries.
 
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
 
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
 
virtual const char * GetSoExt() const
Get the shared library extension.
 
virtual TString GetDirName(const char *pathname)
Return the directory name in pathname.
 
virtual int Unlink(const char *name)
Unlink, i.e.
 
virtual const char * GetFlagsOpt() const
Return the optimization flags.
 
The TTimeStamp encapsulates seconds and ns since EPOCH.
 
This class defines a UUID (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDent...
 
void ReadBuffer(char *&buffer)
Stream UUID from input buffer.
 
void FillBuffer(char *&buffer)
Stream UUID into output buffer.
 
This class represents a WWW compatible URL.
 
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
 
const char * GetFile() const
 
const char * GetValueFromOptions(const char *key) const
Return a value for a given key from the URL options.
 
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
 
const char * GetOptions() const
 
const char * GetProtocol() const
 
Bool_t HasOption(const char *key) const
Returns true if the given key appears in the URL options list.
 
virtual Bool_t SendFileReadProgress(TFile *)
 
virtual Bool_t SendFileCloseEvent(TFile *)
 
virtual Bool_t SendFileWriteProgress(TFile *)
 
Abstract Interface class describing Streamer information for one class.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
R__EXTERN TVirtualRWMutex * gCoreMutex
 
ROOT::ESTLType STLKind(std::string_view type)
Converts STL container name to number.
 
bool IsStdPair(std::string_view name)
 
ROOT::ESTLType IsSTLCont(std::string_view type)
type : type name: vector<list<classA,allocator>,allocator> result: 0 : not stl container code of cont...
 
int GetSplit(const char *type, std::vector< std::string > &output, int &nestedLoc, EModType mode=TClassEdit::kNone)
Stores in output (after emptying it) the split type.
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
 
@ kUndefined
Undefined compression algorithm (must be kept the last of the list in case a new algorithm is added).
 
@ kUseMin
Compression level reserved when we are not sure what to use (1 is for the fastest compression)
 
Simple struct of the return value of GetStreamerInfoListImpl.