[Scummvm-cvs-logs] SF.net SVN: scummvm:[34763] scummvm/trunk/gui/ThemeEngine.cpp

tanoku at users.sourceforge.net tanoku at users.sourceforge.net
Thu Oct 9 20:51:29 CEST 2008


Revision: 34763
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34763&view=rev
Author:   tanoku
Date:     2008-10-09 18:51:26 +0000 (Thu, 09 Oct 2008)

Log Message:
-----------
Fixed warning when loading themes contained inside a folder.

Modified Paths:
--------------
    scummvm/trunk/gui/ThemeEngine.cpp

Modified: scummvm/trunk/gui/ThemeEngine.cpp
===================================================================
--- scummvm/trunk/gui/ThemeEngine.cpp	2008-10-09 18:09:59 UTC (rev 34762)
+++ scummvm/trunk/gui/ThemeEngine.cpp	2008-10-09 18:51:26 UTC (rev 34763)
@@ -534,44 +534,49 @@
 	int parseCount = 0;
 	bool failed = false;
 	
+	FSNode node(themeName);
+	if (!node.exists() || !node.isReadable())
+		return false;
+	
 #ifdef USE_ZLIB
-	Common::ZipArchive zipFile(themeName.c_str());
-	Common::ArchiveMemberList zipContents;
+	if (node.getPath().hasSuffix(".zip") && !node.isDirectory()) {
+		Common::ZipArchive zipFile(node);
+		Common::ArchiveMemberList zipContents;
 	
-	if (zipFile.isOpen() && zipFile.listMembers(zipContents)) {
-		
-//		for (uint i = 0; i < zipContents.size(); ++i) {
-		for (Common::ArchiveMemberList::iterator za = zipContents.begin(); za != zipContents.end(); ++za) {
-			if (!failed && matchString((*za)->getName().c_str(), "*.stx")) {	
-				if (parser()->loadStream((*za)->open()) == false) {
-					warning("Failed to load stream for zipped file '%s'", fileNameBuffer);
-					failed = true;
-				}
+		if (zipFile.isOpen() && zipFile.listMembers(zipContents)) {
+			for (Common::ArchiveMemberList::iterator za = zipContents.begin(); za != zipContents.end(); ++za) {
+				if (!failed && matchString((*za)->getName().c_str(), "*.stx")) {	
+					if (parser()->loadStream((*za)->open()) == false) {
+						warning("Failed to load stream for zipped file '%s'", fileNameBuffer);
+						failed = true;
+					}
 				
-				if (parser()->parse() == false) {
-					warning("Theme parsing failed on zipped file '%s'.", fileNameBuffer);
-					failed = true;
-				}
+					if (parser()->parse() == false) {
+						warning("Theme parsing failed on zipped file '%s'.", fileNameBuffer);
+						failed = true;
+					}
 				
-				parser()->close();
-				parseCount++;
-			} else if ((*za)->getName() == "THEMERC") {
-				Common::SeekableReadStream *stream = (*za)->open();
-				stxHeader = stream->readLine();
+					parser()->close();
+					parseCount++;
+				} else if ((*za)->getName() == "THEMERC") {
+					Common::SeekableReadStream *stream = (*za)->open();
+					stxHeader = stream->readLine();
 				
-				if (!themeConfigParseHeader(stxHeader.c_str(), _themeName)) {
-					warning("Corrupted 'THEMERC' file in theme '%s'", _themeFileName.c_str());
-					failed = true;
+					if (!themeConfigParseHeader(stxHeader.c_str(), _themeName)) {
+						warning("Corrupted 'THEMERC' file in theme '%s'", _themeFileName.c_str());
+						failed = true;
+					}
+					
+					delete stream;
 				}
-					
-				delete stream;
 			}
+		} else {
+			warning("Failed to open Zip archive '%s'.\n", themeName.c_str());
+			return false;
 		}
 	} else {
 #endif
-        
-        FSNode node(themeName);
-		if (node.exists() && node.isReadable() && node.isDirectory()) {
+		if (node.isDirectory()) {
 			FSList fslist;
 			if (!node.getChildren(fslist, FSNode::kListFilesOnly))
 				return false;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list