MCPcopy Create free account
hub / github.com/diasurgical/devilution / SFileGetFileInfo

Function SFileGetFileInfo

3rdParty/StormLib/src/SFileGetFileInfo.cpp:134–860  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132// pcbLengthNeeded - Receives number of bytes necessary to store the information
133
134bool STORMAPI SFileGetFileInfo(
135 HANDLE hMpqOrFile,
136 SFileInfoClass InfoClass,
137 void * pvFileInfo,
138 DWORD cbFileInfo,
139 LPDWORD pcbLengthNeeded)
140{
141 MPQ_SIGNATURE_INFO SignatureInfo;
142 TMPQArchive * ha = NULL;
143 TFileEntry * pFileEntry = NULL;
144 ULONGLONG Int64Value = 0;
145 ULONGLONG ByteOffset = 0;
146 TMPQFile * hf = NULL;
147 void * pvSrcFileInfo = NULL;
148 DWORD cbSrcFileInfo = 0;
149 DWORD dwInt32Value = 0;
150 int nInfoType = SFILE_INFO_TYPE_INVALID_HANDLE;
151 int nError = ERROR_SUCCESS;
152
153 switch(InfoClass)
154 {
155 case SFileMpqFileName:
156 ha = IsValidMpqHandle(hMpqOrFile);
157 if(ha != NULL)
158 {
159 pvSrcFileInfo = (void *)FileStream_GetFileName(ha->pStream);
160 cbSrcFileInfo = (DWORD)(_tcslen((TCHAR *)pvSrcFileInfo) + 1) * sizeof(TCHAR);
161 nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
162 }
163 break;
164
165 case SFileMpqStreamBitmap:
166 ha = IsValidMpqHandle(hMpqOrFile);
167 if(ha != NULL)
168 return FileStream_GetBitmap(ha->pStream, pvFileInfo, cbFileInfo, pcbLengthNeeded);
169 break;
170
171 case SFileMpqUserDataOffset:
172 ha = IsValidMpqHandle(hMpqOrFile);
173 if(ha != NULL)
174 {
175 nInfoType = SFILE_INFO_TYPE_NOT_FOUND;
176 if(ha->pUserData != NULL)
177 {
178 pvSrcFileInfo = &ha->UserDataPos;
179 cbSrcFileInfo = sizeof(ULONGLONG);
180 nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
181 }
182 }
183 break;
184
185 case SFileMpqUserDataHeader:
186 ha = IsValidMpqHandle(hMpqOrFile);
187 if(ha != NULL)
188 {
189 nInfoType = SFILE_INFO_TYPE_NOT_FOUND;
190 if(ha->pUserData != NULL)
191 {

Callers

nothing calls this directly

Calls 15

IsValidMpqHandleFunction · 0.85
FileStream_GetFileNameFunction · 0.85
FileStream_GetBitmapFunction · 0.85
LoadExtTableFunction · 0.85
LoadHetTableFunction · 0.85
LoadBetTableFunction · 0.85
LoadBlockTableFunction · 0.85
GetMpqFileCountFunction · 0.85
FileStream_GetFlagsFunction · 0.85
IsValidFileHandleFunction · 0.85
GetFilePatchChainFunction · 0.85
SetLastErrorFunction · 0.85

Tested by

no test coverage detected