| typedef struct DiskPart DiskPart; |
| diskpartread(Disk *dd, u32int len, u64int offset) |
| DiskPart *d = (DiskPart*)dd; |
| if(offset+len > d->size){ |
| werrstr("read past end of partition %llud + %lud > %llud", offset, len, d->size); |
| return diskread(d->subdisk, len, offset+d->offset); |
| DiskPart *d = (DiskPart*)dd; |
| return disksync(d->subdisk); |
| DiskPart *d = (DiskPart*)dd; |
| diskpart(Disk *subdisk, u64int offset, u64int size) |
| d = mallocz(sizeof(DiskPart), 1); |
| d->disk._read = diskpartread; |
| d->disk._sync = diskpartsync; |
| d->disk._close = diskpartclose; |
| if(d->_read != diskpartread) |
| ((DiskPart*)d)->subdisk = nil; |