summaryrefslogtreecommitdiff
path: root/StormLib/src/FileStream.h
diff options
context:
space:
mode:
authorbriaguya <70942617+briaguya-ai@users.noreply.github.com>2022-11-14 05:22:34 -0500
committerGitHub <noreply@github.com>2022-11-14 11:22:34 +0100
commit3914781ebfd5cb22717cc207cb3d37d8754d0eb7 (patch)
tree2e412b87e66b1deef47bef242e7189a200cea0ff /StormLib/src/FileStream.h
parent9eb29ed81cb497a6a216811255f8af7daf3f8bd8 (diff)
Import libultraship as a submodule (#1943)
Co-authored-by: briaguya <briaguya> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: David Chavez <davi@dcvz.io>
Diffstat (limited to 'StormLib/src/FileStream.h')
-rw-r--r--StormLib/src/FileStream.h217
1 files changed, 0 insertions, 217 deletions
diff --git a/StormLib/src/FileStream.h b/StormLib/src/FileStream.h
deleted file mode 100644
index 2bc118b28..000000000
--- a/StormLib/src/FileStream.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*****************************************************************************/
-/* FileStream.h Copyright (c) Ladislav Zezula 2012 */
-/*---------------------------------------------------------------------------*/
-/* Description: Definitions for FileStream object */
-/*---------------------------------------------------------------------------*/
-/* Date Ver Who Comment */
-/* -------- ---- --- ------- */
-/* 14.04.12 1.00 Lad The first version of FileStream.h */
-/*****************************************************************************/
-
-#ifndef __FILESTREAM_H__
-#define __FILESTREAM_H__
-
-//-----------------------------------------------------------------------------
-// Function prototypes
-
-typedef void (*STREAM_INIT)(
- struct TFileStream * pStream // Pointer to an unopened stream
-);
-
-typedef bool (*STREAM_CREATE)(
- struct TFileStream * pStream // Pointer to an unopened stream
- );
-
-typedef bool (*STREAM_OPEN)(
- struct TFileStream * pStream, // Pointer to an unopened stream
- const TCHAR * szFileName, // Pointer to file name to be open
- DWORD dwStreamFlags // Stream flags
- );
-
-typedef bool (*STREAM_READ)(
- struct TFileStream * pStream, // Pointer to an open stream
- ULONGLONG * pByteOffset, // Pointer to file byte offset. If NULL, it reads from the current position
- void * pvBuffer, // Pointer to data to be read
- DWORD dwBytesToRead // Number of bytes to read from the file
- );
-
-typedef bool (*STREAM_WRITE)(
- struct TFileStream * pStream, // Pointer to an open stream
- ULONGLONG * pByteOffset, // Pointer to file byte offset. If NULL, it writes to the current position
- const void * pvBuffer, // Pointer to data to be written
- DWORD dwBytesToWrite // Number of bytes to read from the file
- );
-
-typedef bool (*STREAM_RESIZE)(
- struct TFileStream * pStream, // Pointer to an open stream
- ULONGLONG FileSize // New size for the file, in bytes
- );
-
-typedef bool (*STREAM_GETSIZE)(
- struct TFileStream * pStream, // Pointer to an open stream
- ULONGLONG * pFileSize // Receives the file size, in bytes
- );
-
-typedef bool (*STREAM_GETPOS)(
- struct TFileStream * pStream, // Pointer to an open stream
- ULONGLONG * pByteOffset // Pointer to store current file position
- );
-
-typedef void (*STREAM_CLOSE)(
- struct TFileStream * pStream // Pointer to an open stream
- );
-
-typedef bool (*BLOCK_READ)(
- struct TFileStream * pStream, // Pointer to a block-oriented stream
- ULONGLONG StartOffset, // Byte offset of start of the block array
- ULONGLONG EndOffset, // End offset (either end of the block or end of the file)
- LPBYTE BlockBuffer, // Pointer to block-aligned buffer
- DWORD BytesNeeded, // Number of bytes that are really needed
- bool bAvailable // true if the block is available
- );
-
-typedef bool (*BLOCK_CHECK)(
- struct TFileStream * pStream, // Pointer to a block-oriented stream
- ULONGLONG BlockOffset // Offset of the file to check
- );
-
-typedef void (*BLOCK_SAVEMAP)(
- struct TFileStream * pStream // Pointer to a block-oriented stream
- );
-
-//-----------------------------------------------------------------------------
-// Local structures - partial file structure and bitmap footer
-
-#define ID_FILE_BITMAP_FOOTER 0x33767470 // Signature of the file bitmap footer ('ptv3')
-#define DEFAULT_BLOCK_SIZE 0x00004000 // Default size of the stream block
-#define DEFAULT_BUILD_NUMBER 10958 // Build number for newly created partial MPQs
-
-typedef struct _PART_FILE_HEADER
-{
- DWORD PartialVersion; // Always set to 2
- char GameBuildNumber[0x20]; // Minimum build number of the game that can use this MPQ
- DWORD Flags; // Flags (details unknown)
- DWORD FileSizeLo; // Low 32 bits of the contained file size
- DWORD FileSizeHi; // High 32 bits of the contained file size
- DWORD BlockSize; // Size of one file block, in bytes
-
-} PART_FILE_HEADER, *PPART_FILE_HEADER;
-
-// Structure describing the block-to-file map entry
-typedef struct _PART_FILE_MAP_ENTRY
-{
- DWORD Flags; // 3 = the block is present in the file
- DWORD BlockOffsLo; // Low 32 bits of the block position in the file
- DWORD BlockOffsHi; // High 32 bits of the block position in the file
- DWORD LargeValueLo; // 64-bit value, meaning is unknown
- DWORD LargeValueHi;
-
-} PART_FILE_MAP_ENTRY, *PPART_FILE_MAP_ENTRY;
-
-typedef struct _FILE_BITMAP_FOOTER
-{
- DWORD Signature; // 'ptv3' (ID_FILE_BITMAP_FOOTER)
- DWORD Version; // Unknown, seems to always have value of 3 (version?)
- DWORD BuildNumber; // Game build number for that MPQ
- DWORD MapOffsetLo; // Low 32-bits of the offset of the bit map
- DWORD MapOffsetHi; // High 32-bits of the offset of the bit map
- DWORD BlockSize; // Size of one block (usually 0x4000 bytes)
-
-} FILE_BITMAP_FOOTER, *PFILE_BITMAP_FOOTER;
-
-//-----------------------------------------------------------------------------
-// Structure for file stream
-
-union TBaseProviderData
-{
- struct
- {
- ULONGLONG FileSize; // Size of the file
- ULONGLONG FilePos; // Current file position
- ULONGLONG FileTime; // Last write time
- HANDLE hFile; // File handle
- } File;
-
- struct
- {
- ULONGLONG FileSize; // Size of the file
- ULONGLONG FilePos; // Current file position
- ULONGLONG FileTime; // Last write time
- LPBYTE pbFile; // Pointer to mapped view
- } Map;
-
- struct
- {
- ULONGLONG FileSize; // Size of the file
- ULONGLONG FilePos; // Current file position
- ULONGLONG FileTime; // Last write time
- HANDLE hInternet; // Internet handle
- HANDLE hConnect; // Connection to the internet server
- } Http;
-};
-
-struct TFileStream
-{
- // Stream provider functions
- STREAM_READ StreamRead; // Pointer to stream read function for this archive. Do not use directly.
- STREAM_WRITE StreamWrite; // Pointer to stream write function for this archive. Do not use directly.
- STREAM_RESIZE StreamResize; // Pointer to function changing file size
- STREAM_GETSIZE StreamGetSize; // Pointer to function returning file size
- STREAM_GETPOS StreamGetPos; // Pointer to function that returns current file position
- STREAM_CLOSE StreamClose; // Pointer to function closing the stream
-
- // Block-oriented functions
- BLOCK_READ BlockRead; // Pointer to function reading one or more blocks
- BLOCK_CHECK BlockCheck; // Pointer to function checking whether the block is present
-
- // Base provider functions
- STREAM_CREATE BaseCreate; // Pointer to base create function
- STREAM_OPEN BaseOpen; // Pointer to base open function
- STREAM_READ BaseRead; // Read from the stream
- STREAM_WRITE BaseWrite; // Write to the stream
- STREAM_RESIZE BaseResize; // Pointer to function changing file size
- STREAM_GETSIZE BaseGetSize; // Pointer to function returning file size
- STREAM_GETPOS BaseGetPos; // Pointer to function that returns current file position
- STREAM_CLOSE BaseClose; // Pointer to function closing the stream
-
- // Base provider data (file size, file position)
- TBaseProviderData Base;
-
- // Stream provider data
- TFileStream * pMaster; // Master stream (e.g. MPQ on a web server)
- TCHAR * szFileName; // File name (self-relative pointer)
-
- ULONGLONG StreamSize; // Stream size (can be less than file size)
- ULONGLONG StreamPos; // Stream position
- DWORD BuildNumber; // Game build number
- DWORD dwFlags; // Stream flags
-
- // Followed by stream provider data, with variable length
-};
-
-//-----------------------------------------------------------------------------
-// Structures for block-oriented stream
-
-struct TBlockStream : public TFileStream
-{
- SFILE_DOWNLOAD_CALLBACK pfnCallback; // Callback for downloading
- void * FileBitmap; // Array of bits for file blocks
- void * UserData; // User data to be passed to the download callback
- DWORD BitmapSize; // Size of the file bitmap (in bytes)
- DWORD BlockSize; // Size of one block, in bytes
- DWORD BlockCount; // Number of data blocks in the file
- DWORD IsComplete; // If nonzero, no blocks are missing
- DWORD IsModified; // nonzero if the bitmap has been modified
-};
-
-//-----------------------------------------------------------------------------
-// Structure for encrypted stream
-
-#define MPQE_CHUNK_SIZE 0x40 // Size of one chunk to be decrypted
-
-struct TEncryptedStream : public TBlockStream
-{
- BYTE Key[MPQE_CHUNK_SIZE]; // File key
-};
-
-#endif // __FILESTREAM_H__