[Scummvm-cvs-logs] SF.net SVN: scummvm:[38722] scummvm/trunk/engines/sci

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sat Feb 21 19:46:04 CET 2009


Revision: 38722
          http://scummvm.svn.sourceforge.net/scummvm/?rev=38722&view=rev
Author:   thebluegr
Date:     2009-02-21 18:46:03 +0000 (Sat, 21 Feb 2009)

Log Message:
-----------
Renamed SCI's console to sciconsole (MSVC has problems with files with the same name under different directories). ScummVM's console can be enabled correctly under MSVC now

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/grammar.cpp
    scummvm/trunk/engines/sci/engine/heap.cpp
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp
    scummvm/trunk/engines/sci/include/engine.h
    scummvm/trunk/engines/sci/include/kernel.h
    scummvm/trunk/engines/sci/module.mk
    scummvm/trunk/engines/sci/sci.cpp

Added Paths:
-----------
    scummvm/trunk/engines/sci/include/sciconsole.h
    scummvm/trunk/engines/sci/scicore/sciconsole.cpp

Removed Paths:
-------------
    scummvm/trunk/engines/sci/include/console.h
    scummvm/trunk/engines/sci/scicore/console.cpp

Modified: scummvm/trunk/engines/sci/engine/grammar.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/grammar.cpp	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/engine/grammar.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -30,7 +30,7 @@
 
 #include "sci/tools.h"
 #include "sci/include/vocabulary.h"
-#include "sci/include/console.h"
+#include "sci/include/sciconsole.h"
 
 namespace Sci {
 

Modified: scummvm/trunk/engines/sci/engine/heap.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/heap.cpp	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/engine/heap.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -24,7 +24,7 @@
  */
 
 #include "sci/include/engine.h"
-#include "sci/include/console.h"
+#include "sci/include/sciconsole.h"
 #include "sci/engine/heap.h"
 
 namespace Sci {

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -49,7 +49,7 @@
 #include "sci/engine/gc.h"
 #include "sci/include/sciresource.h"
 #include "sci/include/engine.h"
-#include "sci/include/console.h"
+#include "sci/include/sciconsole.h"
 #include "sci/include/kdebug.h"
 #include "sci/include/vocabulary.h"
 #include "sci/engine/kernel_types.h"

Deleted: scummvm/trunk/engines/sci/include/console.h
===================================================================
--- scummvm/trunk/engines/sci/include/console.h	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/include/console.h	2009-02-21 18:46:03 UTC (rev 38722)
@@ -1,230 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-/* Header file for the SCI console.
-** Please note that the console does not use the priority field; the console
-** should therefore be drawn after everything else has been drawn (with the
-** possible exception of the mouse pointer).
-*/
-
-#ifndef _SCI_CONSOLE_H_
-#define _SCI_CONSOLE_H_
-
-#include "common/scummsys.h"
-
-#include "sci/include/sci_memory.h"
-#include "sci/tools.h"
-#include "sci/include/vm_types.h"
-
-#define SCI_CONSOLE
-#include "sci/include/gfx_operations.h"
-
-namespace Sci {
-
-extern int con_passthrough;
-/* Echo all sciprintf() stuff to the text console */
-extern FILE *con_file;
-/* Echo all sciprintf() output to a text file. Note: clients of freesci.dll
-** should use open_console_file and close_console_file, rather than refer
-** directly to the con_file variable.
-*/
-
-typedef union {
-	int32 val;
-	char *str;
-	reg_t reg;
-} cmd_param_t;
-
-extern unsigned int cmd_paramlength;
-/* The number of parameters passed to a function called from the parser */
-
-extern cmd_param_t *cmd_params;
-/* The parameters passed to a function called by the parser */
-
-extern struct EngineState *con_gamestate;
-/* The game state as used by some of the console commands */
-
-
-/*** FUNCTION DEFINITIONS ***/
-
-void con_set_string_callback(void(*callback)(char *));
-/* Sets the console string callback
-** Parameters: (void -> char *) callback: The closure to invoke after
-**                              a string for sciprintf() has been generated
-** This sets a single callback function to be used after sciprintf()
-** is used.
-*/
-
-void con_set_pixmap_callback(void(*callback)(gfx_pixmap_t *));
-/* Sets the console pixmap callback
-** Parameters: (void -> gfx_pixmap_t *) callback: The closure to invoke after
-**                                      a pixmap has been provided to be
-**                                      published in the on-screen console
-** This sets a single callback function to be used after sciprintf()
-** is used.
-*/
-
-void con_init();
-/* Initializes the command parser
-** Parameters: (void)
-** Returns   : (void)
-** This function will initialize hook up a few commands to the parser.
-** It must be called before cmdParse() is used.
-*/
-
-
-void con_parse(EngineState *s, const char *command);
-/* Parses a command and summons appropriate facilities to handle it
-** Parameters: (EngineState *) s: The EngineState to use
-**             command: The command to execute
-** Returns   : (void)
-*/
-
-
-int con_hook_command(int command(EngineState *s), const char *name, const char *param, const char *description);
-/* Adds a command to the parser's command list
-** Parameters: command: The command to add
-**             name: The command's name
-**             param: A description of the parameters it takes
-**             description: A short description of what it does
-** Returns   : 0 if successful, 1 if appending failed because
-**             of an incorrect *param string, 'command'==0, or
-**             'name' already being in use.
-** A valid param string is either empty (no parameters allowed)
-** or contains one of the following tokens:
-**   ! Special token: EngineState* must be set for this function to be called
-**   i (an int)
-**   s (a 'string' (char *))
-**   h (a byte, described in hexadecimal digits)
-**   a (a heap address, register or object name)
-**   r (any register value)
-**   x* (an arbitrary (possibly 0) number of 'x' tokens)
-** The '*' token may only be used as the last token of the list.
-** Another way to specify optional parameters is by means of the
-** '-opt:t' notation, which allows an optional parameter of type 't'
-** to be specified as 'opt:<value>' when calling. See also the
-** con_hasopt() and con_getopt() calls.
-**
-** Please note that the 'h' type does accept hexadecimal numbers greater
-** than 0xff and less than 0x00, but clips them to this range.
-**
-** Example: "isi*" would define the function to take an int, a
-** string, and an arbitrary number of ints as parameters (in that sequence).
-**
-** When the function is called, it can retrieve its parameters from cmd_params;
-** the actual number of parameters is stored in cmd_paramlength.
-** It is allowed to modify the char*s from a cmd_params[] element, as long
-** as no element beyond strlen(cmd_params[x].str)+1 is accessed.
-*/
-
-cmd_param_t con_getopt(char *opt);
-/* Retreives the specified optional parameter
-** -- for use within console functions only --
-** Parameters: (char *) opt: The optional parameter to retrieve
-** Returns   : (cmd_param_t) The corresponding parameter
-** Should only be used if con_hasopt() reports its presence.
-*/
-
-int con_hasopt(char *opt);
-/* Checks whether an optional parameter was specified
-** -- for use within console functions only --
-** Parameters: (char *) opt: The optional parameter to check for
-** Returns   : (int) non-zero iff the parameter was specified
-*/
-
-int con_can_handle_pixmaps();
-/* Determines whether the console supports pixmap inserts
-** Returns   : (int) non-zero iff pixmap inserts are supported
-*/
-
-int con_insert_pixmap(gfx_pixmap_t *pixmap);
-/* Inserts a pixmap into the console history buffer
-** Parameters: (gfx_pixmap_t *) pixmap: The pixmap to insert
-** Returns   : (int) 0 on success, non-zero if no receiver for
-**                   the pixmap could not be found
-** The pixmap must be unique; it is freed by the console on demand.
-** Use gfx_clone_pixmap() if neccessary.
-** If the pixmap could not be inserted, the called must destroy it
-*/
-
-int con_hook_page(const char *topic, const char *body);
-/* Hooks a general information page to the manual page system
-** Parameters: (const char *) topic: The topic name
-**             (const char *) body: The text body to assign to the topic
-** Returns   : (int) 0 on success
-*/
-
-int con_hook_int(int *pointer, const char *name, const char *description);
-/* Adds an int to the list of modifyable ints.
-** Parameters: pointer: Pointer to the int to add to the list
-**             name: Name for this value
-**             description: A short description for the value
-** Returns   : 0 on success, 1 if either value has already been added
-**             or if name is already being used for a different value.
-** The internal list of int references is used by some of the basic commands.
-*/
-
-
-void con_gfx_init();
-/* Initializes the gfx console
-*/
-
-void con_gfx_show(gfx_state_t *state);
-/* Enters on-screen console mode
-** Parameters: (gfx_state_t *state): The graphics state to use for interaction
-** Returns   : (void)
-*/
-
-char *con_gfx_read(gfx_state_t *state);
-/* Reads a single line from the on-screen console, if it is open
-** Parameters: (gfx_state_t *state): The graphics state to use for interaction
-** Returns   : (char *) The input, in a static buffer
-*/
-
-void con_gfx_hide(gfx_state_t *stae);
-/* Closes the on-screen console
-** Parameters: (gfx_state_t *state): The graphics state to use for interaction
-** Returns   : (void)
-*/
-
-
-int sci_hexdump(byte *data, int length, int offsetplus);
-
-void open_console_file(char *filename);
-/* Opens the file to which the console output is echoed. If a file was opened
-** before, closes it.
-** Parameters: filename - name of the file
-** Returns   : (void)
-*/
-
-void close_console_file();
-/* Closes the console output file.
-** Parameters: (void)
-** Returns   : (void)
-*/
-
-} // End of namespace Sci
-
-#endif /* _SCI_CONSOLE_H_ */

Modified: scummvm/trunk/engines/sci/include/engine.h
===================================================================
--- scummvm/trunk/engines/sci/include/engine.h	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/include/engine.h	2009-02-21 18:46:03 UTC (rev 38722)
@@ -37,7 +37,7 @@
 #include "sci/include/sciresource.h"
 #include "sci/include/script.h"
 #include "sci/include/vocabulary.h"
-#include "sci/include/console.h"
+#include "sci/include/sciconsole.h"
 #include "sci/include/vm.h"
 #include "sci/include/menubar.h"
 #include "sci/include/versions.h"

Modified: scummvm/trunk/engines/sci/include/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/include/kernel.h	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/include/kernel.h	2009-02-21 18:46:03 UTC (rev 38722)
@@ -33,7 +33,7 @@
 #include "sci/include/uinput.h"
 #include "sci/include/event.h"
 #include "sci/include/vm.h"
-#include "sci/include/console.h" /* sciprintf() */
+#include "sci/include/sciconsole.h" /* sciprintf() */
 
 namespace Sci {
 

Copied: scummvm/trunk/engines/sci/include/sciconsole.h (from rev 38720, scummvm/trunk/engines/sci/include/console.h)
===================================================================
--- scummvm/trunk/engines/sci/include/sciconsole.h	                        (rev 0)
+++ scummvm/trunk/engines/sci/include/sciconsole.h	2009-02-21 18:46:03 UTC (rev 38722)
@@ -0,0 +1,230 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+/* Header file for the SCI console.
+** Please note that the console does not use the priority field; the console
+** should therefore be drawn after everything else has been drawn (with the
+** possible exception of the mouse pointer).
+*/
+
+#ifndef _SCI_CONSOLE_H_
+#define _SCI_CONSOLE_H_
+
+#include "common/scummsys.h"
+
+#include "sci/include/sci_memory.h"
+#include "sci/tools.h"
+#include "sci/include/vm_types.h"
+
+#define SCI_CONSOLE
+#include "sci/include/gfx_operations.h"
+
+namespace Sci {
+
+extern int con_passthrough;
+/* Echo all sciprintf() stuff to the text console */
+extern FILE *con_file;
+/* Echo all sciprintf() output to a text file. Note: clients of freesci.dll
+** should use open_console_file and close_console_file, rather than refer
+** directly to the con_file variable.
+*/
+
+typedef union {
+	int32 val;
+	char *str;
+	reg_t reg;
+} cmd_param_t;
+
+extern unsigned int cmd_paramlength;
+/* The number of parameters passed to a function called from the parser */
+
+extern cmd_param_t *cmd_params;
+/* The parameters passed to a function called by the parser */
+
+extern struct EngineState *con_gamestate;
+/* The game state as used by some of the console commands */
+
+
+/*** FUNCTION DEFINITIONS ***/
+
+void con_set_string_callback(void(*callback)(char *));
+/* Sets the console string callback
+** Parameters: (void -> char *) callback: The closure to invoke after
+**                              a string for sciprintf() has been generated
+** This sets a single callback function to be used after sciprintf()
+** is used.
+*/
+
+void con_set_pixmap_callback(void(*callback)(gfx_pixmap_t *));
+/* Sets the console pixmap callback
+** Parameters: (void -> gfx_pixmap_t *) callback: The closure to invoke after
+**                                      a pixmap has been provided to be
+**                                      published in the on-screen console
+** This sets a single callback function to be used after sciprintf()
+** is used.
+*/
+
+void con_init();
+/* Initializes the command parser
+** Parameters: (void)
+** Returns   : (void)
+** This function will initialize hook up a few commands to the parser.
+** It must be called before cmdParse() is used.
+*/
+
+
+void con_parse(EngineState *s, const char *command);
+/* Parses a command and summons appropriate facilities to handle it
+** Parameters: (EngineState *) s: The EngineState to use
+**             command: The command to execute
+** Returns   : (void)
+*/
+
+
+int con_hook_command(int command(EngineState *s), const char *name, const char *param, const char *description);
+/* Adds a command to the parser's command list
+** Parameters: command: The command to add
+**             name: The command's name
+**             param: A description of the parameters it takes
+**             description: A short description of what it does
+** Returns   : 0 if successful, 1 if appending failed because
+**             of an incorrect *param string, 'command'==0, or
+**             'name' already being in use.
+** A valid param string is either empty (no parameters allowed)
+** or contains one of the following tokens:
+**   ! Special token: EngineState* must be set for this function to be called
+**   i (an int)
+**   s (a 'string' (char *))
+**   h (a byte, described in hexadecimal digits)
+**   a (a heap address, register or object name)
+**   r (any register value)
+**   x* (an arbitrary (possibly 0) number of 'x' tokens)
+** The '*' token may only be used as the last token of the list.
+** Another way to specify optional parameters is by means of the
+** '-opt:t' notation, which allows an optional parameter of type 't'
+** to be specified as 'opt:<value>' when calling. See also the
+** con_hasopt() and con_getopt() calls.
+**
+** Please note that the 'h' type does accept hexadecimal numbers greater
+** than 0xff and less than 0x00, but clips them to this range.
+**
+** Example: "isi*" would define the function to take an int, a
+** string, and an arbitrary number of ints as parameters (in that sequence).
+**
+** When the function is called, it can retrieve its parameters from cmd_params;
+** the actual number of parameters is stored in cmd_paramlength.
+** It is allowed to modify the char*s from a cmd_params[] element, as long
+** as no element beyond strlen(cmd_params[x].str)+1 is accessed.
+*/
+
+cmd_param_t con_getopt(char *opt);
+/* Retreives the specified optional parameter
+** -- for use within console functions only --
+** Parameters: (char *) opt: The optional parameter to retrieve
+** Returns   : (cmd_param_t) The corresponding parameter
+** Should only be used if con_hasopt() reports its presence.
+*/
+
+int con_hasopt(char *opt);
+/* Checks whether an optional parameter was specified
+** -- for use within console functions only --
+** Parameters: (char *) opt: The optional parameter to check for
+** Returns   : (int) non-zero iff the parameter was specified
+*/
+
+int con_can_handle_pixmaps();
+/* Determines whether the console supports pixmap inserts
+** Returns   : (int) non-zero iff pixmap inserts are supported
+*/
+
+int con_insert_pixmap(gfx_pixmap_t *pixmap);
+/* Inserts a pixmap into the console history buffer
+** Parameters: (gfx_pixmap_t *) pixmap: The pixmap to insert
+** Returns   : (int) 0 on success, non-zero if no receiver for
+**                   the pixmap could not be found
+** The pixmap must be unique; it is freed by the console on demand.
+** Use gfx_clone_pixmap() if neccessary.
+** If the pixmap could not be inserted, the called must destroy it
+*/
+
+int con_hook_page(const char *topic, const char *body);
+/* Hooks a general information page to the manual page system
+** Parameters: (const char *) topic: The topic name
+**             (const char *) body: The text body to assign to the topic
+** Returns   : (int) 0 on success
+*/
+
+int con_hook_int(int *pointer, const char *name, const char *description);
+/* Adds an int to the list of modifyable ints.
+** Parameters: pointer: Pointer to the int to add to the list
+**             name: Name for this value
+**             description: A short description for the value
+** Returns   : 0 on success, 1 if either value has already been added
+**             or if name is already being used for a different value.
+** The internal list of int references is used by some of the basic commands.
+*/
+
+
+void con_gfx_init();
+/* Initializes the gfx console
+*/
+
+void con_gfx_show(gfx_state_t *state);
+/* Enters on-screen console mode
+** Parameters: (gfx_state_t *state): The graphics state to use for interaction
+** Returns   : (void)
+*/
+
+char *con_gfx_read(gfx_state_t *state);
+/* Reads a single line from the on-screen console, if it is open
+** Parameters: (gfx_state_t *state): The graphics state to use for interaction
+** Returns   : (char *) The input, in a static buffer
+*/
+
+void con_gfx_hide(gfx_state_t *stae);
+/* Closes the on-screen console
+** Parameters: (gfx_state_t *state): The graphics state to use for interaction
+** Returns   : (void)
+*/
+
+
+int sci_hexdump(byte *data, int length, int offsetplus);
+
+void open_console_file(char *filename);
+/* Opens the file to which the console output is echoed. If a file was opened
+** before, closes it.
+** Parameters: filename - name of the file
+** Returns   : (void)
+*/
+
+void close_console_file();
+/* Closes the console output file.
+** Parameters: (void)
+** Returns   : (void)
+*/
+
+} // End of namespace Sci
+
+#endif /* _SCI_CONSOLE_H_ */

Modified: scummvm/trunk/engines/sci/module.mk
===================================================================
--- scummvm/trunk/engines/sci/module.mk	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/module.mk	2009-02-21 18:46:03 UTC (rev 38722)
@@ -53,7 +53,7 @@
 	gfx/resource/sci_view_0.o \
 	gfx/resource/sci_view_1.o \
 	scicore/aatree.o \
-	scicore/console.o \
+	scicore/sciconsole.o \
 	scicore/decompress0.o \
 	scicore/decompress01.o \
 	scicore/decompress1.o \

Modified: scummvm/trunk/engines/sci/sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sci.cpp	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/sci.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -173,8 +173,7 @@
 	initGraphics(320, 200, false);
 
 	// Create debugger console. It requires GFX to be initialized
-	// FIXME: Enabling this leads to an unresolved external symbol during linking...
-	//_console = new Console(this);
+	_console = new Console(this);
 
 	// Additional setup.
 	printf("SciEngine::init\n");

Deleted: scummvm/trunk/engines/sci/scicore/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/scicore/console.cpp	2009-02-21 18:39:53 UTC (rev 38721)
+++ scummvm/trunk/engines/sci/scicore/console.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -1,128 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-/* First part of the console implmentation: VM independent stuff */
-/* Remember, it doesn't have to be fast. */
-
-#include "sci/include/sci_memory.h"
-#include "sci/include/engine.h"
-
-namespace Sci {
-
-#ifdef SCI_CONSOLE
-
-int con_passthrough = 0;
-FILE *con_file = NULL;
-
-static void(*_con_string_callback)(char*) = NULL;
-static void (*_con_pixmap_callback)(gfx_pixmap_t *) = NULL;
-
-int sciprintf(const char *fmt, ...) {
-	va_list argp;
-	int bufsize = 256;
-	int i;
-	char *buf = (char *)sci_malloc(bufsize);
-
-	if (NULL == fmt) {
-		fprintf(stderr, "console.c: sciprintf(): NULL passed for parameter fmt\n");
-		return -1;
-	}
-
-	if (NULL == buf) {
-		fprintf(stderr, "console.c: sciprintf(): malloc failed for buf\n");
-		return -1;
-	}
-
-	va_start(argp, fmt);
-	while ((i = vsnprintf(buf, bufsize - 1, fmt, argp)) == -1 || (i >= bufsize - 2)) {
-		// while we're out of space...
-		va_end(argp);
-		va_start(argp, fmt); // reset argp
-
-		free(buf);
-		buf = (char *)sci_malloc(bufsize <<= 1);
-	}
-	va_end(argp);
-
-	if (con_passthrough)
-		printf("%s", buf);
-	if (con_file)
-		fprintf(con_file, "%s", buf);
-
-	if (_con_string_callback)
-		_con_string_callback(buf);
-	else
-		free(buf);
-
-	return 1;
-}
-
-void con_set_string_callback(void(*callback)(char *)) {
-	_con_string_callback = callback;
-}
-
-void con_set_pixmap_callback(void(*callback)(gfx_pixmap_t *)) {
-	_con_pixmap_callback = callback;
-}
-
-int con_can_handle_pixmaps() {
-	return _con_pixmap_callback != NULL;
-}
-
-int con_insert_pixmap(gfx_pixmap_t *pixmap) {
-	if (_con_pixmap_callback)
-		_con_pixmap_callback(pixmap);
-	else
-		return 1;
-	return 0;
-}
-
-void open_console_file(char *filename) {
-	if (con_file != NULL)
-		fclose(con_file);
-
-	if (NULL == filename) {
-		fprintf(stderr, "console.c: open_console_file(): NULL passed for parameter filename\r\n");
-	}
-#ifdef WIN32
-	con_file = fopen(filename, "wt");
-#else
-	con_file = fopen(filename, "w");
-#endif
-
-	if (NULL == con_file)
-		fprintf(stderr, "console.c: open_console_file(): Could not open output file %s\n", filename);
-}
-
-void close_console_file() {
-	if (con_file != NULL) {
-		fclose(con_file);
-		con_file = NULL;
-	}
-}
-
-#endif // SCI_CONSOLE
-
-} // End of namespace Sci

Copied: scummvm/trunk/engines/sci/scicore/sciconsole.cpp (from rev 38720, scummvm/trunk/engines/sci/scicore/console.cpp)
===================================================================
--- scummvm/trunk/engines/sci/scicore/sciconsole.cpp	                        (rev 0)
+++ scummvm/trunk/engines/sci/scicore/sciconsole.cpp	2009-02-21 18:46:03 UTC (rev 38722)
@@ -0,0 +1,128 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+/* First part of the console implmentation: VM independent stuff */
+/* Remember, it doesn't have to be fast. */
+
+#include "sci/include/sci_memory.h"
+#include "sci/include/engine.h"
+
+namespace Sci {
+
+#ifdef SCI_CONSOLE
+
+int con_passthrough = 0;
+FILE *con_file = NULL;
+
+static void(*_con_string_callback)(char*) = NULL;
+static void (*_con_pixmap_callback)(gfx_pixmap_t *) = NULL;
+
+int sciprintf(const char *fmt, ...) {
+	va_list argp;
+	int bufsize = 256;
+	int i;
+	char *buf = (char *)sci_malloc(bufsize);
+
+	if (NULL == fmt) {
+		fprintf(stderr, "console.c: sciprintf(): NULL passed for parameter fmt\n");
+		return -1;
+	}
+
+	if (NULL == buf) {
+		fprintf(stderr, "console.c: sciprintf(): malloc failed for buf\n");
+		return -1;
+	}
+
+	va_start(argp, fmt);
+	while ((i = vsnprintf(buf, bufsize - 1, fmt, argp)) == -1 || (i >= bufsize - 2)) {
+		// while we're out of space...
+		va_end(argp);
+		va_start(argp, fmt); // reset argp
+
+		free(buf);
+		buf = (char *)sci_malloc(bufsize <<= 1);
+	}
+	va_end(argp);
+
+	if (con_passthrough)
+		printf("%s", buf);
+	if (con_file)
+		fprintf(con_file, "%s", buf);
+
+	if (_con_string_callback)
+		_con_string_callback(buf);
+	else
+		free(buf);
+
+	return 1;
+}
+
+void con_set_string_callback(void(*callback)(char *)) {
+	_con_string_callback = callback;
+}
+
+void con_set_pixmap_callback(void(*callback)(gfx_pixmap_t *)) {
+	_con_pixmap_callback = callback;
+}
+
+int con_can_handle_pixmaps() {
+	return _con_pixmap_callback != NULL;
+}
+
+int con_insert_pixmap(gfx_pixmap_t *pixmap) {
+	if (_con_pixmap_callback)
+		_con_pixmap_callback(pixmap);
+	else
+		return 1;
+	return 0;
+}
+
+void open_console_file(char *filename) {
+	if (con_file != NULL)
+		fclose(con_file);
+
+	if (NULL == filename) {
+		fprintf(stderr, "console.c: open_console_file(): NULL passed for parameter filename\r\n");
+	}
+#ifdef WIN32
+	con_file = fopen(filename, "wt");
+#else
+	con_file = fopen(filename, "w");
+#endif
+
+	if (NULL == con_file)
+		fprintf(stderr, "console.c: open_console_file(): Could not open output file %s\n", filename);
+}
+
+void close_console_file() {
+	if (con_file != NULL) {
+		fclose(con_file);
+		con_file = NULL;
+	}
+}
+
+#endif // SCI_CONSOLE
+
+} // End of namespace Sci


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