diff options
author | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-06-21 00:00:00 +0000 |
---|---|---|
committer | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2023-12-17 14:59:19 +0500 |
commit | 5b39dc76f1bc82f941d5c800ab9f34407a06b53a (patch) | |
tree | fe5e17420300b715021a76328444088d32047963 /C/7zFile.c | |
parent | 93be7d4abfd4233228f58ee1fbbcd76d91be66a4 (diff) | |
download | 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.gz 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.tar.bz2 7zip-5b39dc76f1bc82f941d5c800ab9f34407a06b53a.zip |
23.0123.01
Diffstat (limited to 'C/7zFile.c')
-rw-r--r-- | C/7zFile.c | 33 |
1 files changed, 17 insertions, 16 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* 7zFile.c -- File IO | 1 | /* 7zFile.c -- File IO |
2 | 2021-04-29 : Igor Pavlov : Public domain */ | 2 | 2023-04-02 : Igor Pavlov : Public domain */ |
3 | 3 | ||
4 | #include "Precomp.h" | 4 | #include "Precomp.h" |
5 | 5 | ||
@@ -268,7 +268,7 @@ WRes File_Write(CSzFile *p, const void *data, size_t *size) | |||
268 | return errno; | 268 | return errno; |
269 | if (processed == 0) | 269 | if (processed == 0) |
270 | break; | 270 | break; |
271 | data = (void *)((Byte *)data + (size_t)processed); | 271 | data = (const void *)((const Byte *)data + (size_t)processed); |
272 | originalSize -= (size_t)processed; | 272 | originalSize -= (size_t)processed; |
273 | *size += (size_t)processed; | 273 | *size += (size_t)processed; |
274 | } | 274 | } |
@@ -287,7 +287,8 @@ WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin) | |||
287 | DWORD moveMethod; | 287 | DWORD moveMethod; |
288 | UInt32 low = (UInt32)*pos; | 288 | UInt32 low = (UInt32)*pos; |
289 | LONG high = (LONG)((UInt64)*pos >> 16 >> 16); /* for case when UInt64 is 32-bit only */ | 289 | LONG high = (LONG)((UInt64)*pos >> 16 >> 16); /* for case when UInt64 is 32-bit only */ |
290 | switch (origin) | 290 | // (int) to eliminate clang warning |
291 | switch ((int)origin) | ||
291 | { | 292 | { |
292 | case SZ_SEEK_SET: moveMethod = FILE_BEGIN; break; | 293 | case SZ_SEEK_SET: moveMethod = FILE_BEGIN; break; |
293 | case SZ_SEEK_CUR: moveMethod = FILE_CURRENT; break; | 294 | case SZ_SEEK_CUR: moveMethod = FILE_CURRENT; break; |
@@ -308,7 +309,7 @@ WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin) | |||
308 | 309 | ||
309 | int moveMethod; // = origin; | 310 | int moveMethod; // = origin; |
310 | 311 | ||
311 | switch (origin) | 312 | switch ((int)origin) |
312 | { | 313 | { |
313 | case SZ_SEEK_SET: moveMethod = SEEK_SET; break; | 314 | case SZ_SEEK_SET: moveMethod = SEEK_SET; break; |
314 | case SZ_SEEK_CUR: moveMethod = SEEK_CUR; break; | 315 | case SZ_SEEK_CUR: moveMethod = SEEK_CUR; break; |
@@ -387,10 +388,10 @@ WRes File_GetLength(CSzFile *p, UInt64 *length) | |||
387 | 388 | ||
388 | /* ---------- FileSeqInStream ---------- */ | 389 | /* ---------- FileSeqInStream ---------- */ |
389 | 390 | ||
390 | static SRes FileSeqInStream_Read(const ISeqInStream *pp, void *buf, size_t *size) | 391 | static SRes FileSeqInStream_Read(ISeqInStreamPtr pp, void *buf, size_t *size) |
391 | { | 392 | { |
392 | CFileSeqInStream *p = CONTAINER_FROM_VTBL(pp, CFileSeqInStream, vt); | 393 | Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileSeqInStream) |
393 | WRes wres = File_Read(&p->file, buf, size); | 394 | const WRes wres = File_Read(&p->file, buf, size); |
394 | p->wres = wres; | 395 | p->wres = wres; |
395 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; | 396 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; |
396 | } | 397 | } |
@@ -403,18 +404,18 @@ void FileSeqInStream_CreateVTable(CFileSeqInStream *p) | |||
403 | 404 | ||
404 | /* ---------- FileInStream ---------- */ | 405 | /* ---------- FileInStream ---------- */ |
405 | 406 | ||
406 | static SRes FileInStream_Read(const ISeekInStream *pp, void *buf, size_t *size) | 407 | static SRes FileInStream_Read(ISeekInStreamPtr pp, void *buf, size_t *size) |
407 | { | 408 | { |
408 | CFileInStream *p = CONTAINER_FROM_VTBL(pp, CFileInStream, vt); | 409 | Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileInStream) |
409 | WRes wres = File_Read(&p->file, buf, size); | 410 | const WRes wres = File_Read(&p->file, buf, size); |
410 | p->wres = wres; | 411 | p->wres = wres; |
411 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; | 412 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; |
412 | } | 413 | } |
413 | 414 | ||
414 | static SRes FileInStream_Seek(const ISeekInStream *pp, Int64 *pos, ESzSeek origin) | 415 | static SRes FileInStream_Seek(ISeekInStreamPtr pp, Int64 *pos, ESzSeek origin) |
415 | { | 416 | { |
416 | CFileInStream *p = CONTAINER_FROM_VTBL(pp, CFileInStream, vt); | 417 | Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileInStream) |
417 | WRes wres = File_Seek(&p->file, pos, origin); | 418 | const WRes wres = File_Seek(&p->file, pos, origin); |
418 | p->wres = wres; | 419 | p->wres = wres; |
419 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; | 420 | return (wres == 0) ? SZ_OK : SZ_ERROR_READ; |
420 | } | 421 | } |
@@ -428,10 +429,10 @@ void FileInStream_CreateVTable(CFileInStream *p) | |||
428 | 429 | ||
429 | /* ---------- FileOutStream ---------- */ | 430 | /* ---------- FileOutStream ---------- */ |
430 | 431 | ||
431 | static size_t FileOutStream_Write(const ISeqOutStream *pp, const void *data, size_t size) | 432 | static size_t FileOutStream_Write(ISeqOutStreamPtr pp, const void *data, size_t size) |
432 | { | 433 | { |
433 | CFileOutStream *p = CONTAINER_FROM_VTBL(pp, CFileOutStream, vt); | 434 | Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(CFileOutStream) |
434 | WRes wres = File_Write(&p->file, data, &size); | 435 | const WRes wres = File_Write(&p->file, data, &size); |
435 | p->wres = wres; | 436 | p->wres = wres; |
436 | return size; | 437 | return size; |
437 | } | 438 | } |