MCPcopy Create free account
hub / github.com/Kenix3/libultraship / SFileCreateArchive

Function SFileCreateArchive

extern/StormLib/src/SFileCreateArchive.cpp:72–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70// Creates a new MPQ archive.
71
72bool WINAPI SFileCreateArchive(const TCHAR * szMpqName, DWORD dwCreateFlags, DWORD dwMaxFileCount, HANDLE * phMpq)
73{
74 SFILE_CREATE_MPQ CreateInfo;
75
76 // Fill the create structure
77 memset(&CreateInfo, 0, sizeof(SFILE_CREATE_MPQ));
78 CreateInfo.cbSize = sizeof(SFILE_CREATE_MPQ);
79 CreateInfo.dwMpqVersion = (dwCreateFlags & MPQ_CREATE_ARCHIVE_VMASK) >> FLAGS_TO_FORMAT_SHIFT;
80 CreateInfo.dwStreamFlags = STREAM_PROVIDER_FLAT | BASE_PROVIDER_FILE;
81 CreateInfo.dwFileFlags1 = (dwCreateFlags & MPQ_CREATE_LISTFILE) ? MPQ_FILE_DEFAULT_INTERNAL : 0;
82 CreateInfo.dwFileFlags2 = (dwCreateFlags & MPQ_CREATE_ATTRIBUTES) ? MPQ_FILE_DEFAULT_INTERNAL : 0;
83 CreateInfo.dwFileFlags3 = (dwCreateFlags & MPQ_CREATE_SIGNATURE) ? MPQ_FILE_DEFAULT_INTERNAL : 0;
84 CreateInfo.dwAttrFlags = (dwCreateFlags & MPQ_CREATE_ATTRIBUTES) ? (MPQ_ATTRIBUTE_CRC32 | MPQ_ATTRIBUTE_FILETIME | MPQ_ATTRIBUTE_MD5) : 0;
85 CreateInfo.dwSectorSize = (CreateInfo.dwMpqVersion >= MPQ_FORMAT_VERSION_3) ? 0x4000 : 0x1000;
86 CreateInfo.dwRawChunkSize = (CreateInfo.dwMpqVersion >= MPQ_FORMAT_VERSION_4) ? 0x4000 : 0;
87 CreateInfo.dwMaxFileCount = dwMaxFileCount;
88
89 // Set the proper attribute parts
90 if((CreateInfo.dwMpqVersion >= MPQ_FORMAT_VERSION_3) && (dwCreateFlags & MPQ_CREATE_ATTRIBUTES))
91 CreateInfo.dwAttrFlags |= MPQ_ATTRIBUTE_PATCH_BIT;
92
93 // Backward compatibility: SFileCreateArchive always used to add (listfile)
94 // We would break loads of applications if we change that
95 CreateInfo.dwFileFlags1 = MPQ_FILE_DEFAULT_INTERNAL;
96
97 // Let the main function create the archive
98 return SFileCreateArchive2(szMpqName, &CreateInfo, phMpq);
99}
100
101bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCreateInfo, HANDLE * phMpq)
102{

Callers 3

CreateNewArchiveFunction · 0.85
CreateNewArchiveUFunction · 0.85
CreateArchiveMethod · 0.85

Calls 1

SFileCreateArchive2Function · 0.85

Tested by 2

CreateNewArchiveFunction · 0.68
CreateNewArchiveUFunction · 0.68