125 |
read(pFile->hFileRead, &ChunkID, 4); |
read(pFile->hFileRead, &ChunkID, 4); |
126 |
read(pFile->hFileRead, &ullCurrentChunkSize, pFile->FileOffsetSize); |
read(pFile->hFileRead, &ullCurrentChunkSize, pFile->FileOffsetSize); |
127 |
#elif defined(WIN32) |
#elif defined(WIN32) |
128 |
const LARGE_INTEGER liFilePos = { .QuadPart = filePos }; |
LARGE_INTEGER liFilePos; |
129 |
|
liFilePos.QuadPart = filePos; |
130 |
if (SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
if (SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
131 |
DWORD dwBytesRead; |
DWORD dwBytesRead; |
132 |
ReadFile(pFile->hFileRead, &ChunkID, 4, &dwBytesRead, NULL); |
ReadFile(pFile->hFileRead, &ChunkID, 4, &dwBytesRead, NULL); |
186 |
write(pFile->hFileWrite, &ullNewChunkSize, pFile->FileOffsetSize); |
write(pFile->hFileWrite, &ullNewChunkSize, pFile->FileOffsetSize); |
187 |
} |
} |
188 |
#elif defined(WIN32) |
#elif defined(WIN32) |
189 |
const LARGE_INTEGER liFilePos = { .QuadPart = filePos }; |
LARGE_INTEGER liFilePos; |
190 |
|
liFilePos.QuadPart = filePos; |
191 |
if (SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
if (SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
192 |
DWORD dwBytesWritten; |
DWORD dwBytesWritten; |
193 |
WriteFile(pFile->hFileWrite, &uiNewChunkID, 4, &dwBytesWritten, NULL); |
WriteFile(pFile->hFileWrite, &uiNewChunkID, 4, &dwBytesWritten, NULL); |
333 |
} |
} |
334 |
readWords /= WordSize; |
readWords /= WordSize; |
335 |
#elif defined(WIN32) |
#elif defined(WIN32) |
336 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullStartPos + ullPos }; |
LARGE_INTEGER liFilePos; |
337 |
|
liFilePos.QuadPart = ullStartPos + ullPos; |
338 |
if (!SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) |
if (!SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) |
339 |
return 0; |
return 0; |
340 |
DWORD readWords; |
DWORD readWords; |
419 |
if (writtenWords < 1) throw Exception("POSIX IO Error while trying to write chunk data"); |
if (writtenWords < 1) throw Exception("POSIX IO Error while trying to write chunk data"); |
420 |
writtenWords /= WordSize; |
writtenWords /= WordSize; |
421 |
#elif defined(WIN32) |
#elif defined(WIN32) |
422 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullStartPos + ullPos }; |
LARGE_INTEGER liFilePos; |
423 |
|
liFilePos.QuadPart = ullStartPos + ullPos; |
424 |
if (!SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
if (!SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) { |
425 |
throw Exception("Could not seek to position " + ToString(ullPos) + |
throw Exception("Could not seek to position " + ToString(ullPos) + |
426 |
" in chunk (" + ToString(ullStartPos + ullPos) + " in file)"); |
" in chunk (" + ToString(ullStartPos + ullPos) + " in file)"); |
811 |
#if POSIX |
#if POSIX |
812 |
if (lseek(pFile->hFileRead, ullStartPos, SEEK_SET) == -1) return NULL; |
if (lseek(pFile->hFileRead, ullStartPos, SEEK_SET) == -1) return NULL; |
813 |
#elif defined(WIN32) |
#elif defined(WIN32) |
814 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullStartPos }; |
LARGE_INTEGER liFilePos; |
815 |
|
liFilePos.QuadPart = ullStartPos; |
816 |
if (!SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) return NULL; |
if (!SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN)) return NULL; |
817 |
#else |
#else |
818 |
if (fseeko(pFile->hFileRead, ullStartPos, SEEK_SET)) return NULL; |
if (fseeko(pFile->hFileRead, ullStartPos, SEEK_SET)) return NULL; |
917 |
throw Exception("Writing Chunk data (from RAM) failed"); |
throw Exception("Writing Chunk data (from RAM) failed"); |
918 |
} |
} |
919 |
#elif defined(WIN32) |
#elif defined(WIN32) |
920 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullWritePos }; |
LARGE_INTEGER liFilePos; |
921 |
|
liFilePos.QuadPart = ullWritePos; |
922 |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
923 |
DWORD dwBytesWritten; |
DWORD dwBytesWritten; |
924 |
WriteFile(pFile->hFileWrite, pChunkData, ullNewChunkSize, &dwBytesWritten, NULL); //FIXME: won't save chunks larger than 2GB ! |
WriteFile(pFile->hFileWrite, pChunkData, ullNewChunkSize, &dwBytesWritten, NULL); //FIXME: won't save chunks larger than 2GB ! |
948 |
lseek(pFile->hFileWrite, ullWritePos + ullOffset, SEEK_SET); |
lseek(pFile->hFileWrite, ullWritePos + ullOffset, SEEK_SET); |
949 |
iBytesMoved = write(pFile->hFileWrite, pCopyBuffer, iBytesMoved); |
iBytesMoved = write(pFile->hFileWrite, pCopyBuffer, iBytesMoved); |
950 |
#elif defined(WIN32) |
#elif defined(WIN32) |
951 |
LARGE_INTEGER liFilePos = { .QuadPart = ullStartPos + ullCurrentDataOffset + ullOffset }; |
LARGE_INTEGER liFilePos; |
952 |
|
liFilePos.QuadPart = ullStartPos + ullCurrentDataOffset + ullOffset; |
953 |
SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
954 |
ReadFile(pFile->hFileRead, pCopyBuffer, iBytesMoved, &iBytesMoved, NULL); |
ReadFile(pFile->hFileRead, pCopyBuffer, iBytesMoved, &iBytesMoved, NULL); |
955 |
liFilePos.QuadPart = ullWritePos + ullOffset; |
liFilePos.QuadPart = ullWritePos + ullOffset; |
983 |
lseek(pFile->hFileWrite, ullStartPos + ullNewChunkSize, SEEK_SET); |
lseek(pFile->hFileWrite, ullStartPos + ullNewChunkSize, SEEK_SET); |
984 |
write(pFile->hFileWrite, &cPadByte, 1); |
write(pFile->hFileWrite, &cPadByte, 1); |
985 |
#elif defined(WIN32) |
#elif defined(WIN32) |
986 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullStartPos + ullNewChunkSize }; |
LARGE_INTEGER liFilePos; |
987 |
|
liFilePos.QuadPart = ullStartPos + ullNewChunkSize; |
988 |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
989 |
DWORD dwBytesWritten; |
DWORD dwBytesWritten; |
990 |
WriteFile(pFile->hFileWrite, &cPadByte, 1, &dwBytesWritten, NULL); |
WriteFile(pFile->hFileWrite, &cPadByte, 1, &dwBytesWritten, NULL); |
1383 |
lseek(pFile->hFileRead, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET); |
lseek(pFile->hFileRead, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET); |
1384 |
read(pFile->hFileRead, &ListType, 4); |
read(pFile->hFileRead, &ListType, 4); |
1385 |
#elif defined(WIN32) |
#elif defined(WIN32) |
1386 |
const LARGE_INTEGER liFilePos = { .QuadPart = filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize) }; |
LARGE_INTEGER liFilePos; |
1387 |
|
liFilePos.QuadPart = filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize); |
1388 |
SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(pFile->hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
1389 |
DWORD dwBytesRead; |
DWORD dwBytesRead; |
1390 |
ReadFile(pFile->hFileRead, &ListType, 4, &dwBytesRead, NULL); |
ReadFile(pFile->hFileRead, &ListType, 4, &dwBytesRead, NULL); |
1409 |
lseek(pFile->hFileWrite, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET); |
lseek(pFile->hFileWrite, filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize), SEEK_SET); |
1410 |
write(pFile->hFileWrite, &ListType, 4); |
write(pFile->hFileWrite, &ListType, 4); |
1411 |
#elif defined(WIN32) |
#elif defined(WIN32) |
1412 |
const LARGE_INTEGER liFilePos = { .QuadPart = filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize) }; |
LARGE_INTEGER liFilePos; |
1413 |
|
liFilePos.QuadPart = filePos + CHUNK_HEADER_SIZE(pFile->FileOffsetSize); |
1414 |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(pFile->hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
1415 |
DWORD dwBytesWritten; |
DWORD dwBytesWritten; |
1416 |
WriteFile(pFile->hFileWrite, &ListType, 4, &dwBytesWritten, NULL); |
WriteFile(pFile->hFileWrite, &ListType, 4, &dwBytesWritten, NULL); |
1919 |
lseek(hFileWrite, ullPos + positiveSizeDiff, SEEK_SET); |
lseek(hFileWrite, ullPos + positiveSizeDiff, SEEK_SET); |
1920 |
iBytesMoved = write(hFileWrite, pCopyBuffer, iBytesMoved); |
iBytesMoved = write(hFileWrite, pCopyBuffer, iBytesMoved); |
1921 |
#elif defined(WIN32) |
#elif defined(WIN32) |
1922 |
LARGE_INTEGER liFilePos = { .QuadPart = ullPos }; |
LARGE_INTEGER liFilePos; |
1923 |
|
liFilePos.QuadPart = ullPos; |
1924 |
SetFilePointerEx(hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
SetFilePointerEx(hFileRead, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN); |
1925 |
ReadFile(hFileRead, pCopyBuffer, iBytesMoved, &iBytesMoved, NULL); |
ReadFile(hFileRead, pCopyBuffer, iBytesMoved, &iBytesMoved, NULL); |
1926 |
liFilePos.QuadPart = ullPos + positiveSizeDiff; |
liFilePos.QuadPart = ullPos + positiveSizeDiff; |
2064 |
if (ftruncate(hFileWrite, ullNewSize) < 0) |
if (ftruncate(hFileWrite, ullNewSize) < 0) |
2065 |
throw Exception("Could not resize file \"" + Filename + "\""); |
throw Exception("Could not resize file \"" + Filename + "\""); |
2066 |
#elif defined(WIN32) |
#elif defined(WIN32) |
2067 |
const LARGE_INTEGER liFilePos = { .QuadPart = ullNewSize }; |
LARGE_INTEGER liFilePos; |
2068 |
|
liFilePos.QuadPart = ullNewSize; |
2069 |
if ( |
if ( |
2070 |
!SetFilePointerEx(hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN) || |
!SetFilePointerEx(hFileWrite, liFilePos, NULL/*new pos pointer*/, FILE_BEGIN) || |
2071 |
!SetEndOfFile(hFileWrite) |
!SetEndOfFile(hFileWrite) |