mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-18 20:15:35 -04:00
Show a more helpful error when missing default.zip
also don't allocate so much on stack for zip reader
This commit is contained in:
parent
ad6ab7fb2a
commit
16b056e78e
@ -43,6 +43,16 @@ int main(void) {
|
|||||||
ErrorHandler_CheckOrFail(result, "Program - creating texturecache directory");
|
ErrorHandler_CheckOrFail(result, "Program - creating texturecache directory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UInt8 defPathBuffer[String_BufferSize(STRING_SIZE)];
|
||||||
|
String defPath = String_InitAndClearArray(defPathBuffer);
|
||||||
|
String_Format1(&defPath, "texpacks%rdefault.zip", &Platform_DirectorySeparator);
|
||||||
|
|
||||||
|
if (!Platform_FileExists(&defPath)) {
|
||||||
|
ErrorHandler_ShowDialog("Missing file", "default.zip missing, try running launcher first");
|
||||||
|
Platform_Exit(1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
Platform_LogConst("Starting " PROGRAM_APP_NAME " ..");
|
Platform_LogConst("Starting " PROGRAM_APP_NAME " ..");
|
||||||
Options_Init();
|
Options_Init();
|
||||||
Options_Load();
|
Options_Load();
|
||||||
|
@ -17,7 +17,9 @@
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*--------------------------------------------------------ZipEntry---------------------------------------------------------*
|
*--------------------------------------------------------ZipEntry---------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
|
#define ZIP_MAXNAMELEN 512
|
||||||
String Zip_ReadFixedString(Stream* stream, UInt8* buffer, UInt16 length) {
|
String Zip_ReadFixedString(Stream* stream, UInt8* buffer, UInt16 length) {
|
||||||
|
if (length > ZIP_MAXNAMELEN) ErrorHandler_Fail("Zip string too long");
|
||||||
String fileName = String_Init(buffer, length, length);
|
String fileName = String_Init(buffer, length, length);
|
||||||
Stream_Read(stream, buffer, length);
|
Stream_Read(stream, buffer, length);
|
||||||
buffer[length] = NULL; /* Ensure null terminated */
|
buffer[length] = NULL; /* Ensure null terminated */
|
||||||
@ -39,7 +41,7 @@ void Zip_ReadLocalFileHeader(ZipState* state, ZipEntry* entry) {
|
|||||||
|
|
||||||
UInt16 fileNameLen = Stream_ReadU16_LE(stream);
|
UInt16 fileNameLen = Stream_ReadU16_LE(stream);
|
||||||
UInt16 extraFieldLen = Stream_ReadU16_LE(stream);
|
UInt16 extraFieldLen = Stream_ReadU16_LE(stream);
|
||||||
UInt8 filenameBuffer[String_BufferSize(UInt16_MaxValue)];
|
UInt8 filenameBuffer[String_BufferSize(ZIP_MAXNAMELEN)];
|
||||||
String filename = Zip_ReadFixedString(stream, filenameBuffer, fileNameLen);
|
String filename = Zip_ReadFixedString(stream, filenameBuffer, fileNameLen);
|
||||||
if (!state->SelectEntry(&filename)) return;
|
if (!state->SelectEntry(&filename)) return;
|
||||||
|
|
||||||
|
@ -665,6 +665,9 @@ ReturnCode Platform_HttpGetRequestData(AsyncRequest* request, void* handle, void
|
|||||||
UInt32 left = size, read, totalRead = 0;
|
UInt32 left = size, read, totalRead = 0;
|
||||||
|
|
||||||
while (left > 0) {
|
while (left > 0) {
|
||||||
|
//UInt32 toRead = min(4096, left);
|
||||||
|
//UInt32 avail = 0;
|
||||||
|
//InternetQueryDataAvailable(handle, &avail, 0, NULL);
|
||||||
bool success = InternetReadFile(handle, buffer, left, &read);
|
bool success = InternetReadFile(handle, buffer, left, &read);
|
||||||
if (!success) { Platform_MemFree(data); return GetLastError(); }
|
if (!success) { Platform_MemFree(data); return GetLastError(); }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user