79 #define _XOPEN_SOURCE 600 90 # include <sys/types.h> 96 #include "RConfigure.h" 128 #include "compiledata.h" 162 static struct AddPseudoGlobals {
188 fCacheReadMap =
new TMap();
201 fAsyncOpenStatus = kAOSNotAsync;
202 SetBit(kBinaryFile,
kTRUE);
218 Info(
"TFile",
"default ctor");
327 ::Fatal(
"TFile::TFile",
"ROOT system not initialized");
335 fNoAnchorInName =
kTRUE;
342 fname1 = fUrl.GetFile();
346 if (strstr(fUrl.GetOptions(),
"filetype=raw"))
351 if (strstr(fUrl.GetOptions(),
"filetype=pcm"))
360 fAsyncOpenStatus = kAOSNotAsync;
366 fVersion =
gROOT->GetVersionInt();
369 fCompress = compress;
383 fCacheReadMap =
new TMap();
386 SetBit(kBinaryFile,
kTRUE);
393 if (fIsRootFile && !fIsPcmFile && fOption !=
"NEW" && fOption !=
"CREATE" 394 && fOption !=
"RECREATE") {
402 if (!strlen(fArchive->GetMemberName()))
407 if (fOption ==
"NET")
410 if (fOption ==
"WEB") {
416 if (fOption ==
"NEW")
423 if (!create && !recreate && !
update && !read) {
430 if (!fname1 || !fname1[0]) {
431 Error(
"TFile",
"file name is not specified");
436 if (!strcmp(fname1,
"/dev/null") &&
452 fname = fRealName.Data();
454 Error(
"TFile",
"error expanding path %s", fname1);
461 SysError(
"TFile",
"could not delete %s (errno: %d)",
471 Error(
"TFile",
"file %s already exists", fname);
480 Error(
"TFile",
"no write permission, could not open file %s", fname);
486 Error(
"TFile",
"file %s does not exist", fname);
490 Error(
"TFile",
"no read permission, could not open file %s", fname);
498 fD = SysOpen(fname, O_RDWR | O_CREAT, 0644);
500 fD = SysOpen(fname, O_RDWR | O_CREAT |
O_BINARY, S_IREAD | S_IWRITE);
503 SysError(
"TFile",
"file %s can not be opened", fname);
509 fD = SysOpen(fname, O_RDONLY, 0644);
511 fD = SysOpen(fname, O_RDONLY |
O_BINARY, S_IREAD | S_IWRITE);
514 SysError(
"TFile",
"file %s can not be opened for reading", fname);
528 gROOT->GetListOfClosedObjects()->Add(
this);
539 MayNotUse(
"TFile::TFile(const TFile &)");
572 gROOT->GetListOfClosedObjects()->Remove(
this);
609 Error(
"Init",
"archive %s can only be opened in read mode",
GetName());
628 Error(
"Init",
"member %s not found in archive %s",
666 char *header =
new char[
kBEGIN+200];
671 Error(
"Init",
"%s failed to read the file type data.",
678 if (strncmp(header,
"root", 4)) {
684 char *buffer = header + 4;
687 frombuf(buffer, &headerLength);
690 Int_t send,sfree,sinfo;
711 if (fBEGIN < 0 || fBEGIN >
fEND) {
713 Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
724 Warning(
"Init",
"file %s probably not closed, cannot read free segments",
GetName());
729 char *buffer_keyloc = 0;
734 Error(
"Init",
"file %s has an incorrect header length (%lld) or incorrect end of file length (%lld)",
740 header =
new char[nbytes];
745 Error(
"Init",
"%s failed to read the file header information at %lld (size=%d)",
751 buffer_keyloc = header;
754 buffer_keyloc = header+
fBEGIN;
757 frombuf(buffer,&version); versiondir = version%1000;
762 if (version > 1000) {
767 Int_t sdir,sparent,skeys;
775 buffer_keyloc +=
sizeof(
Int_t);
777 frombuf(buffer_keyloc, &keyversion);
779 if (keyversion > 1000) {
790 if (fNbytesName < 10 || fNbytesName > 10000) {
791 Error(
"Init",
"cannot read directory info of file %s",
GetName());
797 if ((size =
GetSize()) == -1) {
827 Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld, " 830 Error(
"Init",
"file %s is truncated at %lld bytes: should be %lld",
836 Warning(
"Init",
"file %s probably not closed, " 837 "trying to recover",
GetName());
845 Warning(
"Init",
"successfully recovered %d keys", nrecov);
847 Warning(
"Init",
"no keys recovered, file has been made a Zombie");
855 gROOT->GetListOfFiles()->Add(
this);
861 Int_t lenIndex =
gROOT->GetListOfStreamerInfo()->GetSize()+1;
862 if (lenIndex < 5000) lenIndex = 5000;
869 gROOT->GetListOfFiles()->Remove(
this);
875 Warning(
"Init",
"no StreamerInfo found in %s therefore preventing schema evolution when reading this file.",
GetName());
885 while ((key = (
TKey*)next())) {
895 gROOT->GetListOfClosedObjects()->Add(
this);
943 while ((key = iter()) != 0) {
1001 gROOT->GetListOfFiles()->Remove(
this);
1002 gROOT->GetListOfBrowsers()->RecursiveRemove(
this);
1003 gROOT->GetListOfClosedObjects()->Add(
this);
1014 return new TKey(obj,
name, bufsize, mother);
1022 return new TKey(obj, cl,
name, bufsize, mother);
1034 static TFile *currentFile = 0;
1066 Info(
"Delete",
"deleting name = %s", namecycle);
1087 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFileDrawMap"))) {
1088 if (
h->LoadPlugin() == -1)
1090 h->ExecPlugin(3,
this, keys, option);
1128 Version_t version = TFile::Class_Version();
1129 tobuf(buffer, version);
1157 Int_t nbytes, objlen, nwh = 64;
1158 char *header =
new char[
fBEGIN];
1164 while (idcur <
fEND-100) {
1179 if (nbytes == 0)
break;
1185 if (!objlen) objlen = nbytes-keylen;
1187 uncomp += keylen + objlen;
1258 Int_t nread = maxbytes;
1261 Warning(
"GetRecordHeader",
"%s: parameter maxbytes = %d must be >= 4",
1267 Warning(
"GetRecordHeader",
"%s: failed to read header data (maxbytes = %d)",
1278 if (nb < 0)
return nread;
1280 const Int_t headerSize = 16;
1281 if (nread < headerSize)
return nread;
1286 if (!olen) olen = nbytes-klen;
1304 if (const_cast<TFile*>(
this)->
SysStat(
fD, &
id, &size, &flags, &modtime)) {
1305 Error(
"GetSize",
"cannot stat the file %s",
GetName());
1353 Warning(
"GetRecordHeader",
"%s: failed to read the StreamerInfo data from disk.",
1363 list = (
TList*)
Get(
"StreamerInfo");
1367 Info(
"GetStreamerInfoList",
"cannot find the StreamerInfo record in file %s",
1414 if(!newfree)
return;
1418 if (nbytesl > 2000000000) nbytesl = 2000000000;
1421 char * buffer =
new char[nb];
1422 char * psave = buffer;
1423 tobuf(buffer, nbytes);
1482 bool forComp = options.
Contains(
"forcomp");
1486 Int_t nbytes,date,time,objlen,nwheader;
1495 Int_t nread = nwheader;
1498 char classname[512];
1502 while (idcur <
fEND) {
1504 if (idcur+nread >=
fEND) nread =
fEND-idcur-1;
1507 Warning(
"Map",
"%s: failed to read the key data from disk at %lld.",
1515 Printf(
"Address = %lld\tNbytes = %d\t=====E R R O R=======", idcur, nbytes);
1520 Printf(
"Address = %lld\tNbytes = %d\t=====G A P===========", idcur, nbytes);
1531 if (versionkey > 1000) {
1540 for (
int i = 0;i < nwhc; i++)
frombuf(buffer, &classname[i]);
1541 classname[(int)nwhc] =
'\0';
1542 if (idcur ==
fSeekFree) strlcpy(classname,
"FreeSegments",512);
1543 if (idcur ==
fSeekInfo) strlcpy(classname,
"StreamerInfo",512);
1544 if (idcur ==
fSeekKeys) strlcpy(classname,
"KeysList",512);
1547 if (objlen != nbytes - keylen) {
1549 Printf(
"%d/%06d At:%-*lld N=%-8d %-14s CX = %5.2f", date, time, nDigits + 1, idcur, nbytes, classname,
1552 Printf(
"%d/%06d At:%-*lld N=%-8d %-14s", date, time, nDigits + 1, idcur, nbytes, classname);
1556 if (objlen != nbytes - keylen) {
1558 Printf(
"At:%-*lld N=%-8d K=%-3d O=%-8d %-14s CX = %5.2f", nDigits+1, idcur, nbytes, keylen, objlen, classname, cx);
1560 Printf(
"At:%-*lld N=%-8d K=%-3d O=%-8d %-14s CX = 1", nDigits+1, idcur, nbytes, keylen, objlen, classname);
1566 Printf(
"%d/%06d At:%-*lld N=%-8d %-14s",date,time, nDigits+1, idcur,1,
"END");
1568 Printf(
"At:%-*lld N=%-8d K= O= %-14s", nDigits+1, idcur,1,
"END");
1623 Error(
"ReadBuffer",
"error reading all requested bytes from file %s, got %ld of %d",
1670 Error(
"ReadBuffer",
"error reading all requested bytes from file %s, got %ld of %d",
1701 for (
Int_t j = 0; j < nbuf; j++) {
1718 cur = pos[i]+len[i];
1721 if (bigRead || (i>=nbuf)) {
1735 Long64_t nahead = pos[i-1]+len[i-1]-curbegin;
1740 for (
Int_t j=0;j<
n;j++) {
1741 memcpy(&buf[k],&buf2[pos[i-
n+j]-curbegin],len[i-
n+j]);
1754 if (buf2)
delete [] buf2;
1804 if (fNbytesFree < 0 || fNbytesFree >
fEND) {
1840 snprintf(pidname,32,
"ProcessID%d",pidf);
1843 printf(
"ReadProcessID, name=%s, file=%s, pid=%lx\n",pidname,
GetName(),(
Long_t)pid);
1852 TIter next(pidslist);
1925 Int_t nbytes,date,time,objlen,nwheader;
1928 char *buffer, *bufread;
1933 if ((size =
GetSize()) == -1) {
1934 Error(
"Recover",
"cannot stat the file %s",
GetName());
1945 Int_t nread = nwheader;
1947 while (idcur <
fEND) {
1949 if (idcur+nread >=
fEND) nread =
fEND-idcur-1;
1952 Error(
"Recover",
"%s: failed to read the key data from disk at %lld.",
1960 Error(
"Recover",
"Address = %lld\tNbytes = %d\t=====E R R O R=======", idcur, nbytes);
1975 if (versionkey > 1000) {
1984 char *classname = 0;
1985 if (nwhc <= 0 || nwhc > 100)
break;
1986 classname =
new char[nwhc+1];
1987 int i, nwhci = nwhc;
1988 for (i = 0;i < nwhc; i++)
frombuf(buffer, &classname[i]);
1989 classname[nwhci] =
'\0';
1993 && strcmp(classname,
"TBasket")) {
1994 key =
new TKey(
this);
1996 if (!strcmp(key->
GetName(),
"StreamerInfo")) {
2007 delete [] classname;
2012 if (max_file_size <
fEND) max_file_size =
fEND+1000000000;
2019 if (nrecov)
Write();
2042 if (opt !=
"READ" && opt !=
"UPDATE") {
2043 Error(
"ReOpen",
"mode must be either READ or UPDATE, not %s", opt.
Data());
2050 if (opt ==
"READ") {
2088 SysError(
"ReOpen",
"file %s can not be opened in read mode",
GetName());
2110 SysError(
"ReOpen",
"file %s can not be opened in update mode",
GetName());
2119 Warning(
"ReOpen",
"file %s probably not closed, cannot read free segments",
GetName());
2140 Error(
"SetOffset",
"seeking from end in archive is not (yet) supported");
2164 Error(
"Seek",
"seeking from end in archive is not (yet) supported");
2168 if ((retpos =
SysSeek(
fD, offset, whence)) < 0)
2169 SysError(
"Seek",
"cannot seek to position %lld in file %s, retpos=%lld",
2197 if (level < 0) level = 0;
2198 if (level > 99) level = 99;
2253 if (cache) cache->
SetFile(
this, action);
2283 if (
b.IsReading()) {
2286 b.WriteVersion(TFile::IsA());
2344 Error(
"Write const",
"A const TFile object should not be saved. We try to proceed anyway.");
2345 return const_cast<TFile*
>(
this)->
Write(
n, opt, bufsize);
2376 Error(
"WriteBuffer",
"error writing all requested bytes to file %s, wrote %ld of %d",
2403 Error(
"WriteBuffer",
"error writing to cache");
2428 auto createKey = [
this]() {
2432 while ((afree = (
TFree*) next())) {
2433 nbytes += afree->
Sizeof();
2435 if (!nbytes)
return (
TKey*)
nullptr;
2441 return (
TKey*)
nullptr;
2446 TKey *key = createKey();
2463 char *start = buffer;
2467 while ((afree = (
TFree*) next())) {
2472 auto actualBytes = buffer-start;
2473 if ( actualBytes != nbytes ) {
2474 if (actualBytes < nbytes) {
2477 memset(buffer,0,nbytes-actualBytes);
2479 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);
2496 const char *root =
"root";
2497 char *psave =
new char[
fBEGIN];
2498 char *buffer = psave;
2500 memcpy(buffer, root, 4); buffer += 4;
2503 tobuf(buffer, version);
2505 if (version < 1000000) {
2509 tobuf(buffer, nfree);
2519 tobuf(buffer, nfree);
2527 Int_t nbytes = buffer - psave;
2618 path +=
"/PROOF-INF";
2620 const char *afile = 0;
2623 if (strcmp(afile,
".") == 0)
continue;
2624 if (strcmp(afile,
"..") == 0)
continue;
2625 filepath.
Form(
"%s/%s", path.
Data(), afile);
2627 Warning(
"MakeProject",
"1: problems unlinking '%s' ('%s', '%s')", filepath.
Data(), path.
Data(), afile);
2634 if (strcmp(afile,
".") == 0)
continue;
2635 if (strcmp(afile,
"..") == 0)
continue;
2636 filepath.
Form(
"%s/%s", path.
Data(), afile);
2638 Warning(
"MakeProject",
"2: problems unlinking '%s' ('%s', '%s')", filepath.
Data(), path.
Data(), afile);
2642 Warning(
"MakeProject",
"problems unlinking '%s'", path.
Data());
2646 path.
Form(
"%s/%s/PROOF-INF", pardir.
Data(), parname.
Data());
2648 Error(
"MakeProject",
"problems creating '%s'", path.
Data());
2663 }
else if (opt.
Contains(
"recreate")) {
2667 Error(
"MakeProject",
"cannot create directory '%s'",dirname);
2674 if (afile == 0)
break;
2675 if (strcmp(afile,
".") == 0)
continue;
2676 if (strcmp(afile,
"..") == 0)
continue;
2677 dirpath.
Form(
"%s/%s",dirname,afile);
2685 Error(
"MakeProject",
"cannot create directory %s, already existing",dirname);
2690 Error(
"MakeProject",
"cannot create directory '%s'",dirname);
2703 if (filelist) filelist = (
TList*)filelist->
Clone();
2704 if (filelist == 0) {
2705 Error(
"MakeProject",
"file %s has no StreamerInfo",
GetName());
2709 TString clean_dirname(dirname);
2710 if (makepar) clean_dirname.
Form(
"%s/%s", pardir.
Data(), parname.
Data());
2711 if (clean_dirname[clean_dirname.
Length()-1]==
'/') {
2713 }
else if (clean_dirname[clean_dirname.
Length()-1]==
'\\') {
2715 if (clean_dirname[clean_dirname.
Length()-1]==
'\\') {
2720 if (makepar) subdirname = parname;
2721 if (subdirname ==
"") {
2722 Error(
"MakeProject",
"Directory name must not be empty.");
2727 TString spath; spath.
Form(
"%s/%sProjectSource.cxx",clean_dirname.
Data(),subdirname.Data());
2728 FILE *sfp = fopen(spath.
Data(),
"w");
2730 Error(
"MakeProject",
"Unable to create the source file %s.",spath.
Data());
2733 fprintf(sfp,
"namespace std {}\nusing namespace std;\n");
2734 fprintf(sfp,
"#include \"%sProjectHeaders.h\"\n\n",subdirname.Data() );
2735 if (!genreflex) fprintf(sfp,
"#include \"%sLinkDef.h\"\n\n",subdirname.Data() );
2736 fprintf(sfp,
"#include \"%sProjectDict.cxx\"\n\n",subdirname.Data() );
2737 fprintf(sfp,
"struct DeleteObjectFunctor {\n");
2738 fprintf(sfp,
" template <typename T>\n");
2739 fprintf(sfp,
" void operator()(const T *ptr) const {\n");
2740 fprintf(sfp,
" delete ptr;\n");
2741 fprintf(sfp,
" }\n");
2742 fprintf(sfp,
" template <typename T, typename Q>\n");
2743 fprintf(sfp,
" void operator()(const std::pair<T,Q> &) const {\n");
2744 fprintf(sfp,
" // Do nothing\n");
2745 fprintf(sfp,
" }\n");
2746 fprintf(sfp,
" template <typename T, typename Q>\n");
2747 fprintf(sfp,
" void operator()(const std::pair<T,Q*> &ptr) const {\n");
2748 fprintf(sfp,
" delete ptr.second;\n");
2749 fprintf(sfp,
" }\n");
2750 fprintf(sfp,
" template <typename T, typename Q>\n");
2751 fprintf(sfp,
" void operator()(const std::pair<T*,Q> &ptr) const {\n");
2752 fprintf(sfp,
" delete ptr.first;\n");
2753 fprintf(sfp,
" }\n");
2754 fprintf(sfp,
" template <typename T, typename Q>\n");
2755 fprintf(sfp,
" void operator()(const std::pair<T*,Q*> &ptr) const {\n");
2756 fprintf(sfp,
" delete ptr.first;\n");
2757 fprintf(sfp,
" delete ptr.second;\n");
2758 fprintf(sfp,
" }\n");
2759 fprintf(sfp,
"};\n\n");
2766 TIter flnext(filelist);
2773 if (strstr(info->
GetName(),
"@@")) {
2790 for(
auto rule : rules) {
2791 if( rule->IsRenameRule() || rule->IsAliasRule() )
2794 if ( rule->HasTarget( el->GetName()) && rule->GetAttributes()[0] != 0 ) {
2795 TString attr( rule->GetAttributes() );
2797 if (attr.Contains(
"owner")) {
2798 if (attr.Contains(
"notowner")) {
2821 TIter nextextra(&extrainfos);
2824 filelist->
Add(info);
2835 TIter subnext(list);
2847 if ( (sublen > len) && subinfo->
GetName()[len+1]==
':' 2850 subClasses.
Add(subinfo);
2855 subClasses.
Clear(
"nodelete");
2858 path.
Form(
"%s/%sProjectHeaders.h",clean_dirname.
Data(),subdirname.Data());
2859 FILE *allfp = fopen(path,
"a");
2861 Error(
"MakeProject",
"Cannot open output file:%s\n",path.
Data());
2863 fprintf(allfp,
"#include \"%sProjectInstances.h\"\n", subdirname.Data());
2867 printf(
"MakeProject has generated %d classes in %s\n",ngener,clean_dirname.
Data());
2870 if (!opt.
Contains(
"+") && !makepar) {
2883 path.
Form(
"%s/makep.cmd",clean_dirname.
Data());
2885 path.
Form(
"%s/MAKEP",clean_dirname.
Data());
2888 fpMAKE = fopen(path,
"wb");
2890 fpMAKE = fopen(path,
"w");
2893 Error(
"MakeProject",
"cannot open file %s", path.
Data());
2903 path.
Form(
"%s/%sProjectInstances.h",clean_dirname.
Data(),subdirname.Data());
2905 ifp = fopen(path,
"wb");
2907 ifp = fopen(path,
"w");
2910 Error(
"MakeProject",
"cannot open path file %s", path.
Data());
2920 fprintf(fpMAKE,
"genreflex %sProjectHeaders.h -o %sProjectDict.cxx --comments --iocomments %s ",subdirname.Data(),subdirname.Data(),
gSystem->
GetIncludePath());
2921 path.
Form(
"%s/%sSelection.xml",clean_dirname.
Data(),subdirname.Data());
2923 fprintf(fpMAKE,
"rootcint -v1 -f %sProjectDict.cxx -c %s ",subdirname.Data(),
gSystem->
GetIncludePath());
2924 path.
Form(
"%s/%sLinkDef.h",clean_dirname.
Data(),subdirname.Data());
2927 path.
Form(
"%s/%sLinkDef.h",clean_dirname.
Data(),subdirname.Data());
2933 FILE *fp = fopen(path,
"wb");
2935 FILE *fp = fopen(path,
"w");
2938 Error(
"MakeProject",
"cannot open path file %s", path.
Data());
2947 fprintf(fp,
"<lcgdict>\n");
2950 fprintf(fp,
"#ifdef __CINT__\n");
2968 for(
auto rule : rules) {
2971 rule->AsString(strrule,
"x");
2974 selections.
Append(strrule);
2977 rule->AsString(strrule);
2978 if (strncmp(strrule.
Data(),
"type=",5)==0) {
2981 fprintf(fp,
"#pragma %s;\n",strrule.
Data());
2988 std::vector<std::string> inside;
2995 switch ( stlkind ) {
2999 what =
"std::pair<";
3003 if (what[what.
Length()-1]==
'>') {
3009 tmp.
Form(
"<class name=\"%s\" />\n",what.
Data());
3013 tmp.
Form(
"template class %s;\n",what.
Data());
3021 fprintf(fp,
"#pragma link C++ class %s+;\n",what.
Data());
3027 if (strncmp(key->
GetName(),
"pair<",strlen(
"pair<"))==0) {
3029 tmp.
Form(
"<class name=\"%s\" />\n",key->
GetName());
3039 fprintf(fp,
"#pragma link C++ class %s+;\n",key->
GetName());
3050 tmp.
Form(
"<class name=\"%s\" />\n",what.Data());
3054 if (what[what.Length()-1] ==
'>') {
3055 tmp.
Form(
"template class %s;\n",what.Data());
3062 fprintf(fp,
"#pragma link C++ class %s+;\n",what.Data());
3070 if (element->GetClass() && !element->GetClass()->IsLoaded() && element->GetClass()->GetCollectionProxy()) {
3072 tmp.
Form(
"<class name=\"%s\" />\n",what.
Data());
3076 tmp.
Form(
"template class %s;\n",what.
Data());
3085 fprintf(ifp,
"#ifndef PROJECT_INSTANCES_H\n");
3086 fprintf(ifp,
"#define PROJECT_INSTANCES_H\n");
3087 fprintf(ifp,
"%s",instances.
Data());
3088 fprintf(ifp,
"#endif\n");
3089 fprintf(fp,
"%s",selections.
Data());
3090 fprintf(fp,
"</lcgdict>\n");
3092 fprintf(fp,
"#endif\n");
3106 cmd.
ReplaceAll(
"$ObjectFiles",
object.Data());
3113 TString rootbuild = ROOTBUILD;
3122 fprintf(fpMAKE,
"-s %sSelection.xml \n",subdirname.Data());
3124 fprintf(fpMAKE,
"%sProjectHeaders.h ",subdirname.Data());
3125 fprintf(fpMAKE,
"%sLinkDef.h \n",subdirname.Data());
3128 fprintf(fpMAKE,
"%s\n",cmd.
Data());
3130 printf(
"%s/MAKEP file has been generated\n", clean_dirname.
Data());
3139 Error(
"MakeProject",
"problems creating PAR make file '%s'", filemake.
Data());
3148 Warning(
"MakeProject",
"problems expanding '%s'", mkarchsrc.
Data());
3151 Error(
"MakeProject",
"problems retrieving '%s' to '%s'", mkarchsrc.
Data(), mkarchdst.
Data());
3160 Error(
"MakeProject",
"problems creating BUILD.sh and/or SETUP.C under '%s'", proofinf.
Data());
3173 chmod(cmod.
Data(), 00700);
3175 Printf(
"Files Makefile, Makefile.arch, PROOF-INF/BUILD.sh and" 3176 " PROOF-INF/SETUP.C have been generated under '%s'", clean_dirname.
Data());
3185 Info(
"MakeProject",
"PAR file %s.par generated", clean_dirname.
Data());
3187 Warning(
"MakeProject",
"problems changing directory back to '%s'", curdir.Data());
3190 Error(
"MakeProject",
"problems changing directory to '%s' - skipping PAR file generation", pardir.
Data());
3193 Warning(
"MakeProject",
"on Windows systems the PAR file cannot be generated out of the package directory!");
3198 if (!makepar && !opt.
Contains(
"nocompilation")) {
3207 chmod(
"makep.cmd",00700);
3212 if (res) printf(
"Shared lib %s has been generated\n",path.
Data());
3217 if (res) printf(
"Shared lib %s has been dynamically linked\n",path.
Data());
3221 extrainfos.
Clear(
"nodelete");
3237 if (!filemake || (filemake && strlen(filemake) <= 0)) {
3238 Error(
"MakeProjectParMake",
"path for output file undefined!");
3243 if (!pack || (pack && strlen(pack) <= 0)) {
3244 Error(
"MakeProjectParMake",
"package name undefined!");
3249 FILE *fmk = fopen(filemake,
"wb");
3251 FILE *fmk = fopen(filemake,
"w");
3259 fprintf(fmk,
"# Makefile for the ROOT test programs.\n");
3260 fprintf(fmk,
"# This Makefile shows how to compile and link applications\n");
3261 fprintf(fmk,
"# using the ROOT libraries on all supported platforms.\n");
3262 fprintf(fmk,
"#\n");
3263 fprintf(fmk,
"# Copyright (c) 2000 Rene Brun and Fons Rademakers\n");
3264 fprintf(fmk,
"#\n");
3265 fprintf(fmk,
"# Author: this makefile has been automatically generated via TFile::MakeProject\n");
3267 fprintf(fmk,
"include Makefile.arch\n");
3269 fprintf(fmk,
"#------------------------------------------------------------------------------\n");
3271 fprintf(fmk,
"PACKO = %sProjectSource.$(ObjSuf)\n", pack);
3272 fprintf(fmk,
"PACKS = %sProjectSource.$(SrcSuf) %sProjectDict.$(SrcSuf)\n", pack, pack);
3273 fprintf(fmk,
"PACKSO = lib%s.$(DllSuf)\n", pack);
3275 fprintf(fmk,
"ifeq ($(PLATFORM),win32)\n");
3276 fprintf(fmk,
"PACKLIB = lib%s.lib\n", pack);
3277 fprintf(fmk,
"else\n");
3278 fprintf(fmk,
"PACKLIB = $(PACKSO)\n");
3279 fprintf(fmk,
"endif\n");
3281 fprintf(fmk,
"OBJS = $(PACKO)\n");
3283 fprintf(fmk,
"PROGRAMS =\n");
3285 fprintf(fmk,
"#------------------------------------------------------------------------------\n");
3287 fprintf(fmk,
".SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf)\n");
3289 fprintf(fmk,
"all: $(PACKLIB)\n");
3291 fprintf(fmk,
"$(PACKSO): $(PACKO)\n");
3292 fprintf(fmk,
"ifeq ($(ARCH),aix)\n");
3293 fprintf(fmk,
"\t\t/usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^\n");
3294 fprintf(fmk,
"else\n");
3295 fprintf(fmk,
"ifeq ($(ARCH),aix5)\n");
3296 fprintf(fmk,
"\t\t/usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^\n");
3297 fprintf(fmk,
"else\n");
3298 fprintf(fmk,
"ifeq ($(PLATFORM),macosx)\n");
3299 fprintf(fmk,
"# We need to make both the .dylib and the .so\n");
3300 fprintf(fmk,
"\t\t$(LD) $(SOFLAGS)$@ $(LDFLAGS) $^ $(OutPutOpt) $@ $(LIBS)\n");
3301 fprintf(fmk,
"ifneq ($(subst $(MACOSX_MINOR),,1234),1234)\n");
3302 fprintf(fmk,
"ifeq ($(MACOSX_MINOR),4)\n");
3303 fprintf(fmk,
"\t\tln -sf $@ $(subst .$(DllSuf),.so,$@)\n");
3304 fprintf(fmk,
"else\n");
3305 fprintf(fmk,
"\t\t$(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \\\n");
3306 fprintf(fmk,
"\t\t $(OutPutOpt) $(subst .$(DllSuf),.so,$@)\n");
3307 fprintf(fmk,
"endif\n");
3308 fprintf(fmk,
"endif\n");
3309 fprintf(fmk,
"else\n");
3310 fprintf(fmk,
"ifeq ($(PLATFORM),win32)\n");
3311 fprintf(fmk,
"\t\tbindexplib $* $^ > $*.def\n");
3312 fprintf(fmk,
"\t\tlib -nologo -MACHINE:IX86 $^ -def:$*.def \\\n");
3313 fprintf(fmk,
"\t\t $(OutPutOpt)$(PACKLIB)\n");
3314 fprintf(fmk,
"\t\t$(LD) $(SOFLAGS) $(LDFLAGS) $^ $*.exp $(LIBS) \\\n");
3315 fprintf(fmk,
"\t\t $(OutPutOpt)$@\n");
3316 fprintf(fmk,
"else\n");
3317 fprintf(fmk,
"\t\t$(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@ $(LIBS) $(EXPLLINKLIBS)\n");
3318 fprintf(fmk,
"endif\n");
3319 fprintf(fmk,
"endif\n");
3320 fprintf(fmk,
"endif\n");
3321 fprintf(fmk,
"endif\n");
3322 fprintf(fmk,
"\t\t@echo \"$@ done\"\n");
3324 fprintf(fmk,
"clean:\n");
3325 fprintf(fmk,
"\t\t@rm -f $(OBJS) core\n");
3327 fprintf(fmk,
"distclean: clean\n");
3328 fprintf(fmk,
"\t\t@rm -f $(PROGRAMS) $(PACKSO) $(PACKLIB) *Dict.* *.def *.exp \\\n");
3329 fprintf(fmk,
"\t\t *.so *.lib *.dll *.d *.log .def so_locations\n");
3330 fprintf(fmk,
"\t\t@rm -rf cxx_repository\n");
3332 fprintf(fmk,
"# Dependencies\n");
3334 fprintf(fmk,
"%sProjectSource.$(ObjSuf): %sProjectHeaders.h %sLinkDef.h %sProjectDict.$(SrcSuf)\n", pack, pack, pack, pack);
3336 fprintf(fmk,
"%sProjectDict.$(SrcSuf): %sProjectHeaders.h %sLinkDef.h\n", pack, pack, pack);
3337 fprintf(fmk,
"\t\t@echo \"Generating dictionary $@...\"\n");
3338 fprintf(fmk,
"\t\t@rootcint -f $@ -c $^\n");
3340 fprintf(fmk,
".$(SrcSuf).$(ObjSuf):\n");
3341 fprintf(fmk,
"\t\t$(CXX) $(CXXFLAGS) -c $<\n");
3359 if (!proofinf || (proofinf && strlen(proofinf) <= 0)) {
3360 Error(
"MakeProjectParProofInf",
"directory path undefined!");
3368 Error(
"MakeProjectParProofInf",
"path '%s' %s", proofinf,
3369 ((rcst == 0) ?
"is not a directory" :
"does not exist"));
3374 if (!pack || (pack && strlen(pack) <= 0)) {
3375 Error(
"MakeProjectParProofInf",
"package name undefined!");
3382 path.
Form(
"%s/BUILD.sh", proofinf);
3384 FILE *f = fopen(path.
Data(),
"wb");
3386 FILE *f = fopen(path.
Data(),
"w");
3389 Error(
"MakeProjectParProofInf",
"cannot create file '%s' (errno: %d)",
3394 fprintf(f,
"#! /bin/sh\n");
3395 fprintf(f,
"# Build libEvent library.\n");
3398 fprintf(f,
"# The environment variables ROOTPROOFLITE and ROOTPROOFCLIENT can be used to\n");
3399 fprintf(f,
"# adapt the script to the calling environment\n");
3401 fprintf(f,
"# if test ! \"x$ROOTPROOFLITE\" = \"x\"; then\n");
3402 fprintf(f,
"# echo \"event-BUILD: PROOF-Lite node (session has $ROOTPROOFLITE workers)\"\n");
3403 fprintf(f,
"# elif test ! \"x$ROOTPROOFCLIENT\" = \"x\"; then\n");
3404 fprintf(f,
"# echo \"event-BUILD: PROOF client\"\n");
3405 fprintf(f,
"# else\n");
3406 fprintf(f,
"# echo \"event-BUILD: standard PROOF node\"\n");
3407 fprintf(f,
"# fi\n");
3409 fprintf(f,
"if [ \"\" = \"clean\" ]; then\n");
3410 fprintf(f,
" make distclean\n");
3411 fprintf(f,
" exit 0\n");
3414 fprintf(f,
"make\n");
3415 fprintf(f,
"rc=$?\n");
3416 fprintf(f,
"echo \"rc=$?\"\n");
3417 fprintf(f,
"if [ $? != \"0\" ] ; then\n");
3418 fprintf(f,
" exit 1\n");
3420 fprintf(f,
"exit 0\n");
3426 path.
Form(
"%s/SETUP.C", proofinf);
3428 f = fopen(path.
Data(),
"wb");
3430 f = fopen(path.
Data(),
"w");
3433 Error(
"MakeProjectParProofInf",
"cannot create file '%s' (errno: %d)",
3438 fprintf(f,
"Int_t SETUP()\n");
3442 fprintf(f,
"// The environment variables ROOTPROOFLITE and ROOTPROOFCLIENT can be used to\n");
3443 fprintf(f,
"// adapt the macro to the calling environment\n");
3445 fprintf(f,
"// if (gSystem->Getenv(\"ROOTPROOFLITE\")) {\n");
3446 fprintf(f,
"// Printf(\"event-SETUP: PROOF-Lite node (session has %%s workers)\",\n");
3447 fprintf(f,
"// gSystem->Getenv(\"ROOTPROOFLITE\"));\n");
3448 fprintf(f,
"// } else if (gSystem->Getenv(\"ROOTPROOFCLIENT\")) {\n");
3449 fprintf(f,
"// Printf(\"event-SETUP: PROOF client\");\n");
3450 fprintf(f,
"// } else {\n");
3451 fprintf(f,
"// Printf(\"event-SETUP: standard PROOF node\");\n");
3452 fprintf(f,
"// }\n");
3454 fprintf(f,
" if (gSystem->Load(\"lib%s\") == -1)\n", pack);
3455 fprintf(f,
" return -1;\n");
3456 fprintf(f,
" return 0;\n");
3490 if (version > 1000000) version -= 1000000;
3491 if (version < 53419 || (59900 < version && version < 59907)) {
3506 if (!base)
continue;
3518 for (
int mode=0;mode<2; ++mode) {
3531 if (strcmp(obj->
GetName(),
"listOfRules")==0) {
3539 rulelnk = rulelnk->
Next();
3543 Warning(
"ReadStreamerInfo",
"%s has a %s in the list of TStreamerInfo.",
GetName(), info->IsA()->
GetName());
3553 Warning(
"ReadStreamerInfo",
"The StreamerInfo for %s does not have a list of elements.",info->
GetName());
3558 Bool_t isstl = element && strcmp(
"This",element->
GetName())==0;
3560 if ( (!isstl && mode ==0) || (isstl && mode ==1) ) {
3569 printf(
"ReadStreamerInfo, class:%s, illegal uid=%d\n",info->
GetName(),uid);
3629 for (
Int_t i=0;i<npids;i++) {
3641 Info(
"WriteProcessID",
"name=%s, file=%s", name,
GetName());
3675 listOfRules.
SetName(
"listOfRules");
3676 std::set<TClass*> classSet;
3680 Int_t uid = info->GetNumber();
3683 if (
gDebug > 0) printf(
" -class: %s info number %d saved\n",info->GetName(),uid);
3688 if (clinfo && clinfo->GetSchemaRules()) {
3689 if ( classSet.find( clinfo ) == classSet.end() ) {
3690 if (
gDebug > 0) printf(
" -class: %s stored the I/O customization rules\n",info->GetName());
3696 rule->AsString(obj->
String());
3697 listOfRules.
Add(obj);
3699 classSet.insert(clinfo);
3710 list.
Add(&listOfRules);
3747 "you want to read through a cache, but you have no valid cache " 3748 "directory set - reading remotely");
3749 ::Info(
"TFile::OpenFromCache",
"set cache directory using TFile::SetCacheFileDir()");
3758 "you want to read through a cache, but you are reading " 3759 "local files - CACHEREAD disabled");
3766 cachefilepath += fileurl.
GetFile();
3770 ::Warning(
"TFile::OpenFromCache",
"you want to read through a cache, but I " 3771 "cannot create the directory %s - CACHEREAD disabled",
3772 cachefilepathbasedir.
Data());
3777 cachefilepath +=
"__";
3781 if (strstr(
name,
"zip=")) {
3786 Int_t optioncount = 0;
3795 if (optioncount!=0) {
3800 newoptions += value;
3810 cachefilepath +=
"__";
3811 cachefilepath += zipname;
3825 char cacheblock[256];
3826 char remotblock[256];
3829 cfurl = cachefilepath;
3830 cfurl +=
"?filetype=raw";
3833 ropt +=
"&filetype=raw";
3846 ::Error(
"TFile::OpenFromCache",
3847 "cannot open the cache file to check cache consistency");
3852 ::Error(
"TFile::OpenFromCache",
3853 "cannot open the remote file to check cache consistency");
3860 if ((!cachefile->
ReadBuffer(cacheblock,256)) &&
3862 if (memcmp(cacheblock, remotblock, 256)) {
3863 ::Warning(
"TFile::OpenFromCache",
"the header of the cache file " 3864 "differs from the remote file - forcing an update");
3868 ::Warning(
"TFile::OpenFromCache",
"the header of the cache and/or " 3869 "remote file are not readable - forcing an update");
3884 ::Warning(
"TFile::OpenFromCache",
"you want to read through a cache, but I " 3885 "cannot make a cache copy of %s - CACHEREAD disabled",
3886 cachefilepathbasedir.
Data());
3892 ::Info(
"TFile::OpenFromCache",
"using local cache copy of %s [%s]",
3896 fileurl.
SetFile(cachefilepath);
3900 tagfile = cachefilepath;
3901 tagfile +=
".ROOT.cachefile";
3957 if (!url || strlen(url) <= 0) {
3958 ::Error(
"TFile::Open",
"no url specified");
3971 TString sto = opts(ito + strlen(
"TIMEOUT="), opts.
Length());
3976 if (
gDebug > 0)
::Info(
"TFile::Open",
"timeout of %d millisec requested", toms);
3978 sto.
Insert(0,
"TIMEOUT=");
3996 ::Info(
"TFile::Open",
"waited %d millisec for asynchronous open", toms - xtms);
3998 ::Info(
"TFile::Open",
"timeout option not supported (requires asynchronous" 4003 ::Error(
"TFile::Open",
"timeout expired while opening '%s'", expandedUrl.
Data());
4010 ::Warning(
"TFile::Open",
"incomplete 'TIMEOUT=' option specification - ignored");
4016 const char *option = opts;
4019 TString namelist(expandedUrl);
4036 while (namelist.
Tokenize(
n, from,
"|") && !f) {
4039 if (!strcasecmp(option,
"CACHEREAD") ||
4062 if (urlOptions.BeginsWith(
"pmerge") || urlOptions.Contains(
"&pmerge") || urlOptions.Contains(
" pmerge")) {
4066 f = (
TFile*)
gROOT->ProcessLineFast(
TString::Format(
"new TParallelMergingFile(\"%s\",\"%s\",\"%s\",%d)",
n.Data(),option,ftitle,compress));
4079 lfname = urlname.
GetUrl();
4081 f =
new TFile(lfname.
Data(), option, ftitle, compress);
4083 }
else if (type ==
kNet) {
4086 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name))) {
4087 if (
h->LoadPlugin() == -1)
4089 f = (
TFile*)
h->ExecPlugin(5,
name.Data(), option, ftitle, compress, netopt);
4092 }
else if (type ==
kWeb) {
4095 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name))) {
4096 if (
h->LoadPlugin() == -1)
4098 f = (
TFile*)
h->ExecPlugin(2,
name.Data(), option);
4101 }
else if (type ==
kFile) {
4104 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name)) &&
4105 h->LoadPlugin() == 0) {
4106 name.ReplaceAll(
"file:",
"");
4107 f = (
TFile*)
h->ExecPlugin(4,
name.Data(), option, ftitle, compress);
4109 f =
new TFile(
name.Data(), option, ftitle, compress);
4114 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name.Data()))) {
4115 if (
h->LoadPlugin() == -1)
4119 f = (
TFile*)
h->ExecPlugin(5,
name.Data(), option, ftitle, compress, netopt);
4121 f = (
TFile*)
h->ExecPlugin(4,
name.Data(), option, ftitle, compress);
4136 f =
TFile::Open( newUrl, option, ftitle, compress );
4199 if (!url || strlen(url) <= 0) {
4200 ::Error(
"TFile::AsyncOpen",
"no url specified");
4212 TString outf =
".TFileAsyncOpen_";
4223 while (namelist.
Tokenize(
n, from,
"|") && !f) {
4236 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name)) &&
4237 (!strcmp(
h->GetClass(),
"TXNetFile") || !strcmp(
h->GetClass(),
"TNetXNGFile"))
4238 &&
h->LoadPlugin() == 0) {
4239 f = (
TFile*)
h->ExecPlugin(6,
name.Data(), option, ftitle, compress, netopt,
kTRUE);
4243 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TFile",
name)) &&
4244 !strcmp(
h->GetClass(),
"TAlienFile") &&
h->LoadPlugin() == 0) {
4245 f = (
TFile*)
h->ExecPlugin(5,
name.Data(), option, ftitle, compress,
kTRUE);
4255 if (!notfound && !f)
4326 #if defined(R__WINGCC) 4330 #elif defined(R__SEEK64) 4331 return ::open64(pathname, flags, mode);
4342 if (fd < 0)
return 0;
4351 return ::read(fd, buf, len);
4359 return ::write(fd, buf, len);
4370 #if defined (R__SEEK64) 4371 return ::lseek64(fd, offset, whence);
4372 #elif defined(WIN32) 4373 return ::_lseeki64(fd, offset, whence);
4375 return ::lseek(fd, offset, whence);
4402 return ::_commit(fd);
4480 ::Error(
"TFile::SetCacheFileDir",
"no sufficient permissions on cache directory %s or cannot create it",
TString(cachedir).Data());
4522 cachetagfile +=
".tag.ROOT.cache";
4526 if (lastcleanuptime < cleanupinterval) {
4527 ::Info(
"TFile::ShrinkCacheFileDir",
"clean-up is skipped - last cleanup %lu seconds ago - you requested %lu", lastcleanuptime, cleanupinterval);
4533 cachetagfile +=
"?filetype=raw";
4536 if (!(tagfile =
TFile::Open(cachetagfile,
"RECREATE"))) {
4537 ::Error(
"TFile::ShrinkCacheFileDir",
"cannot create the cache tag file %s", cachetagfile.
Data());
4545 #if defined(R__WIN32) 4546 cmd =
"echo <TFile::ShrinkCacheFileDir>: cleanup to be implemented";
4547 #elif defined(R__MACOSX) 4548 cmd.
Format(
"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);
4550 cmd.
Format(
"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);
4557 ::Error(
"TFile::ShrinkCacheFileDir",
"error executing clean-up script");
4687 forceRemote =
kTRUE;
4688 else if (opts.
Contains(
"remote=0"))
4697 if (fname[0] ==
'/') {
4699 lfname.
Form(
"%s%s", prefix->
Data(), fname);
4702 }
else if (fname[0] ==
'~' || fname[0] ==
'$') {
4720 if (localFile && prefix)
4726 type = (localFile) ?
kLocal : type;
4727 }
else if (
TPMERegexp(
"^(http[s]?|s3http[s]?|[a]?s3|gs|gshttp[s]?){1}:",
"i").
Match(
name)) {
4731 }
else if (!strncmp(
name,
"file:", 5)) {
4757 if (of && (of->
GetSize() > 0)) {
4760 while ((f = (
TFile *)nxf()))
4774 if (handle && handle->
fFile) {
4804 if (of && (of->
GetSize() > 0)) {
4807 while ((f = (
TFile *)nxf()))
4813 return (
const TUrl *)0;
4821 fprintf(stderr,
"[TFile::Cp] Total %.02f MB\t|", (
Double_t)size/1048576);
4823 for (
int l = 0;
l < 20;
l++) {
4825 if (
l < 20*bytesread/size)
4826 fprintf(stderr,
"=");
4827 else if (
l == 20*bytesread/size)
4828 fprintf(stderr,
">");
4829 else if (
l > 20*bytesread/size)
4830 fprintf(stderr,
".");
4832 fprintf(stderr,
"=");
4838 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
4839 100.0*(size?(bytesread/((
float)size)):1), (lCopy_time>0.)?bytesread/lCopy_time/1048576.:0.);
4863 if (opt !=
"") opt +=
"&";
4872 char *copybuffer = 0;
4874 TFile *sfile =
this;
4891 ::Error(
"TFile::Cp",
"cannot open destination file %s", dst);
4897 rmdestiferror =
kTRUE;
4902 copybuffer =
new char[buffersize];
4904 ::Error(
"TFile::Cp",
"cannot allocate the copy buffer");
4922 if (progressbar)
CpProgress(totalread, filesize,watch);
4927 if (filesize - b1 > (
Long64_t)buffersize) {
4928 readsize = buffersize;
4930 readsize = filesize - b1;
4933 if (readsize == 0)
break;
4939 if ((read <= 0) || readop) {
4940 ::Error(
"TFile::Cp",
"cannot read from source file %s. readsize=%lld read=%lld readop=%d",
4941 sfile->
GetName(), readsize, read, readop);
4948 if ((written != read) || writeop) {
4949 ::Error(
"TFile::Cp",
"cannot write %lld bytes to destination file %s", read, dst);
4953 }
while (read == (
Long64_t)buffersize);
4957 fprintf(stderr,
"\n");
4963 if (dfile) dfile->
Close();
4965 if (dfile)
delete dfile;
4966 if (copybuffer)
delete[] copybuffer;
4968 if (rmdestiferror && (success !=
kTRUE))
4991 if (opt !=
"") opt +=
"&";
4997 opt +=
TString::Format(
"&cachesz=%d&readaheadsz=%d&rmpolicy=1", 4*buffersize, 2*buffersize);
5006 ::Error(
"TFile::Cp",
"cannot open source file %s", src);
5008 success = sfile->
Cp(dst, progressbar, buffersize);
5011 if (sfile) sfile->
Close();
5012 if (sfile)
delete sfile;
5021 #if defined(R__neverLINUX) && !defined(R__WINGCC) 5033 int advice = POSIX_FADV_WILLNEED;
5038 advice = POSIX_FADV_NORMAL;
5042 #if defined(R__SEEK64) 5043 Int_t result = posix_fadvise64(
fD, offset, len, advice);
5045 Int_t result = posix_fadvise(
fD, offset, len, advice);
5050 return (result != 0);
5072 return ((bytes < 0) ? 0 : bytes);
virtual Bool_t SendFileCloseEvent(TFile *)
TDatime fDatimeM
Date and time of last modification.
Describe Streamer information for one class version
virtual Bool_t SendFileWriteProgress(TFile *)
void SetFile(const char *file)
Long64_t GetRelOffset() const
virtual Bool_t cd(const char *path=0)
Change current directory to "this" directory.
virtual Int_t Sizeof() const
Return the size in bytes of the directory header.
static TProcessID * GetPID()
static: returns pointer to current TProcessID
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
Bool_t fIsArchive
!True if this is a pure archive file
static ROOT::TRWSpinLock fgRwLock
!Read-write lock to protect global PID list
virtual const char * GetName() const
Returns name of object.
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
Bool_t fIsPcmFile
!True if the file is a ROOT pcm file.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
std::string GetName(const std::string &scope_name)
virtual UInt_t GetUniqueID() const
Return the unique object id.
void frombuf(char *&buf, Bool_t *x)
virtual void DrawMap(const char *keys="*", Option_t *option="")
Draw map of objects in this file.
virtual Int_t Recover()
Attempt to recover file if not correctly closed.
TFileCacheRead * fCacheRead
!Pointer to the read cache (if any)
Char_t fUnits
Number of bytes for file pointers.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
const char * GetArchiveName() const
virtual Int_t SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
Return file stat information.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
TObjArray * fProcessIDs
!Array of pointers to TProcessIDs
virtual const char * GetFlagsOpt() const
Return the optimization flags.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Long64_t fBEGIN
First used byte in file.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
ROOT::ESTLType IsSTLCont(std::string_view type)
type : type name: vector<list<classA,allocator>,allocator> result: 0 : not stl container code of cont...
void Set(Int_t n)
Set size of this array to n chars.
static Bool_t AddRule(const char *rule)
Add a schema evolution customization rule.
virtual Bool_t IsPathLocal(const char *path)
Returns TRUE if the url in 'path' points to the local file system.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
static Bool_t fgReadInfo
if true (default) ReadStreamerInfo is called when opening a file
virtual Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence)
Interface to system lseek.
Long64_t GetMemberFilePosition() const
Return position in archive of current member.
Long64_t fBytesWrite
Number of bytes written to this file.
basic_string_view< char > string_view
EAsyncOpenStatus
Asynchronous open request status.
virtual const char * WorkingDirectory()
Return working directory.
Long64_t fSeekParent
Location of parent directory on file.
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
virtual void FillBuffer(char *&buffer)
Encode file output buffer.
Double_t fSumBuffer
Sum of buffer sizes of objects written so far.
static std::atomic< Long64_t > fgBytesRead
Number of bytes read by all TFile objects.
void Fatal(const char *location, const char *msgfmt,...)
Collectable string class.
Long64_t fSeekKeys
Location of Keys record on file.
virtual Int_t ReOpen(Option_t *mode)
Reopen a file with a different access mode.
Int_t fCompress
Compression level and algorithm.
TArrayC * fClassIndex
!Index of TStreamerInfo classes written to this file
Bool_t Matches(const char *name)
Return kTRUE if this async request matches the open request specified by 'url'.
static void IncrementFileCounter()
virtual void ReadFree()
Read the FREE linked list.
A cache when reading files over the network.
virtual void Save()
Save recursively all directory keys and headers.
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.
virtual void Flush()
Synchronize a file's in-memory and on-disk states.
virtual void SetCacheRead(TFileCacheRead *cache, TObject *tree=0, ECacheAction action=kDisconnect)
Set a pointer to the read cache.
static TList * fgAsyncOpenRequests
virtual void SetOffset(Long64_t offset, ERelativeTo pos=kBeg)
Set position from where to start reading.
This class represents a WWW compatible URL.
virtual char * GetBuffer() const
TString & ReplaceAll(const TString &s1, const TString &s2)
virtual void RemoveLast()
Remove the last object of the list.
virtual TKey * CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
Creates key for object and converts data to buffer.
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.
Class holding info about the file being opened
const char * GetProtocol() const
static UInt_t fgOpenTimeout
Timeout for open operations in ms - 0 corresponds to blocking i/o.
virtual const char * GetClassName() const
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual void Seek(Long64_t offset, ERelativeTo pos=kBeg)
Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
TObjArray * GetListOfProcessIDs() const
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
static void SetFileReadCalls(Int_t readcalls=0)
virtual Int_t GetEntries() const
virtual Bool_t ReadBuffer(char *buf, Int_t len)
Read a buffer from the file.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
virtual const char * HomeDirectory(const char *userName=0)
Return the user's home directory.
void ReadBuffer(char *&buffer)
Stream UUID from input buffer.
void ToUpper()
Change string to upper case.
Buffer base class used for serializing objects.
Bool_t HasInterpreterInfo() const
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual Bool_t ChangeDirectory(const char *path)
Change directory.
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
void Add(TObject *obj)
This function may not be used (but we need to provide it since it is a pure virtual in TCollection)...
static TArchiveFile * Open(const char *url, TFile *file)
Return proper archive file handler depending on passed url.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual Long64_t GetBytesWritten() const
Return the total number of bytes written so far to the file.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
static Bool_t ShrinkCacheFileDir(Long64_t shrinkSize, Long_t cleanupInteval=0)
Try to shrink the cache to the desired size.
virtual Int_t Sizeof() const
Return size of the TNamed part of the TObject.
void ToLower()
Change string to lower-case.
virtual void FillBuffer(char *&buffer)
Encode TNamed into output buffer.
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
Iterator of object array.
R__EXTERN TVirtualMutex * gROOTMutex
Int_t WriteBufferViaCache(const char *buf, Int_t len)
Write buffer via cache.
virtual const char * GetSoExt() const
Get the shared library extension.
const char * GetOptions() const
Int_t GenerateHeaderFile(const char *dirname, const TList *subClasses=0, const TList *extrainfos=0)
Generate header file for the class described by this TStreamerInfo the function is called by TFile::M...
TArchiveMember * GetMember() const
Long64_t fBytesReadExtra
Number of extra bytes (overhead) read by the readahead buffer.
virtual Int_t Write(const char *name=0, Int_t opt=0, Int_t bufsize=0)
Write all objects in memory to disk.
virtual const char * GetFlagsDebug() const
Return the debug flags.
TList * fInfoCache
!Cached list of the streamer infos in this file
TObject * At(Int_t idx) const
virtual void IgnoreInterrupt(Bool_t ignore=kTRUE)
If ignore is true ignore the interrupt signal, else restore previous behaviour.
static void SetReadStreamerInfo(Bool_t readinfo=kTRUE)
Specify if the streamerinfos must be read at file opening.
Long64_t fSeekInfo
Location on disk of StreamerInfo record.
Int_t fReadCalls
Number of read calls ( not counting the cache calls )
TArchiveFile * fArchive
!Archive file from which we read this file
void ReadBuffer(char *&buffer)
Decode Date/Time from output buffer, used by I/O system.
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
static void SetReadaheadSize(Int_t bufsize=256000)
TString & Insert(Ssiz_t pos, const char *s)
virtual Int_t GetBytesInCache() const
virtual Int_t GetNkeys() const
virtual void FillBuffer(char *&buffer)
Encode directory header into output buffer.
R__EXTERN void **(* gThreadTsd)(void *, Int_t)
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
void SysError(const char *location, const char *msgfmt,...)
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
void SumBuffer(Int_t bufsize)
Increment statistics for buffer sizes of objects in this file.
if object in a list can be deleted
virtual void FillBuffer(char *&buffer)
Encode fre structure into output buffer.
static Int_t GetErrno()
Static function returning system error number.
virtual Int_t WriteTObject(const TObject *obj, const char *name=0, Option_t *option="", Int_t bufsize=0)
Write object obj to this directory.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Create / open a file.
TFree * AddFree(TList *lfree, Long64_t first, Long64_t last)
Add a new free segment to the list of free segments.
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 void SetFileBytesWritten(Long64_t bytes=0)
const char * GetFile() const
virtual Int_t GetErrno() const
Method returning errno. Is overriden in TRFIOFile.
static TObjArray * GetPIDs()
static: returns array of TProcessIDs
Int_t fNbytesInfo
Number of bytes for StreamerInfo record.
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
TMap * fCacheReadMap
!Pointer to the read cache (if any)
virtual int Unlink(const char *name)
Unlink, i.e. remove, a file.
virtual Int_t GetClassVersion() const =0
Sequenceable collection abstract base class.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void ResetErrno() const
Method resetting the errno. Is overridden in TRFIOFile.
void Stop()
Stop the stopwatch.
TDatime fDatimeC
Date and time when directory is created.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
virtual FILE * TempFileName(TString &base, const char *dir=0)
Create a secure temporary file by appending a unique 6 letter string to base.
virtual void ReadBuffer(char *&buffer)
Read string from I/O buffer.
static Bool_t GetReadStreamerInfo()
If the streamerinfos are to be read at file opening.
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t Flush()
Flush the current write buffer to the file.
virtual void SetCompressionLevel(Int_t level=1)
See comments for function SetCompressionSettings.
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.
virtual void WriteFree()
Write FREE linked list on the file.
TString fRealName
Effective real file name (not original url)
static Long64_t GetFileBytesRead()
Static function returning the total number of bytes read from all files.
static EFileType GetType(const char *name, Option_t *option="", TString *prefix=0)
Resolve the file type as a function of the protocol field in 'name'.
void Init(TClassEdit::TInterpreterLookupHelper *helper)
static TFile * OpenFromCache(const char *name, Option_t *="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Open a file for reading through the file cache.
void Clear()
Clear string without changing its capacity.
Double_t Log10(Double_t x)
static void GetDateTime(UInt_t datetime, Int_t &date, Int_t &time)
Static function that returns the date and time.
R__EXTERN TVirtualMonitoringWriter * gMonitoringWriter
static Long64_t GetFileBytesWritten()
Static function returning the total number of bytes written to all files.
virtual Int_t WriteFile(Int_t cycle=1, TFile *f=0)
Write the encoded object supported by this key.
void Info(const char *location, const char *msgfmt,...)
ROOT::ESTLType STLKind(std::string_view type)
Converts STL container name to number.
TString & Append(const char *cs)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
const char * GetAnchor() const
virtual TList * GetList() const
void tobuf(char *&buf, Bool_t x)
void Continue()
Resume a stopped stopwatch.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
A TProcessID identifies a ROOT job in a unique way in time and space.
Long64_t fSeekDir
Location of directory on file.
virtual void Delete(Option_t *option="")
Delete an object from the file.
virtual TString GetNewUrl()
void Error(const char *location, const char *msgfmt,...)
R__EXTERN TPluginManager * gPluginMgr
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual Int_t SysWrite(Int_t fd, const void *buf, Int_t len)
Interface to system write. All arguments like in POSIX write().
void MayNotUse(const char *method)
This function can be used in classes that should override a certain function, but in the inherited cl...
virtual void IncrementProcessIDs()
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
virtual Int_t SysSync(Int_t fd)
Interface to system fsync. All arguments like in POSIX fsync().
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.
const char * GetMemberName() const
virtual void ls(Option_t *option="") const
List Directory contents.
virtual Int_t SysClose(Int_t fd)
Interface to system close. All arguments like in POSIX close().
static UInt_t GetOpenTimeout()
Returns open timeout (in ms).
virtual void ShowStreamerInfo()
Show the StreamerInfo of all classes written to this file.
virtual Int_t SysRead(Int_t fd, void *buf, Int_t len)
Interface to system read. All arguments like in POSIX read().
const char * GetOpt() const
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
TClass * GetClass() const
Long64_t fEND
Last used byte in file.
R__EXTERN TSystem * gSystem
TList * fKeys
Pointer to keys list in memory.
#define R__RWLOCK_RELEASE_READ(rwlock)
virtual Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode)
Interface to system open. All arguments like in POSIX open().
#define R__RWLOCK_RELEASE_WRITE(rwlock)
UInt_t GetCheckSum() const
virtual void WriteStreamerInfo()
Write the list of TStreamerInfo as a single object in this file The class Streamer description for al...
A ROOT file is structured in Directories (like a file system).
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries.
TObject * Remove(TObject *key)
Remove the (key,value) pair with key from the map.
virtual Int_t Write(const char *name=0, Int_t opt=0, Int_t bufsiz=0)
Write memory objects to this file.
virtual Int_t GetBytesToPrefetch() const
Max number of bytes to prefetch.
Long64_t GetDecompressedSize() const
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void Delete(const char *namecycle="")
Delete object namecycle.
void SetBaseCheckSum(UInt_t cs)
virtual Bool_t WriteBuffer(const char *buf, Int_t len)
Write a buffer to the file.
const TMatches FindRules(const TString &source) const
Return all the rules that are about the given 'source' class.
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
R__ALWAYS_INLINE Bool_t IsOnHeap() const
Int_t IncrementCount()
Increase the reference count to this object.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual Bool_t ReadFile()
Read the key structure from the file.
virtual void MakeFree(Long64_t first, Long64_t last)
Mark unused bytes on the file.
Int_t fNbytesName
Number of bytes in TNamed at creation time.
virtual void SetFile(TFile *file, TFile::ECacheAction action=TFile::kDisconnect)
Set the file using this cache and reset the current blocks (if any).
static std::atomic< Long64_t > fgFileCounter
Counter for all opened files.
Int_t DecrementCount()
The reference fCount is used to delete the TProcessID in the TFile destructor when fCount = 0...
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...
static std::atomic< Long64_t > fgBytesWrite
Number of bytes written by all TFile objects.
static void CpProgress(Long64_t bytesread, Long64_t size, TStopwatch &watch)
Print file copy progress.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
static std::atomic< Int_t > fgReadCalls
Number of bytes read from all TFile objects.
The ROOT global object gROOT contains a list of all defined classes.
virtual void Draw(Option_t *option="")
Fill Graphics Structure and Paint.
virtual void Delete(const char *namecycle="")
Delete Objects or/and keys in a directory.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual TList * GetStreamerInfoList()
Read the list of TStreamerInfo objects written to this file.
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
void Build(TFile *motherFile=0, TDirectory *motherDir=0)
Initialise directory to defaults.
static Int_t GetFileReadCalls()
Static function returning the total number of read calls from all files.
Bool_t InheritsFrom(const char *cl) const
Return kTRUE if this class inherits from a class with name "classname".
virtual const char * GetMakeSharedLib() const
Return the command line use to make a shared library.
void SetName(const char *name)
virtual TObject * ReadObjWithBuffer(char *bufferRead)
To read a TObject* from bufferRead.
virtual void Init(Bool_t create)
Initialize a TFile object.
Long64_t GetFirst() const
virtual void FreeDirectory(void *dirp)
Free a directory.
Int_t ReadBufferViaCache(char *buf, Int_t len)
Read buffer via cache.
static TFile *& CurrentFile()
Return the current ROOT file if any.
virtual TObjLink * FirstLink() const
Bool_t fWritable
True if directory is writable.
Int_t AppendKey(TKey *key)
Insert key in the linked list of keys of this directory.
Option_t * GetOption() const
virtual Int_t OpenArchive()=0
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...
virtual Long64_t GetBytesRead() const
virtual void ReadBuffer(char *&buffer)
Decode one free structure from input buffer.
static Bool_t fgOnlyStaged
Before the file is opened, it is checked, that the file is staged, if not, the open fails...
static Bool_t GetOnlyStaged()
Returns staged only flag.
virtual void ReadStreamerInfo()
Read the list of StreamerInfo from this file.
Double_t fSum2Buffer
Sum of squares of buffer sizes of objects written so far.
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=0)
Redirect standard output (stdout, stderr) to the specified file.
void CheckInit()
Initialize fObjects.
void SetHost(const char *host)
TString & Remove(Ssiz_t pos)
TFile()
File default Constructor.
static void Add(TGlobalMappedFunction *gmf)
virtual int Chmod(const char *file, UInt_t mode)
Set the file permission bits. Returns -1 in case or error, 0 otherwise.
TList * fFree
Free segments linked list table.
Version_t GetClassVersion() const
void ReadKeyBuffer(char *&buffer)
Decode input buffer.
void SetAnchor(const char *anchor)
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
virtual const char * GetIncludePath()
Get the list of include path.
TObject * UncheckedAt(Int_t i) const
virtual Bool_t IsOpen() const
Returns kTRUE in case file is open and kFALSE if file is not open.
virtual void SetName(const char *newname)
Set the name for directory If the directory name is changed after the directory was written once...
Int_t fNbytesFree
Number of bytes for free segments structure.
static Bool_t fgCacheFileForce
Indicates, to force all READ to CACHEREAD.
TFile * fFile
TFile instance of the file being opened.
Int_t Sizeof() const
return number of bytes occupied by this TFree on permanent storage
virtual Int_t ReadKeys(Bool_t forceRead=kTRUE)
Read the linked list of keys.
virtual Long64_t GetSeekKey() const
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual int Symlink(const char *from, const char *to)
Create a symbolic link from file1 to file2.
static Int_t GetReadaheadSize()
Static function returning the readahead buffer size.
#define R__RWLOCK_ACQUIRE_READ(rwlock)
Describe directory structure in memory.
Wrapper around a TObject so it can be stored in a TList.
TFileCacheWrite * GetCacheWrite() const
Return a pointer to the current write cache.
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
virtual void Clear(Option_t *option="")
delete the TObjArray pointing to referenced objects this function is called by TFile::Close("R") ...
virtual Int_t GetBufferSize() const
Int_t IndexOf(const TObject *obj) const
virtual Long64_t GetSize() const
Returns the current file size.
Bool_t fNoAnchorInName
!True if we don't want to force the anchor to be appended to the file name
void SetWritable(Bool_t writable=kTRUE)
Set the new value of fWritable recursively.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
The TTimeStamp encapsulates seconds and ns since EPOCH.
static Bool_t fgCacheFileDisconnected
Indicates, we trust in the files in the cache dir without stat on the cached file.
TList * fOpenPhases
!Time info about open phases
virtual TFile * GetFile() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static constexpr double s
#define R__LOCKGUARD(mutex)
TString fOption
File options.
Bool_t fMustFlush
!True if the file buffers must be flushed
static TProcessID * GetSessionProcessID()
static function returning the pointer to the session TProcessID
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
Float_t GetCompressionFactor()
Return the file compression factor.
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 void Clear(Option_t *option="")
Remove all objects from the list.
Int_t GetCompress() const
virtual Bool_t SendFileReadProgress(TFile *)
virtual void Close(Option_t *option="")
Delete all objects from memory and directory structure itself.
virtual Int_t SetCurrentMember()=0
Int_t Match(const TString &s, UInt_t start=0)
Runs a match on s against the regex 'this' was created with.
Bool_t fIsRootFile
!True is this is a ROOT file, raw file otherwise
virtual void AddAfter(const TObject *after, TObject *obj)
Insert object after object after in the list.
const TList * GetStreamerInfoCache()
Returns the cached list of StreamerInfos used in this file.
Mother of all ROOT objects.
TObjArray * GetElements() const
Bool_t FlushWriteCache()
Flush the write cache if active.
static Bool_t SetOnlyStaged(Bool_t onlystaged)
Sets only staged flag.
virtual void Paint(Option_t *option="")
Paint all objects in the file.
virtual void SetCompressionSettings(Int_t settings=1)
Used to specify the compression level and algorithm.
TObject * GetObject() const
static TString fgCacheFileDir
Directory where to locally stage files.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
Int_t GetClassVersion() const
virtual const TUrl * GetEndpointUrl() const
static TString UpdateAssociativeToVector(const char *name)
If we have a map, multimap, set or multiset, plus unordered partners, and the key is a class...
void BuildCheck(TFile *file=0)
Check if built and consistent with the class dictionary.
virtual ~TFile()
File destructor.
Bool_t R_ISDIR(Int_t mode)
virtual Int_t WriteBuffer(const char *buf, Long64_t pos, Int_t len)
Write buffer at position pos in the write buffer.
static TFileOpenHandle * AsyncOpen(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Submit an asynchronous open request.
virtual void Add(TObject *obj)
Int_t MakeProjectParProofInf(const char *packname, const char *proofinfdir)
Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'.
Wrapper for PCRE library (Perl Compatible Regular Expressions).
virtual void ShowOutput(RedirectHandle_t *h)
Display the content associated with the redirection described by the opaque handle 'h'...
virtual void Print(Option_t *option="") const
Print all objects in the 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 Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf)
Read the nbuf blocks described in arrays pos and len.
virtual Int_t GetNProcessIDs() const
void SetOptions(const char *opt)
Int_t fNProcessIDs
Number of TProcessID written to this file.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
virtual Int_t Sizeof() const
Return the size in bytes of the file header.
static UInt_t SetOpenTimeout(UInt_t timeout)
Sets open timeout time (in ms). Returns previous timeout value.
Int_t GetEntries() const
Return the number of objects in array (i.e.
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
Copy a file.
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
void FillBuffer(char *&buffer)
Stream UUID into output buffer.
virtual void SetCompressionAlgorithm(Int_t algorithm=0)
See comments for function SetCompressionSettings.
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
Int_t Atoi() const
Return integer value of string.
#define R__RWLOCK_ACQUIRE_WRITE(rwlock)
virtual Int_t ReadBuffer(char *buf, Long64_t pos, Int_t len)
Read buffer at position pos.
TFileCacheRead * GetCacheRead(TObject *tree=0) const
Return a pointer to the current read cache.
Int_t fVersion
File format version.
Long64_t fArchiveOffset
!Offset at which file starts in archive
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
static void ResetErrno()
Static function resetting system error number.
Undefined compression algorithm (must be kept the last of the list in case a new algorithm is added)...
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
Int_t fWritten
Number of objects written so far.
static Int_t fgReadaheadSize
Readahead buffer size.
Long64_t fOffset
!Seek offset cache
virtual void WriteHeader()
Write File Header.
Bool_t IsWritable() const
Bool_t fInitDone
!True if the file has been initialized
TFileOpenHandle * fAsyncHandle
!For proper automatic cleanup
virtual void Close(Option_t *option="")
Close out any threads or asynchronous fetches used by the underlying implementation.
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSize() const
Abstract Interface class describing Streamer information for one class.
static void SetFileBytesRead(Long64_t bytes=0)
virtual void ls(Option_t *option="") const
List file contents.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Long64_t fSeekFree
Location on disk of free segments structure.
static Long64_t GetFileCounter()
virtual void SetCacheWrite(TFileCacheWrite *cache)
Set a pointer to the write cache.
virtual const char * GetObjExt() const
Get the object file extension.
Long64_t fBytesRead
Number of bytes read from this file.
static const char * GetCacheFileDir()
Get the directory where to locally stage/cache remote files.
virtual TProcessID * ReadProcessID(UShort_t pidf)
The TProcessID with number pidf is read from this file.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
A cache when writing files over the network
Int_t GetBestBuffer() const
Return the best buffer size of objects on this file.
virtual const char * GetTitle() const
Returns title of object.
Int_t MakeProjectParMake(const char *packname, const char *filename)
Create makefile at 'filemake' for PAR package 'pack'.
virtual Bool_t ReadBufferAsync(Long64_t offs, Int_t len)
Int_t fNbytesKeys
Number of bytes for the keys.
TFileCacheWrite * fCacheWrite
!Pointer to the write cache (if any)
virtual void Close(Option_t *option="")
Close a file.
virtual Bool_t Matches(const char *name)
Return kTRUE if 'url' matches the coordinates of this file.
const char * Data() const
Array of chars or bytes (8 bits per element).
virtual EAsyncOpenStatus GetAsyncOpenStatus()