| 586 | } |
| 587 | |
| 588 | ssize_t romfs_read(struct _reent *r, void *fd, char *ptr, size_t len) |
| 589 | { |
| 590 | romfs_fileobj* file = (romfs_fileobj*)fd; |
| 591 | u64 endPos = file->pos + len; |
| 592 | |
| 593 | /* check if past end-of-file */ |
| 594 | if(file->pos >= file->file->dataSize) |
| 595 | return 0; |
| 596 | |
| 597 | /* truncate the read to end-of-file */ |
| 598 | if(endPos > file->file->dataSize) |
| 599 | endPos = file->file->dataSize; |
| 600 | len = endPos - file->pos; |
| 601 | |
| 602 | ssize_t adv = _romfs_read(file->mount, file->offset + file->pos, ptr, len); |
| 603 | if(adv >= 0) |
| 604 | { |
| 605 | file->pos += adv; |
| 606 | return adv; |
| 607 | } |
| 608 | |
| 609 | r->_errno = EIO; |
| 610 | return -1; |
| 611 | } |
| 612 | |
| 613 | off_t romfs_seek(struct _reent *r, void *fd, off_t pos, int dir) |
| 614 | { |
nothing calls this directly
no test coverage detected