Lines Matching refs:pos

665 DataStream::FindBlockRun(off_t pos)
669 if (pos > fInode->data.size)
680 if (fCurrent >= 0 && pos >= fRunFileOffset && pos < fRunBlockEnd)
686 && pos >= fInode->data.max_direct_range) {
688 && pos >= fInode->data.max_indirect_range) {
696 off_t start = pos - fInode->data.max_indirect_range;
721 if (fLevel != 1 || pos < fRunFileOffset) {
733 if (fRunBlockEnd > pos)
745 if (fRunFileOffset > pos) {
757 if (fRunBlockEnd > pos)
771 DataStream::ReadAt(off_t pos, void *buffer, size_t size)
775 //printf("DataStream::ReadAt(pos = %lld,buffer = %p,size = %ld);\n",pos,buffer,size);
777 if (pos + (off_t)size > fInode->data.size) {
778 if (pos > fInode->data.size) // reading outside the file
781 size = fInode->data.size - pos;
787 //printf("### read %ld bytes at %lld\n",size,pos);
789 status_t status = FindBlockRun(pos);
793 ssize_t bytes = min_c((off_t)size, fRunBlockEnd - pos);
795 //printf("### read %ld bytes from %lld\n### --\n",bytes,fDisk->ToOffset(fRun) + pos - fRunFileOffset);
796 bytes = fDisk->ReadAt(fDisk->ToOffset(fRun) + pos - fRunFileOffset,
808 pos += bytes;
819 DataStream::WriteAt(off_t pos, const void *buffer, size_t size)
824 if (pos + (off_t)size > fInode->data.size) {
825 if (pos > fInode->data.size) // writing outside the file
828 size = fInode->data.size - pos;
834 //printf("### write %ld bytes at %lld\n",size,pos);
836 status_t status = FindBlockRun(pos);
840 ssize_t bytes = min_c((off_t)size, fRunBlockEnd - pos);
842 //printf("### write %ld bytes to %lld\n### --\n",bytes,fDisk->ToOffset(fRun) + pos - fRunFileOffset);
843 bytes = fDisk->WriteAt(fDisk->ToOffset(fRun) + pos - fRunFileOffset,buffer,bytes);
849 pos += bytes;