aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/scicore/tools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/scicore/tools.cpp')
-rw-r--r--engines/sci/scicore/tools.cpp34
1 files changed, 25 insertions, 9 deletions
diff --git a/engines/sci/scicore/tools.cpp b/engines/sci/scicore/tools.cpp
index 784f52bcc3..66ad33a8e2 100644
--- a/engines/sci/scicore/tools.cpp
+++ b/engines/sci/scicore/tools.cpp
@@ -50,10 +50,10 @@
Sleep(0); \
} else { \
if (timeBeginPeriod(1) != TIMERR_NOERROR) \
- error("timeBeginPeriod(1) failed\n"); \
+ fprintf(stderr, "timeBeginPeriod(1) failed\n"); \
Sleep(x); \
if (timeEndPeriod(1) != TIMERR_NOERROR) \
- error("timeEndPeriod(1) failed\n"); \
+ fprintf(stderr, "timeEndPeriod(1) failed\n"); \
} \
} while (0);
#endif
@@ -112,13 +112,29 @@ int sci_ffs(int _mask) {
// Functions for internal macro use
void _SCIkvprintf(FILE *file, const char *format, va_list args);
-void _SCIkprintf(FILE *file, const char *format, ...) GCC_PRINTF(2, 3);
void _SCIkvprintf(FILE *file, const char *format, va_list args) {
vfprintf(file, format, args);
if (con_file) vfprintf(con_file, format, args);
}
+
+void _SCIkwarn(EngineState *s, const char *file, int line, int area, const char *format, ...) {
+ va_list args;
+
+ if (area == SCIkERROR_NR)
+ fprintf(stderr, "ERROR: ");
+ else
+ fprintf(stderr, "Warning: ");
+
+ va_start(args, format);
+ _SCIkvprintf(stderr, format, args);
+ va_end(args);
+ fflush(NULL);
+
+ if (sci_debug_flags & _DEBUG_FLAG_BREAK_ON_WARNINGS) script_debug_flag = 1;
+}
+
void _SCIkdebug(EngineState *s, const char *file, int line, int area, const char *format, ...) {
va_list args;
@@ -174,13 +190,13 @@ void sci_gettime(long *seconds, long *useconds) {
DWORD tm;
if (TIMERR_NOERROR != timeBeginPeriod(1)) {
- error("timeBeginPeriod(1) failed in sci_gettime\n");
+ fprintf(stderr, "timeBeginPeriod(1) failed in sci_gettime\n");
}
tm = timeGetTime();
if (TIMERR_NOERROR != timeEndPeriod(1)) {
- error("timeEndPeriod(1) failed in sci_gettime\n");
+ fprintf(stderr, "timeEndPeriod(1) failed in sci_gettime\n");
}
*seconds = tm / 1000;
@@ -283,7 +299,7 @@ char *sci_find_first(sci_dir_t *dir, const char *mask) {
closedir(dir->dir);
if (!(dir->dir = opendir("."))) {
- sciprintf("%s, L%d: opendir(\".\") failed", __FILE__, __LINE__);
+ sciprintf("%s, L%d: opendir(\".\") failed!\n", __FILE__, __LINE__);
return NULL;
}
@@ -347,7 +363,7 @@ int sci_mkpath(const char *path) {
sciprintf("Error: Could not create subdirectory '%s' in", path_position);
if (next_separator)
*next_separator = G_DIR_SEPARATOR_S[0];
- sciprintf(" '%s'", path);
+ sciprintf(" '%s'!\n", path);
return -2;
}
}
@@ -399,7 +415,7 @@ Common::String _fcaseseek(const char *fname) {
// free it afterwards */
if (strchr(fname, G_DIR_SEPARATOR)) {
- error("_fcaseseek() does not support subdirs\n");
+ fprintf(stderr, "_fcaseseek() does not support subdirs\n");
BREAKPOINT();
}
@@ -450,7 +466,7 @@ char *sci_getcwd() {
free(cwd);
}
- error("Could not determine current working directory");
+ fprintf(stderr, "Could not determine current working directory!\n");
return NULL;
}