183 {
185 off_t bytes_read = 0;
187
189
192
193
196 int min_left = inode_left < sector_left ? inode_left : sector_left;
197
198
199 int chunk_size =
size < min_left ?
size : min_left;
200 if (chunk_size <= 0)
201 break;
202
204
206 } else {
207
208
209 if (bounce ==
NULL) {
212 break;
213 }
215 memcpy (
buffer + bytes_read, bounce + sector_ofs, chunk_size);
216 }
217
218
220 offset += chunk_size;
221 bytes_read += chunk_size;
222 }
224
225 return bytes_read;
226}
uint32_t disk_sector_t
Definition: disk.h:12
off_t inode_length(const struct inode *inode)
Definition: inode.c:311
static disk_sector_t byte_to_sector(const struct inode *inode, off_t pos)
Definition: inode.c:44
int32_t off_t
Definition: off_t.h:9
unsigned char uint8_t
Definition: stdint.h:20
void * memcpy(void *, const void *, size_t)
Definition: string.c:7