Lines Matching refs:pos

657 DataStream::FindBlockRun(off_t pos)
661 if (pos > fInode->data.size)
672 if (fCurrent >= 0 && pos >= fRunFileOffset && pos < fRunBlockEnd)
678 && pos >= fInode->data.max_direct_range) {
680 && pos >= fInode->data.max_indirect_range) {
688 off_t start = pos - fInode->data.max_indirect_range;
713 if (fLevel != 1 || pos < fRunFileOffset) {
725 if (fRunBlockEnd > pos)
737 if (fRunFileOffset > pos) {
749 if (fRunBlockEnd > pos)
763 DataStream::ReadAt(off_t pos, void *buffer, size_t size)
767 //printf("DataStream::ReadAt(pos = %Ld,buffer = %p,size = %ld);\n",pos,buffer,size);
769 if (pos + size > fInode->data.size) {
770 if (pos > fInode->data.size) // reading outside the file
773 size = fInode->data.size - pos;
779 //printf("### read %ld bytes at %Ld\n",size,pos);
781 status_t status = FindBlockRun(pos);
785 ssize_t bytes = min_c(size, fRunBlockEnd - pos);
787 //printf("### read %ld bytes from %Ld\n### --\n",bytes,fDisk->ToOffset(fRun) + pos - fRunFileOffset);
788 bytes = fDisk->ReadAt(fDisk->ToOffset(fRun) + pos - fRunFileOffset,
800 pos += bytes;
811 DataStream::WriteAt(off_t pos, const void *buffer, size_t size)
816 if (pos + size > fInode->data.size) {
817 if (pos > fInode->data.size) // writing outside the file
820 size = fInode->data.size - pos;
826 //printf("### write %ld bytes at %Ld\n",size,pos);
828 status_t status = FindBlockRun(pos);
832 ssize_t bytes = min_c(size,fRunBlockEnd - pos);
834 //printf("### write %ld bytes to %Ld\n### --\n",bytes,fDisk->ToOffset(fRun) + pos - fRunFileOffset);
835 bytes = fDisk->WriteAt(fDisk->ToOffset(fRun) + pos - fRunFileOffset,buffer,bytes);
841 pos += bytes;