37 #include <sys/types.h>
39 #include <sys/param.h>
65 char Pfn[MAXPATHLEN+8];
76 const char *Pfn2Lfn(
const char *Lfn)
87 XrdVersionInfo &vInfo,
bool autoload)
89 {
if (rdSz <= 65536) rdSz = 67108864;
90 else rdSz = ((rdSz/65536) + (rdSz%65536 != 0)) * 65536;
121 ~inFile() {
if (fP)
delete fP;}
124 const char *Lfn = Pfn2Lfn(Pfn);
127 off_t Offset=0, fileSize;
128 size_t ioSize, calcSize;
133 if ((rc = In.fP->Open(Lfn,O_RDONLY,0,openEnv)))
return (rc > 0 ? -rc : rc);
137 if ((rc = In.fP->Fstat(&
Stat)))
return (rc > 0 ? -rc : rc);
138 if (!(
Stat.st_mode & S_IFREG))
return -EPERM;
139 calcSize = fileSize =
Stat.st_size;
140 MTime =
Stat.st_mtime;
144 ioSize = (fileSize < (off_t)rdSz ? fileSize : rdSz); rc = 0;
145 buffP = (
char *)malloc(ioSize);
146 if (!buffP)
return -ENOMEM;
151 {
if ((rc= In.fP->Read(buffP, Offset, ioSize)) < 0)
break;
152 csP->
Update(buffP, ioSize);
153 calcSize -= ioSize; Offset += ioSize;
154 if (calcSize < (
size_t)ioSize) ioSize = calcSize;
160 if (rc < 0)
eDest->
Emsg(
"Cks", rc,
"read", Pfn);
164 return (rc < 0 ? rc : 0);
227 const char *Lfn = Pfn2Lfn(Pfn);
233 return (rc > 0 ? -rc : 0);
int stat(const char *path, struct stat *buf)
LfnPfn(const char *lfn, int &rc)
virtual void Update(const char *Buff, int BLen)=0
virtual int Ver(const char *Lfn, XrdCksData &Cks)
virtual int Del(const char *Lfn, XrdCksData &Cks)
virtual char * List(const char *Lfn, char *Buff, int Blen, char Sep=' ')
virtual int Get(const char *Lfn, XrdCksData &Cks)
XrdCksManOss(XrdOss *ossX, XrdSysError *erP, int iosz, XrdVersionInfo &vInfo, bool autoload=false)
virtual int Set(const char *Lfn, XrdCksData &Cks, int myTime=0)
virtual int ModTime(const char *Pfn, time_t &MTime)
virtual int Calc(const char *Lfn, XrdCksData &Cks, int doSet=1)
virtual int Get(const char *Pfn, XrdCksData &Cks)
virtual int Del(const char *Pfn, XrdCksData &Cks)
virtual int Calc(const char *Pfn, XrdCksData &Cks, int doSet=1)
virtual char * List(const char *Pfn, char *Buff, int Blen, char Sep=' ')
virtual int Ver(const char *Pfn, XrdCksData &Cks)
virtual int Set(const char *Pfn, XrdCksData &Cks, int myTime=0)
virtual int Lfn2Pfn(const char *Path, char *buff, int blen)
virtual XrdOssDF * newFile(const char *tident)=0
virtual int Stat(const char *path, struct stat *buff, int opts=0, XrdOucEnv *envP=0)=0
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)