X-Git-Url: https://sfsrealm.hopto.org/projects/gitweb.cgi?p=SFmpqapi.git;a=blobdiff_plain;f=SFmpqapi.cpp;fp=SFmpqapi.cpp;h=86631f44f357a9aef02b5fe24bc5e60e9eddcf9b;hp=0579c2c226e6d7efc936f6198218f2241297ba58;hb=e32ff2fecf5ed03c2eb90343f9bc373852636f13;hpb=631cb94e7243815e465e454c965b6adcd0153d54 diff --git a/SFmpqapi.cpp b/SFmpqapi.cpp index 0579c2c..86631f4 100644 --- a/SFmpqapi.cpp +++ b/SFmpqapi.cpp @@ -1526,7 +1526,10 @@ BOOL SFMPQAPI WINAPI SFileListFiles(MPQHANDLE hMPQ, LPCSTR lpFileLists, FILELIST lpListBuffer[i].dwCompressedSize = mpqOpenArc->lpBlockTable[dwBlockIndex].dwCompressedSize; lpListBuffer[i].dwFullSize = mpqOpenArc->lpBlockTable[dwBlockIndex].dwFullSize; lpListBuffer[i].dwFlags = mpqOpenArc->lpBlockTable[dwBlockIndex].dwFlags; - lpListBuffer[i].dwFileExists=0xFFFFFFFF; + if (dwFlags & SFILE_LIST_FLAG_UNKNOWN) + lpListBuffer[i].dwFileExists = 1; + else + lpListBuffer[i].dwFileExists=0xFFFFFFFF; SetFilePointer(mpqOpenArc->hFile,mpqOpenArc->dwMPQStart+mpqOpenArc->lpBlockTable[dwBlockIndex].dwFileOffset+0x40,0,FILE_BEGIN); ReadFile(mpqOpenArc->hFile,lpListBuffer[i].szFileName,260,&tsz,0); @@ -1537,6 +1540,10 @@ BOOL SFMPQAPI WINAPI SFileListFiles(MPQHANDLE hMPQ, LPCSTR lpFileLists, FILELIST } else { sprintf(lpListBuffer[i].szFileName,UNKNOWN_OUT,i); + if (dwFlags & SFILE_LIST_FLAG_UNKNOWN) { + lpListBuffer[i].dwFileExists |= 2; + } + if (dwFlags&SFILE_LIST_ONLY_KNOWN) { lpListBuffer[i].dwFileExists = 0; } @@ -1690,7 +1697,10 @@ BOOL SFMPQAPI WINAPI SFileListFiles(MPQHANDLE hMPQ, LPCSTR lpFileLists, FILELIST lpListBuffer[i].dwCompressedSize = mpqOpenArc->lpBlockTable[dwBlockIndex].dwCompressedSize; lpListBuffer[i].dwFullSize = mpqOpenArc->lpBlockTable[dwBlockIndex].dwFullSize; lpListBuffer[i].dwFlags = mpqOpenArc->lpBlockTable[dwBlockIndex].dwFlags; - lpListBuffer[i].dwFileExists=0xFFFFFFFF; + if (dwFlags & SFILE_LIST_FLAG_UNKNOWN) + lpListBuffer[i].dwFileExists = 1; + else + lpListBuffer[i].dwFileExists=0xFFFFFFFF; for (j=0;jlpHashTable[i].dwNameHashA==lpdwNameHashA[j] && mpqOpenArc->lpHashTable[i].dwNameHashB==lpdwNameHashB[j]) { strncpy(lpListBuffer[i].szFileName,lpNames[j],260); @@ -1701,6 +1711,10 @@ BOOL SFMPQAPI WINAPI SFileListFiles(MPQHANDLE hMPQ, LPCSTR lpFileLists, FILELIST } if (j+1==dwTotalLines) { sprintf(lpListBuffer[i].szFileName,UNKNOWN_OUT,i); + if (dwFlags & SFILE_LIST_FLAG_UNKNOWN) { + lpListBuffer[i].dwFileExists |= 2; + } + if (dwFlags&SFILE_LIST_ONLY_KNOWN) { lpListBuffer[i].dwFileExists = 0; }