[Scummvm-cvs-logs] CVS: scummvm/common engine.cpp,1.16,1.17 engine.h,1.17,1.18

Pawel Kolodziejski aquadran at users.sourceforge.net
Fri Mar 7 07:39:07 CET 2003


Update of /cvsroot/scummvm/scummvm/common
In directory sc8-pr-cvs1:/tmp/cvs-serv13959/common

Modified Files:
	engine.cpp engine.h 
Log Message:
implemented formating string error for each engine

Index: engine.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/engine.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- engine.cpp	6 Mar 2003 21:45:17 -0000	1.16
+++ engine.cpp	7 Mar 2003 15:37:56 -0000	1.17
@@ -28,9 +28,11 @@
 /* FIXME - BIG HACK for MidiEmu */
 OSystem *g_system = 0;
 SoundMixer *g_mixer = 0;
+Engine *g_engine = 0;
 
 Engine::Engine(GameDetector *detector, OSystem *syst)
 	: _system(syst) {
+	g_engine = this;
 	_mixer = new SoundMixer();
 
 	_gameDataPath = detector->_gameDataPath;
@@ -91,6 +93,42 @@
 	}
 
 	return engine;
+}
+
+void NORETURN CDECL error(const char *s, ...) {
+	char buf_input[1024];
+	char buf_output[1024];
+	va_list va;
+
+	va_start(va, s);
+	vsprintf(buf_input, s, va);
+	va_end(va);
+
+	if (g_engine) {
+		g_engine->errorString(buf_input, buf_output);
+	} else {
+		strcpy(buf_output, buf_input);
+	}
+
+#ifdef __GP32__ //ph0x FIXME?
+	printf("ERROR: %s\n", buf_output);
+#else
+	fprintf(stderr, "%s!\n", buf_output);
+#endif
+
+#if defined( USE_WINDBG )
+	OutputDebugString(buf_output);
+#endif
+
+#if defined ( _WIN32_WCE )
+	drawError(buf_output);
+#endif
+
+	// Finally exit. quit() will terminate the program if g_system iss present
+	if (g_system)
+		g_system->quit();
+	
+	exit(1);
 }
 
 void CDECL warning(const char *s, ...) {

Index: engine.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/engine.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- engine.h	6 Mar 2003 21:45:19 -0000	1.17
+++ engine.h	7 Mar 2003 15:37:57 -0000	1.18
@@ -59,7 +59,12 @@
 	// Create a new engine object based on the detector - either 
 	// a Scumm or a SimonState object currently.
 	static Engine *createFromDetector(GameDetector *detector, OSystem *syst);
+	
+	// Specific for each engine preparare of erroe string
+	virtual void errorString(const char *buf_input, char *buf_output) = 0;
 };
+
+extern Engine *g_engine;
 
 #if defined(__GNUC__)
 void CDECL error(const char *s, ...) NORETURN;





More information about the Scummvm-git-logs mailing list