89#define _XOPEN_SOURCE 600 
  103#   include <sys/types.h> 
  108#include "RConfigure.h" 
  144#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) 
  190static struct AddPseudoGlobals {
 
  207      Info(
"TFile", 
"default ctor");
 
 
  347      ::Fatal(
"TFile::TFile", 
"ROOT system not initialized");
 
  353         gROOT->GetListOfClosedObjects()->Add(
this);
 
  365            "please use TFile::Open to access remote files:\n\tauto f = std::unique_ptr<TFile>{TFile::Open(\"%s\")};",
 
  452      Error(
"TFile", 
"file name is not specified");
 
  494            SysError(
"TFile", 
"could not delete %s (errno: %d)",
 
  505      Error(
"TFile", 
"file %s already exists", 
fname.Data());
 
  515         Error(
"TFile", 
"no write permission, could not open file %s", 
fname.Data());
 
  522         Error(
"TFile", 
"file %s does not exist", 
fname.Data());
 
  527         Error(
"TFile", 
"no read permission, could not open file %s", 
fname.Data());
 
  541         SysError(
"TFile", 
"file %s can not be opened", 
fname.Data());
 
  553         SysError(
"TFile", 
"file %s can not be opened for reading", 
fname.Data());
 
 
  594      gROOT->GetListOfClosedObjects()->Remove(
this);
 
  605      Info(
"~TFile", 
"dtor called for %s [%zx]", 
GetName(),(
size_t)
this);
 
 
  631         Error(
"Init", 
"archive %s can only be opened in read mode", 
GetName());
 
  650         Error(
"Init", 
"member %s not found in archive %s",
 
  673      if (
gEnv->
GetValue(
"TFile.v630forwardCompatibility", 0) == 1)
 
  693      char *header = 
new char[
kBEGIN+200];
 
  698         Error(
"Init",
"%s failed to read the file type data.",
 
  705      if (
strncmp(header, 
"root", 4)) {
 
  711      char *buffer = header + 4;    
 
  740         Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
 
  752            Warning(
"Init",
"file %s probably not closed, cannot read free segments",
GetName());
 
  762         Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
 
  769         header       = 
new char[
nbytes];
 
  774            Error(
"Init",
"%s failed to read the file header information at %lld (size=%d)",
 
  820         Error(
"Init",
"cannot read directory info of file %s", 
GetName());
 
  837      if (
gEnv->
GetValue(
"TFile.v630forwardCompatibility", 0) == 1)
 
  861               Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld, " 
  864               Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld",
 
  870               Warning(
"Init",
"file %s probably not closed, " 
  871                       "trying to recover", 
GetName());
 
  881            Warning(
"Init", 
"no keys recovered, file has been made a Zombie");
 
  889      gROOT->GetListOfFiles()->Add(
this);
 
  903               gROOT->GetListOfFiles()->Remove(
this);
 
  910               const auto separator = 
fVersion < 63200 ? 
"/" : 
".";
 
  912               const auto msg = 
"no StreamerInfo found in %s therefore preventing schema evolution when reading this file. " 
  913                                "The file was produced with ROOT version %d.%02d%s%02d, " 
  914                                "while the current version is %d.%02d.%02d";
 
  928      while ((key = (
TKey*)next())) {
 
  939      gROOT->GetListOfClosedObjects()->Add(
this);
 
 
  987      while ((key = iter()) != 
nullptr) {
 
 1045      gROOT->GetListOfFiles()->Remove(
this);
 
 1046      gROOT->GetListOfBrowsers()->RecursiveRemove(
this);
 
 1047      gROOT->GetListOfClosedObjects()->Add(
this);
 
 
 1121   if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFileDrawMap"))) {
 
 1122      if (
h->LoadPlugin() == -1)
 
 
 1179   if (
result >= (
double)std::numeric_limits<Int_t>::max()) {
 
 1180      return std::numeric_limits<Int_t>::max() -1;
 
 
 1197   char    *header = 
new char[
fBEGIN];
 
 
 1296   if (first < 
fBEGIN) 
return 0;
 
 1297   if (first > 
fEND)   
return 0;
 
 1302      Warning(
"GetRecordHeader",
"%s: parameter maxbytes = %d must be >= 4",
 
 1308      Warning(
"GetRecordHeader",
"%s: failed to read header data (maxbytes = %d)",
 
 
 1346         Error(
"GetSize", 
"cannot stat the file %s", 
GetName());
 
 
 1372   TList *list = 
nullptr;
 
 1375      auto key = std::make_unique<TKey>(
this);
 
 1377      auto buf = buffer.data();
 
 1381         Warning(
"GetRecordHeader",
"%s: failed to read the StreamerInfo data from disk.",
 
 1383         return {
nullptr, 1, 
hash};
 
 1393               Info(
"GetStreamerInfo", 
"The streamer info record for file %s has already been treated, skipping it.", 
GetName());
 
 1396            return {
nullptr, 0, 
hash};
 
 1399      key->ReadKeyBuffer(buf);
 
 1400      list = 
dynamic_cast<TList*
>(key->ReadObjWithBuffer(buffer.data()));
 
 1403      list = (
TList*)
Get(
"StreamerInfo"); 
 
 1407      Info(
"GetStreamerInfoList", 
"cannot find the StreamerInfo record in file %s",
 
 1409      return {
nullptr, 1, 
hash};
 
 1412   return {list, 0, 
hash};
 
 
 1485   char buffer[
sizeof(
Int_t)];
 
 
 1562   const unsigned char nDigits = std::log10(
fEND) + 1;
 
 1564   std::optional<ROOT::Detail::TKeyMapNode> 
lastNode;
 
 1568      switch (key.fType) {
 
 1570         Printf(
"Address = %" PRIu64 "\tNbytes = %u\t=====E R R O R=======", key.fAddr, key.fLen);
 
 1574         Printf(
"Address = %" PRIu64 "\tNbytes = %d\t=====G A P===========", key.fAddr, -key.fLen);
 
 1580            extrainfo.Form(
" name: %-16s  title: %s", key.fKeyName.c_str(), key.fKeyTitle.c_str());
 
 1584            if (key.fObjLen != 
static_cast<Int_t>(key.fLen) - key.fKeyLen) {
 
 1585               Float_t cx = 
static_cast<float>(key.fObjLen + key.fKeyLen) / key.fLen;
 
 1586               Printf(
"At:%-*" PRIu64 "  N=%-8u K=%-3d O=%-8d  %-14s CX = %5.2f %s", 
nDigits + 1, key.fAddr, key.fLen,
 
 1587                      key.fKeyLen, key.fObjLen, key.fClassName.c_str(), 
cx, 
extrainfo.Data());
 
 1589               Printf(
"At:%-*" PRIu64 "  N=%-8u K=%-3d O=%-8d  %-14s CX =  1    %s", 
nDigits + 1, key.fAddr, key.fLen,
 
 1590                      key.fKeyLen, key.fObjLen, key.fClassName.c_str(), 
extrainfo.Data());
 
 1595            if (key.fObjLen != 
static_cast<Int_t>(key.fLen) - key.fKeyLen) {
 
 1596               Float_t cx = 
static_cast<float>(key.fObjLen + key.fKeyLen) / key.fLen;
 
 1598                      key.fLen, key.fClassName.c_str(), 
cx, 
extrainfo.Data());
 
 1601                      key.fLen, key.fClassName.c_str(), 
extrainfo.Data());
 
 
 1633   const std::uint64_t 
idcur = fCurAddr;
 
 1636      return std::nullopt;
 
 1651   char *buffer = header;
 
 1669   frombuf(buffer, &node.fKeyVersion);
 
 1670   frombuf(buffer, &node.fObjLen);
 
 1671   frombuf(buffer, &node.fDatime);
 
 1672   frombuf(buffer, &node.fKeyLen);
 
 1673   frombuf(buffer, &node.fCycle);
 
 1674   if (node.fKeyVersion > 1000) {
 
 1675      frombuf(buffer, &node.fSeekKey);
 
 1676      frombuf(buffer, &node.fSeekPdir);
 
 1685   const auto readString = [&buffer, &header](
bool skipCheck = 
false) {
 
 1709   node.fClassName = readString(
true);
 
 1712      node.fClassName = 
"FreeSegments";
 
 1714      node.fClassName = 
"StreamerInfo";
 
 1716      node.fClassName = 
"KeysList";
 
 1718   node.fKeyName = readString();
 
 1719   node.fKeyTitle = readString();
 
 
 1739   Printf(
"TFile: name=%s, title=%s, option=%s", GetName(), GetTitle(), GetOption());
 
 
 1761      if ((
st = ReadBufferViaCache(buf, 
len))) {
 
 1770      while ((
siz = SysRead(fD, buf, 
len)) < 0 && GetErrno() == 
EINTR)
 
 1774         SysError(
"ReadBuffer", 
"error reading from file %s", GetName());
 
 1778         Error(
"ReadBuffer", 
"error reading all requested bytes from file %s, got %ld of %d",
 
 
 1806      if ((
st = ReadBufferViaCache(buf, 
len))) {
 
 1817      while ((
siz = SysRead(fD, buf, 
len)) < 0 && GetErrno() == 
EINTR)
 
 1821         SysError(
"ReadBuffer", 
"error reading from file %s", GetName());
 
 1825         Error(
"ReadBuffer", 
"error reading all requested bytes from file %s, got %ld of %d",
 
 
 1857         if (ReadBufferAsync(pos[
j], 
len[
j])) {
 
 1867   fCacheRead = 
nullptr;
 
 1870   char *
buf2 = 
nullptr;
 
 1888            if (!
buf2) 
buf2 = 
new char[fgReadaheadSize];
 
 1901            fBytesReadExtra += extra;
 
 1902            fBytesRead      -= extra;
 
 1903            fgBytesRead     -= extra;
 
 
 1924      Int_t st = fCacheRead->ReadBuffer(buf, off, 
len);
 
 1929         SetOffset(off + 
len);
 
 1936      if (fWritable && fCacheWrite) {
 
 1937         if (fCacheWrite->ReadBuffer(buf, off, 
len) == 0) {
 
 1938            SetOffset(off + 
len);
 
 
 1970      afree->ReadBuffer(buffer);
 
 1972      if (
afree->GetLast() > fEND) 
break;
 
 
 1998      printf(
"ReadProcessID, name=%s, file=%s, pid=%zx\n",
pidname,GetName(),(
size_t)pid);
 
 2024      p->IncrementCount();
 
 
 2091   if ((
size = GetSize()) == -1) {             
 
 2092      Error(
"Recover", 
"cannot stat the file %s", GetName());
 
 2098   if (fWritable && !fFree) fFree  = 
new TList;
 
 2105   while (
idcur < fEND) {
 
 2110         Error(
"Recover",
"%s: failed to read the key data from disk at %lld.",
 
 2118         Error(
"Recover",
"Address = %lld\tNbytes = %d\t=====E R R O R=======", 
idcur, 
nbytes);
 
 2142      char *classname = 
nullptr;
 
 2144      classname = 
new char[
nwhc+1];
 
 2146      for (i = 0;i < 
nwhc; i++) 
frombuf(buffer, &classname[i]);
 
 2147      classname[
nwhci] = 
'\0';
 
 2151                               && 
strcmp(classname,
"TBasket")) {
 
 2152         key = 
new TKey(
this);
 
 2165      delete [] classname;
 
 
 2200   if (opt != 
"READ" && opt != 
"UPDATE") {
 
 2201      Error(
"ReOpen", 
"mode must be either READ or UPDATE, not %s", opt.
Data());
 
 2205   if (opt == fOption || (opt == 
"UPDATE" && fOption == 
"CREATE"))
 
 2208   if (opt == 
"READ") {
 
 2212      if (IsOpen() && IsWritable()) {
 
 2213         WriteStreamerInfo();
 
 2239      fD = SysOpen(fRealName, 
O_RDONLY, 0644);
 
 2244         SysError(
"ReOpen", 
"file %s can not be opened in read mode", GetName());
 
 2266         SysError(
"ReOpen", 
"file %s can not be opened in update mode", GetName());
 
 2272      if (fSeekFree > fBEGIN)
 
 2275         Warning(
"ReOpen",
"file %s probably not closed, cannot read free segments", GetName());
 
 
 2288         fOffset = 
offset + fArchiveOffset;
 
 2296            Error(
"SetOffset", 
"seeking from end in archive is not (yet) supported");
 
 
 2311         offset += fArchiveOffset;
 
 2320            Error(
"Seek", 
"seeking from end in archive is not (yet) supported");
 
 2325      SysError(
"Seek", 
"cannot seek to position %lld in file %s, retpos=%lld",
 
 
 2339   if (fCompress < 0) {
 
 2342      int level = fCompress % 100;
 
 
 2352   if (level < 0) level = 0;
 
 2353   if (level > 99) level = 99;
 
 2354   if (fCompress < 0) {
 
 
 2399      if (cache) fCacheReadMap->Add(tree, cache);
 
 2404         fCacheReadMap->Remove(tree);
 
 2409   else if (!tree && fCacheRead && (
action != kDoNotDisconnect)) fCacheRead->SetFile(0, 
action);
 
 
 2421   if (!cache && fCacheWrite) 
delete fCacheWrite;
 
 2422   fCacheWrite = cache;
 
 
 2438   if (
b.IsReading()) {
 
 
 2469   if (!IsWritable()) {
 
 2470      if (!TestBit(kWriteError)) {
 
 2472         Warning(
"Write", 
"file %s not opened in write mode", GetName());
 
 2478      if (!GetTitle() || 
strlen(GetTitle()) == 0)
 
 2479         Info(
"Write", 
"writing name = %s", GetName());
 
 2481         Info(
"Write", 
"writing name = %s title = %s", GetName(), GetTitle());
 
 2486   WriteStreamerInfo();
 
 
 2499   Error(
"Write const",
"A const TFile object should not be saved. We try to proceed anyway.");
 
 
 2509   if (IsOpen() && fWritable) {
 
 2512      if ((
st = WriteBufferViaCache(buf, 
len))) {
 
 2520      while ((
siz = SysWrite(fD, buf, 
len)) < 0 && GetErrno() == 
EINTR)  
 
 2525         SetBit(kWriteError); SetWritable(
kFALSE);
 
 2526         SysError(
"WriteBuffer", 
"error writing to file %s (%ld)", GetName(), (
Long_t)
siz);
 
 2530         SetBit(kWriteError);
 
 2531         Error(
"WriteBuffer", 
"error writing all requested bytes to file %s, wrote %ld of %d",
 
 2536      fgBytesWrite += 
siz;
 
 
 2552   if (!fCacheWrite) 
return 0;
 
 2556   if ((
st = fCacheWrite->WriteBuffer(buf, off, 
len)) < 0) {
 
 2557      SetBit(kWriteError);
 
 2558      Error(
"WriteBuffer", 
"error writing to cache");
 
 
 2577   if (fSeekFree != 0) {
 
 2578      MakeFree(fSeekFree, fSeekFree + fNbytesFree -1);
 
 2596         return (
TKey*)
nullptr;
 
 2618   char *start = buffer;
 
 2625      afree->FillBuffer(buffer);
 
 2634         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);
 
 
 2651   const char *root = 
"root";
 
 2652   char *
psave  = 
new char[fBEGIN];
 
 2653   char *buffer = 
psave;
 
 2655   memcpy(buffer, root, 4); buffer += 4;
 
 2663      tobuf(buffer, fNbytesFree);
 
 2665      tobuf(buffer, fNbytesName);
 
 2666      tobuf(buffer, fUnits);
 
 2667      tobuf(buffer, fCompress);
 
 2669      tobuf(buffer, fNbytesInfo);
 
 2671      tobuf(buffer, fEND);
 
 2672      tobuf(buffer, fSeekFree);
 
 2673      tobuf(buffer, fNbytesFree);
 
 2675      tobuf(buffer, fNbytesName);
 
 2676      tobuf(buffer, fUnits);
 
 2677      tobuf(buffer, fCompress);
 
 2678      tobuf(buffer, fSeekInfo);
 
 2679      tobuf(buffer, fNbytesInfo);
 
 2681   if (TestBit(kReproducible))
 
 2684      fUUID.FillBuffer(buffer);
 
 
 2772   } 
else if (opt.
Contains(
"recreate")) {
 
 2776            Error(
"MakeProject",
"cannot create directory '%s'",
dirname);
 
 2794         Error(
"MakeProject",
"cannot create directory %s, already existing",
dirname);
 
 2799         Error(
"MakeProject",
"cannot create directory '%s'",
dirname);
 
 2814      Error(
"MakeProject",
"file %s has no StreamerInfo", GetName());
 
 2829      Error(
"MakeProject",
"Directory name must not be empty.");
 
 2837      Error(
"MakeProject",
"Unable to create the source file %s.",
spath.Data());
 
 2840   fprintf(
sfp, 
"namespace std {}\nusing namespace std;\n");
 
 2844   fprintf(
sfp, 
"struct DeleteObjectFunctor {\n");
 
 2846   fprintf(
sfp, 
"   void operator()(const T *ptr) const {\n");
 
 2849   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2850   fprintf(
sfp, 
"   void operator()(const std::pair<T,Q> &) const {\n");
 
 2853   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2854   fprintf(
sfp, 
"   void operator()(const std::pair<T,Q*> &ptr) const {\n");
 
 2857   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2858   fprintf(
sfp, 
"   void operator()(const std::pair<T*,Q> &ptr) const {\n");
 
 2861   fprintf(
sfp, 
"   template <typename T, typename Q>\n");
 
 2862   fprintf(
sfp, 
"   void operator()(const std::pair<T*,Q*> &ptr) const {\n");
 
 2898            if( 
rule->IsRenameRule() || 
rule->IsAliasRule() )
 
 2901            if ( 
rule->HasTarget( 
el->GetName()) && 
rule->GetAttributes()[0] != 0 ) {
 
 2904               if (
attr.Contains(
"owner")) {
 
 2905                  if (
attr.Contains(
"notowner")) {
 
 2917         if ((
info->GetClass() && 
info->GetClassVersion() == 
info->GetClass()->GetClassVersion())
 
 2918             || (
info->GetClassVersion() > 
alternate->GetClassVersion()) ) {
 
 2941      if (
info->GetClassVersion()==-4) 
continue; 
 
 2970      Error(
"MakeProject",
"Cannot open output file:%s\n",path.
Data());
 
 3001      Error(
"MakeProject", 
"cannot open file %s", path.
Data());
 
 3017      Error(
"MakeProject", 
"cannot open path file %s", path.
Data());
 
 3041      Error(
"MakeProject", 
"cannot open path file %s", path.
Data());
 
 3053      fprintf(fp,
"#ifdef __CINT__\n");
 
 3065      if (
strncmp(
info->GetName(), 
"auto_ptr<", std::char_traits<char>::length(
"auto_ptr<")) == 0) {
 
 3094         std::vector<std::string> inside;
 
 3105                  what = 
"std::pair<";
 
 3115                     tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3119                     tmp.Form(
"template class %s;\n",
what.Data());
 
 3124                     what.ReplaceAll(
"std::",
"");
 
 3127                        fprintf(fp,
"#pragma link C++ class %s+;\n",
what.Data());
 
 3135                     tmp.Form(
"<class name=\"%s\" />\n",key->
GetName());
 
 3139                     tmp.Form(
"template class %s;\n",key->
GetName());
 
 3144                     what.ReplaceAll(
"std::",
"");
 
 3156            tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3160            if (
what[
what.Length()-1] == 
'>') {
 
 3161               tmp.Form(
"template class %s;\n",
what.Data());
 
 3167            what.ReplaceAll(
"std::",
"");
 
 3168            fprintf(fp,
"#pragma link C++ class %s+;\n",
what.Data());
 
 3176            if (
element->GetClass() && !
element->GetClass()->IsLoaded() && 
element->GetClass()->GetCollectionProxy()) {
 
 3178               tmp.Form(
"<class name=\"%s\" />\n",
what.Data());
 
 3182               tmp.Form(
"template class %s;\n",
what.Data());
 
 3191      fprintf(
ifp,
"#ifndef PROJECT_INSTANCES_H\n");
 
 3192      fprintf(
ifp,
"#define PROJECT_INSTANCES_H\n");
 
 3208   cmd.ReplaceAll(
"$SourceFiles",
sources.Data());
 
 3211   cmd.ReplaceAll(
"$ObjectFiles", 
object.Data());
 
 3216   cmd.ReplaceAll(
"$BuildDir",
".");
 
 3224#if defined(_MSC_VER) && defined(_DEBUG) 
 3245   if (!opt.
Contains(
"nocompilation")) {
 
 3254      chmod(
"makep.cmd",00700);
 
 3259      if (res) 
printf(
"Shared lib %s has been generated\n",path.
Data());
 
 3264         if (res) 
printf(
"Shared lib %s has been dynamically linked\n",path.
Data());
 
 
 3283   auto listRetcode = GetStreamerInfoListImpl( 
true);  
 
 3293   if (
gDebug > 0) 
Info(
"ReadStreamerInfo", 
"called for file %s",GetName());
 
 3314            if (!base) 
continue;
 
 3352                  Warning(
"ReadStreamerInfo",
"%s has a %s in the list of TStreamerInfo.", GetName(), 
info->IsA()->GetName());
 
 3361         if (
info->GetElements()==0) {
 
 3362            Warning(
"ReadStreamerInfo",
"The StreamerInfo for %s does not have a list of elements.",
info->GetName());
 
 3372            info->BuildCheck(
this);
 
 3375            if (uid >= 
asize && uid <100000) fClassIndex->Set(2*
asize);
 
 3378               fClassIndex->fArray[uid] = 1;
 
 3380            else if (!
isstl && !
info->GetClass()->IsSyntheticPair()) {
 
 3381               printf(
"ReadStreamerInfo, class:%s, illegal uid=%d\n",
info->GetName(),uid);
 
 3383            if (
gDebug > 0) 
printf(
" -class: %s version: %d info read at slot %d\n",
info->GetName(), 
info->GetClassVersion(),uid);
 
 3388   fClassIndex->fArray[0] = 0;
 
 
 3428   TList *list = GetStreamerInfoList();
 
 
 3454   this->WriteTObject(pid,
name);
 
 3455   this->IncrementProcessIDs();
 
 3457      Info(
"WriteProcessID", 
"name=%s, file=%s", 
name, GetName());
 
 
 3471   if (!fWritable) 
return;
 
 3472   if (!fClassIndex) 
return;
 
 3473   if (fIsPcmFile) 
return; 
 
 3474   if (fClassIndex->fArray[0] == 0
 
 3475       && fSeekInfo != 0) {
 
 3481   if (
gDebug > 0) 
Info(
"WriteStreamerInfo", 
"called for file %s",GetName());
 
 3496      if (fClassIndex->fArray[uid]) {
 
 3498         if (
gDebug > 0) 
printf(
" -class: %s info number %d saved\n",
info->GetName(),uid);
 
 3505               if (
gDebug > 0) 
printf(
" -class: %s stored the I/O customization rules\n",
info->GetName());
 
 3521   fClassIndex->fArray[0] = 2; 
 
 3529   if (fSeekInfo) MakeFree(fSeekInfo,fSeekInfo+fNbytesInfo-1);
 
 3531   TKey key(&list,
"StreamerInfo",GetBestBuffer(), 
this);
 
 3532   fKeys->Remove(&key);
 
 3538   fClassIndex->fArray[0] = 0;
 
 
 3555   if (fgCacheFileDir == 
"") {
 
 3557                "you want to read through a cache, but you have no valid cache " 
 3558                "directory set - reading remotely");
 
 3559      ::Info(
"TFile::OpenFromCache", 
"set cache directory using TFile::SetCacheFileDir()");
 
 3565         if (!fgCacheFileForce)
 
 3567                      "you want to read through a cache, but you are reading " 
 3568                      "local files - CACHEREAD disabled");
 
 3579            ::Warning(
"TFile::OpenFromCache",
"you want to read through a cache, but I " 
 3580                      "cannot create the directory %s - CACHEREAD disabled",
 
 3600                  if (
objTags->GetEntries() == 2) {
 
 3633               if (!fgCacheFileDisconnected) {
 
 3639                  cfurl += 
"?filetype=raw";
 
 3642                  ropt += 
"&filetype=raw";
 
 3646                  fgCacheFileForce = 
kFALSE;
 
 3655                     ::Error(
"TFile::OpenFromCache",
 
 3656                             "cannot open the cache file to check cache consistency");
 
 3661                     ::Error(
"TFile::OpenFromCache",
 
 3662                             "cannot open the remote file to check cache consistency");
 
 3672                        ::Warning(
"TFile::OpenFromCache", 
"the header of the cache file " 
 3673                                  "differs from the remote file - forcing an update");
 
 3677                     ::Warning(
"TFile::OpenFromCache", 
"the header of the cache and/or " 
 3678                               "remote file are not readable - forcing an update");
 
 3691            fgCacheFileForce = 
kFALSE;
 
 3696                            "you want to read through a cache, but I " 
 3697                            "cannot make a cache copy of %s - CACHEREAD disabled",
 
 
 3774      ::Error(
"TFile::Open", 
"no url specified");
 
 3783   if (
gEnv->
GetValue(
"TFile.CrossProtocolRedirects", 1) == 1) {
 
 3796                     if (!
f->IsZombie()) {
 
 3818      while (!(
sto.IsDigit()) && !(
sto.IsNull())) { 
sto.Remove(
sto.Length()-1,1); }
 
 3819      if (!(
sto.IsNull())) {
 
 3822         if (
gDebug > 0) 
::Info(
"TFile::Open", 
"timeout of %d millisec requested", 
toms);
 
 3824         sto.Insert(0, 
"TIMEOUT=");
 
 3842                  ::Info(
"TFile::Open", 
"waited %d millisec for asynchronous open", 
toms - 
xtms);
 
 3844                  ::Info(
"TFile::Open", 
"timeout option not supported (requires asynchronous" 
 3856         ::Warning(
"TFile::Open", 
"incomplete 'TIMEOUT=' option specification - ignored");
 
 3857         opts.ReplaceAll(
"TIMEOUT=", 
"");
 
 3882   while (
namelist.Tokenize(
n, from, 
"|") && !
f) {
 
 3892      IncrementFileCounter();
 
 3899      if (fgAsyncOpenRequests && (fgAsyncOpenRequests->GetSize() > 0)) {
 
 3919         if (
type == kLocal) {
 
 3929         } 
else if (
type == kNet) {
 
 3932            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name))) {
 
 3933               if (
h->LoadPlugin() == -1)
 
 3938         } 
else if (
type == kWeb) {
 
 3941            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name))) {
 
 3942               if (
h->LoadPlugin() == -1)
 
 3947         } 
else if (
type == kFile) {
 
 3950            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name)) &&
 
 3951                h->LoadPlugin() == 0) {
 
 3952               name.ReplaceAll(
"file:", 
"");
 
 3960            if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name.Data()))) {
 
 3961               if (
h->LoadPlugin() == -1)
 
 3977      if (
f && 
f->IsZombie()) {
 
 3999   if (
type != kLocal && 
type != kFile &&
 
 4000       f && 
f->IsWritable() && !
f->IsRaw()) {
 
 
 4044      ::Error(
"TFile::AsyncOpen", 
"no url specified");
 
 4067   while (
namelist.Tokenize(
n, from, 
"|") && !
f) {
 
 4082         if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TFile", 
name)) &&
 
 4083            !
strcmp(
h->GetClass(),
"TNetXNGFile")
 
 4084            && 
h->LoadPlugin() == 0) {
 
 4115      if (!fgAsyncOpenRequests)
 
 4116         fgAsyncOpenRequests = 
new TList;
 
 4117      fgAsyncOpenRequests->
Add(fh);
 
 
 4135   if (fh && fgAsyncOpenRequests) {
 
 4138      fgAsyncOpenRequests->
Remove(fh);
 
 4140      if ((
f = fh->
GetFile()) && !(
f->IsZombie())) {
 
 4143                      !
strcmp(
f->GetOption(),
"RECREATE") ||
 
 4154      if (
f) 
f->fAsyncHandle = fh;
 
 
 4166#if defined(R__WINGCC) 
 4170#elif defined(R__SEEK64) 
 
 4182   if (fd < 0) 
return 0;
 
 
 4191   return ::read(fd, buf, 
len);
 
 
 4199   return ::write(fd, buf, 
len);
 
 
 4210#if defined (R__SEEK64) 
 
 4237   if (TestBit(kDevNull)) 
return 0;
 
 4242   return ::_commit(fd);
 
 
 4251   return fCacheWrite ? fCacheWrite->GetBytesInCache() + fBytesWrite : fBytesWrite;
 
 
 4268   return fgBytesWrite;
 
 
 4284   return fgReadaheadSize;
 
 
 4313   if (!
cached.EndsWith(
"/"))
 
 4320         ::Error(
"TFile::SetCacheFileDir", 
"no sufficient permissions on cache directory %s or cannot create it", 
TString(
cachedir).Data());
 
 4321         fgCacheFileDir = 
"";
 
 
 4339   return fgCacheFileDir;
 
 
 4351   if (fgCacheFileDir == 
"") {
 
 4377      ::Error(
"TFile::ShrinkCacheFileDir", 
"cannot create the cache tag file %s", 
cachetagfile.Data());
 
 4385#if defined(R__WIN32) 
 4386   cmd = 
"echo <TFile::ShrinkCacheFileDir>: cleanup to be implemented";
 
 4387#elif defined(R__MACOSX) 
 4388   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);
 
 4390   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);
 
 4397      ::Error(
"TFile::ShrinkCacheFileDir", 
"error executing clean-up script");
 
 
 4409   UInt_t to = fgOpenTimeout;
 
 
 4419   return fgOpenTimeout;
 
 
 4439   return fgOnlyStaged;
 
 
 4455   if (!
strcmp(
u.GetFile(), fUrl.GetFile())) {
 
 4457      if (
u.GetPort() == fUrl.GetPort()) {
 
 4458         if (!
strcmp(
u.GetHostFQDN(), fUrl.GetHostFQDN())) {
 
 
 4477   } 
else if (fName.Length() > 0){
 
 4483         if (
u.GetPort() == 
uref.GetPort()) {
 
 4485            if (!
strcmp(
u.GetHostFQDN(), 
uref.GetHostFQDN())) {
 
 
 4509   if (re.Match(
name)) {
 
 4526      if (
opts.Contains(
"remote=1"))
 
 4528      else if (
opts.Contains(
"remote=0"))
 
 4535            const char *
fname = 
url.GetFileAndOptions();
 
 4537            if (
fname[0] == 
'/') {
 
 4542            } 
else if (
fname[0] == 
'~' || 
fname[0] == 
'$') {
 
 4567   } 
else if (
TPMERegexp(
"^(http[s]?|s3http[s]?|[a]?s3|gs|gshttp[s]?){1}:", 
"i").Match(
name)) {
 
 
 4586   if (fgAsyncOpenRequests && (fgAsyncOpenRequests->GetSize() > 0)) {
 
 4597   if (of && (of->
GetSize() > 0)) {
 
 4601         if (
f->Matches(
name))
 
 4606   return kAOSNotAsync;
 
 
 4614   if (handle && handle->
fFile) {
 
 
 4632   if (fgAsyncOpenRequests && (fgAsyncOpenRequests->GetSize() > 0)) {
 
 4644   if (of && (of->
GetSize() > 0)) {
 
 4648         if (
f->Matches(
name))
 
 4653   return (
const TUrl *)
nullptr;
 
 
 4663   for (
int l = 0; 
l < 20; 
l++) {
 
 
 4703   if (opt != 
"") opt += 
"&";
 
 4710   dURL.SetOptions(opt);
 
 4725         dURL.SetOptions(opt);
 
 4731      ::Error(
"TFile::Cp", 
"cannot open destination file %s", 
dst);
 
 4744      ::Error(
"TFile::Cp", 
"cannot allocate the copy buffer");
 
 4775      read   = 
sfile->GetBytesRead() - b0;
 
 4776      if ((read <= 0) || 
readop) {
 
 4777         ::Error(
"TFile::Cp", 
"cannot read from source file %s. readsize=%lld read=%lld readop=%d",
 
 4786         ::Error(
"TFile::Cp", 
"cannot write %lld bytes to destination file %s", read, 
dst);
 
 
 4829      ::Error(
"TFile::Cp", 
"cannot open source file %s", 
src);
 
 
 4846#if defined(R__neverLINUX) && !defined(R__WINGCC) 
 4867#if defined(R__SEEK64) 
 4895   if ((
cr = GetCacheRead())) {
 
 
void frombuf(char *&buf, Bool_t *x)
 
void tobuf(char *&buf, Bool_t x)
 
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
 
bool Bool_t
Boolean (0=false, 1=true) (bool)
 
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short)
 
int Int_t
Signed integer 4 bytes (int)
 
short Version_t
Class version identifier (short)
 
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
 
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
 
float Float_t
Float 4 bytes (float)
 
short Short_t
Signed Short integer 2 bytes (short)
 
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
 
long long Long64_t
Portable signed long integer 8 bytes.
 
const char Option_t
Option string (const char)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void SysError(const char *location, const char *msgfmt,...)
Use this function in case a system (OS or GUI) related error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char 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
 
void Print(GNN_Data &d, std::string txt="")
 
R__EXTERN TPluginManager * gPluginMgr
 
Int_t gDebug
Global variable setting the debug level. Set to 0 to disable, increase it in steps of 1 to increase t...
 
R__EXTERN TVirtualMutex * gROOTMutex
 
void ReadBuffer(char *&buffer) override
 
TClass * IsA() const override
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
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)
 
std::optional< TKeyMapNode > Next()
 
TIterator(TFile *file, std::uint64_t addr)
 
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).
 
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 the current directory.
 
Int_t ReadKeys(Bool_t forceRead=kTRUE) override
Read the linked list of keys.
 
TDatime fDatimeM
Date and time of last modification.
 
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.
 
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 TObject * Remove(TObject *)
Remove an object from the in-memory list.
 
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 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.
 
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.
 
static void SetFileBytesWritten(Long64_t bytes=0)
 
static Bool_t fgCacheFileForce
Indicates, to force all READ to CACHEREAD.
 
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.
 
ROOT::Detail::TKeyMapIterable WalkTKeys()
Traverses all TKeys in the TFile and returns information about them.
 
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.
 
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.
 
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 Bool_t Cp(const char *dst, Bool_t progressbar=kTRUE, UInt_t bufsize=1000000)
Allows to copy this file to the dst URL.
 
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) override
Write memory objects to this file.
 
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.
 
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.
 
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.
 
static ROOT::Internal::RConcurrentHashColl fgTsSIHashes
!TS Set of hashes built from read streamer infos
 
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 Objects or/and keys in the current directory.
 
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.
 
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.
 
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.
 
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
 
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.
 
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 * 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 ...
 
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.
 
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.
 
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 Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
 
Sequenceable collection abstract base class.
 
void SetBaseCheckSum(UInt_t cs)
 
Describe one element (data member) to be Streamed.
 
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.
 
virtual int GetPid()
Get process id.
 
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 * 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.
 
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.