![]() |
![]() |
Go to the source code of this file.
Classes | |
struct | CFileInStream |
struct | CFileOutStream |
struct | CFileSeqInStream |
struct | CSzFile |
Functions | |
WRes | File_Close (CSzFile *p) |
void | File_Construct (CSzFile *p) |
WRes | File_GetLength (CSzFile *p, UInt64 *length) |
WRes | File_Read (CSzFile *p, void *data, size_t *size) |
WRes | File_Seek (CSzFile *p, Int64 *pos, ESzSeek origin) |
WRes | File_Write (CSzFile *p, const void *data, size_t *size) |
void | FileInStream_CreateVTable (CFileInStream *p) |
void | FileOutStream_CreateVTable (CFileOutStream *p) |
void | FileSeqInStream_CreateVTable (CFileSeqInStream *p) |
WRes | InFile_Open (CSzFile *p, const char *name) |
WRes | OutFile_Open (CSzFile *p, const char *name) |
Definition at line 76 of file 7zFile.cc.
References CSzFile::file, and NULL.
Referenced by LzmaFile::Close().
void File_Construct | ( | CSzFile * | p | ) |
Definition at line 28 of file 7zFile.cc.
References CSzFile::file, and NULL.
Referenced by LzmaFile::Open().
Definition at line 210 of file 7zFile.cc.
References CSzFile::file, and pos.
{ #ifdef USE_WINDOWS_FILE DWORD sizeHigh; DWORD sizeLow = GetFileSize(p->handle, &sizeHigh); if (sizeLow == 0xFFFFFFFF) { DWORD res = GetLastError(); if (res != NO_ERROR) return res; } *length = (((UInt64)sizeHigh) << 32) + sizeLow; return 0; #else long pos = ftell(p->file); int res = fseek(p->file, 0, SEEK_END); *length = ftell(p->file); fseek(p->file, pos, SEEK_SET); return res; #endif }
Definition at line 97 of file 7zFile.cc.
References CSzFile::file, NULL, and findQualityFiles::size.
Referenced by FileInStream_Read(), and FileSeqInStream_Read().
{ size_t originalSize = *size; if (originalSize == 0) return 0; #ifdef USE_WINDOWS_FILE *size = 0; do { DWORD curSize = (originalSize > kChunkSizeMax) ? kChunkSizeMax : (DWORD)originalSize; DWORD processed = 0; BOOL res = ReadFile(p->handle, data, curSize, &processed, NULL); data = (void *)((Byte *)data + processed); originalSize -= processed; *size += processed; if (!res) return GetLastError(); if (processed == 0) break; } while (originalSize > 0); return 0; #else *size = fread(data, 1, originalSize, p->file); if (*size == originalSize) return 0; return ferror(p->file); #endif }
Definition at line 167 of file 7zFile.cc.
References CSzFile::file, SZ_SEEK_CUR, SZ_SEEK_END, SZ_SEEK_SET, and relativeConstraints::value.
Referenced by FileInStream_Seek().
{ #ifdef USE_WINDOWS_FILE LARGE_INTEGER value; DWORD moveMethod; value.LowPart = (DWORD)*pos; value.HighPart = (LONG)((UInt64)*pos >> 16 >> 16); /* for case when UInt64 is 32-bit only */ switch (origin) { case SZ_SEEK_SET: moveMethod = FILE_BEGIN; break; case SZ_SEEK_CUR: moveMethod = FILE_CURRENT; break; case SZ_SEEK_END: moveMethod = FILE_END; break; default: return ERROR_INVALID_PARAMETER; } value.LowPart = SetFilePointer(p->handle, value.LowPart, &value.HighPart, moveMethod); if (value.LowPart == 0xFFFFFFFF) { WRes res = GetLastError(); if (res != NO_ERROR) return res; } *pos = ((Int64)value.HighPart << 32) | value.LowPart; return 0; #else int moveMethod; int res; switch (origin) { case SZ_SEEK_SET: moveMethod = SEEK_SET; break; case SZ_SEEK_CUR: moveMethod = SEEK_CUR; break; case SZ_SEEK_END: moveMethod = SEEK_END; break; default: return 1; } res = fseek(p->file, (long)*pos, moveMethod); *pos = ftell(p->file); return res; #endif }
Definition at line 132 of file 7zFile.cc.
References CSzFile::file, NULL, and findQualityFiles::size.
Referenced by FileOutStream_Write().
{ size_t originalSize = *size; if (originalSize == 0) return 0; #ifdef USE_WINDOWS_FILE *size = 0; do { DWORD curSize = (originalSize > kChunkSizeMax) ? kChunkSizeMax : (DWORD)originalSize; DWORD processed = 0; BOOL res = WriteFile(p->handle, data, curSize, &processed, NULL); data = (void *)((Byte *)data + processed); originalSize -= processed; *size += processed; if (!res) return GetLastError(); if (processed == 0) break; } while (originalSize > 0); return 0; #else *size = fwrite(data, 1, originalSize, p->file); if (*size == originalSize) return 0; return ferror(p->file); #endif }
void FileInStream_CreateVTable | ( | CFileInStream * | p | ) |
Definition at line 265 of file 7zFile.cc.
References FileInStream_Read(), FileInStream_Seek(), ISeekInStream::Read, CFileInStream::s, and ISeekInStream::Seek.
{ p->s.Read = FileInStream_Read; p->s.Seek = FileInStream_Seek; }
void FileOutStream_CreateVTable | ( | CFileOutStream * | p | ) |
Definition at line 281 of file 7zFile.cc.
References FileOutStream_Write(), CFileOutStream::s, and ISeqOutStream::Write.
{ p->s.Write = FileOutStream_Write; }
void FileSeqInStream_CreateVTable | ( | CFileSeqInStream * | p | ) |
Definition at line 245 of file 7zFile.cc.
References FileSeqInStream_Read(), ISeqInStream::Read, and CFileSeqInStream::s.
Referenced by LzmaFile::Open().
{ p->s.Read = FileSeqInStream_Read; }