Updated hardfile code
This commit is contained in:
parent
c9224b68d3
commit
022aff7331
2 changed files with 1537 additions and 646 deletions
944
src/hardfile.cpp
944
src/hardfile.cpp
File diff suppressed because it is too large
Load diff
|
@ -481,6 +481,31 @@ int hdf_write_target(struct hardfiledata* hfd, void* buffer, uae_u64 offset, int
|
||||||
return got;
|
return got;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int hdf_resize_target(struct hardfiledata *hfd, uae_u64 newsize)
|
||||||
|
{
|
||||||
|
if (newsize < hfd->physsize) {
|
||||||
|
write_log("hdf_resize_target: truncation not implemented\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (newsize == hfd->physsize) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/* Now, newsize must be larger than hfd->physsize, we seek to newsize - 1
|
||||||
|
* and write a single 0 byte to make the file exactly newsize bytes big. */
|
||||||
|
if (fseek(hfd->handle->f, newsize - 1, SEEK_SET) != 0) {
|
||||||
|
write_log("hdf_resize_target: fseek failed errno %d\n", errno);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (fwrite("", 1, 1, hfd->handle->f) != 1) {
|
||||||
|
write_log("hdf_resize_target: failed to write byte at position "
|
||||||
|
"%lld errno %d\n", newsize - 1, errno);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
write_log("hdf_resize_target: %lld -> %lld\n", hfd->physsize, newsize);
|
||||||
|
hfd->physsize = newsize;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void generatestorageproperty(struct uae_driveinfo *udi, int ignoreduplicates)
|
static void generatestorageproperty(struct uae_driveinfo *udi, int ignoreduplicates)
|
||||||
{
|
{
|
||||||
_tcscpy(udi->vendor_id, _T("UAE"));
|
_tcscpy(udi->vendor_id, _T("UAE"));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue