aboutsummaryrefslogtreecommitdiff
path: root/src/SFileGetFileInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SFileGetFileInfo.cpp')
-rw-r--r--src/SFileGetFileInfo.cpp43
1 files changed, 17 insertions, 26 deletions
diff --git a/src/SFileGetFileInfo.cpp b/src/SFileGetFileInfo.cpp
index f7faea0..40b2720 100644
--- a/src/SFileGetFileInfo.cpp
+++ b/src/SFileGetFileInfo.cpp
@@ -143,7 +143,6 @@ bool WINAPI SFileGetFileInfo(
TFileEntry * pFileEntry = NULL;
ULONGLONG Int64Value = 0;
ULONGLONG ByteOffset = 0;
- TMPQHash * pHash;
TMPQFile * hf = NULL;
void * pvSrcFileInfo = NULL;
DWORD cbSrcFileInfo = 0;
@@ -376,7 +375,7 @@ bool WINAPI SFileGetFileInfo(
if(ha != NULL && ha->pHashTable != NULL)
{
pvSrcFileInfo = ha->pHashTable;
- cbSrcFileInfo = ha->dwHashTableSize * sizeof(TMPQHash);
+ cbSrcFileInfo = ha->pHeader->dwHashTableSize * sizeof(TMPQHash);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
}
break;
@@ -629,9 +628,9 @@ bool WINAPI SFileGetFileInfo(
case SFileInfoHashEntry:
hf = IsValidFileHandle(hMpqOrFile);
- if(hf != NULL && hf->ha != NULL && hf->ha->pHashTable != NULL)
+ if(hf != NULL && hf->pHashEntry != NULL)
{
- pvSrcFileInfo = hf->ha->pHashTable + hf->pFileEntry->dwHashIndex;
+ pvSrcFileInfo = hf->pHashEntry;
cbSrcFileInfo = sizeof(TMPQHash);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
}
@@ -639,9 +638,9 @@ bool WINAPI SFileGetFileInfo(
case SFileInfoHashIndex:
hf = IsValidFileHandle(hMpqOrFile);
- if(hf != NULL && hf->pFileEntry != NULL)
+ if(hf != NULL && hf->pHashEntry != NULL)
{
- pvSrcFileInfo = &hf->pFileEntry->dwHashIndex;
+ pvSrcFileInfo = &hf->dwHashIndex;
cbSrcFileInfo = sizeof(DWORD);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
}
@@ -649,10 +648,10 @@ bool WINAPI SFileGetFileInfo(
case SFileInfoNameHash1:
hf = IsValidFileHandle(hMpqOrFile);
- if(hf != NULL && hf->ha != NULL && hf->ha->pHashTable != NULL)
+ if(hf != NULL && hf->pHashEntry != NULL)
{
- pHash = hf->ha->pHashTable + hf->pFileEntry->dwHashIndex;
- pvSrcFileInfo = &pHash->dwName1;
+ dwInt32Value = hf->pHashEntry->dwName1;
+ pvSrcFileInfo = &dwInt32Value;
cbSrcFileInfo = sizeof(DWORD);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
}
@@ -660,10 +659,10 @@ bool WINAPI SFileGetFileInfo(
case SFileInfoNameHash2:
hf = IsValidFileHandle(hMpqOrFile);
- if(hf != NULL && hf->ha != NULL && hf->ha->pHashTable != NULL)
+ if(hf != NULL && hf->pHashEntry != NULL)
{
- pHash = hf->ha->pHashTable + hf->pFileEntry->dwHashIndex;
- pvSrcFileInfo = &pHash->dwName2;
+ dwInt32Value = hf->pHashEntry->dwName2;
+ pvSrcFileInfo = &dwInt32Value;
cbSrcFileInfo = sizeof(DWORD);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
}
@@ -681,9 +680,9 @@ bool WINAPI SFileGetFileInfo(
case SFileInfoLocale:
hf = IsValidFileHandle(hMpqOrFile);
- if(hf != NULL && hf->pFileEntry != NULL)
+ if(hf != NULL && hf->pHashEntry != NULL)
{
- dwInt32Value = hf->pFileEntry->lcLocale;
+ dwInt32Value = hf->pHashEntry->lcLocale;
pvSrcFileInfo = &dwInt32Value;
cbSrcFileInfo = sizeof(DWORD);
nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER;
@@ -950,10 +949,6 @@ bool WINAPI SFileGetFileName(HANDLE hFile, char * szFileName)
TMPQFile * hf = (TMPQFile *)hFile; // MPQ File handle
int nError = ERROR_INVALID_HANDLE;
- // Pre-zero the output buffer
- if(szFileName != NULL)
- *szFileName = 0;
-
// Check valid parameters
if(IsValidFileHandle(hFile))
{
@@ -966,15 +961,11 @@ bool WINAPI SFileGetFileName(HANDLE hFile, char * szFileName)
{
// If the file name is not there yet, create a pseudo name
if(pFileEntry->szFileName == NULL)
- {
nError = CreatePseudoFileName(hFile, pFileEntry, szFileName);
- }
- else
- {
- if(szFileName != NULL)
- strcpy(szFileName, pFileEntry->szFileName);
- nError = ERROR_SUCCESS;
- }
+
+ // Copy the file name to the output buffer, if any
+ if(pFileEntry->szFileName && szFileName)
+ strcpy(szFileName, pFileEntry->szFileName);
}
}