From: Holger Schemel Date: Thu, 27 Jul 2006 09:38:48 +0000 (+0200) Subject: rnd-20060727-2-src X-Git-Tag: 3.2.1^2~31 X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=commitdiff_plain;h=2a1101854ff7336e35d52f76a3114870c8a6b15d rnd-20060727-2-src --- diff --git a/src/conftime.h b/src/conftime.h index 6b2512d6..5cb98cb1 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2006-07-27 00:18]" +#define COMPILE_DATE_STRING "[2006-07-27 11:23]" diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 26c338ca..9125a4e1 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -50,53 +50,6 @@ static void vfprintf_newline(FILE *stream, char *format, va_list ap) fprintf(stream, "%s", newline); } -static void vprintf_error_ext(char *format, va_list ap, boolean print_newline) -{ - FILE *error_file = openErrorFile(); /* this returns at least 'stderr' */ - - if (print_newline) - vfprintf_newline(error_file, format, ap); - else - vfprintf(error_file, format, ap); - - if (error_file != stderr) /* do not close stream 'stderr' */ - fclose(error_file); -} - -static void vprintf_error(char *format, va_list ap) -{ - vprintf_error_ext(format, ap, FALSE); -} - -static void vprintf_error_newline(char *format, va_list ap) -{ - vprintf_error_ext(format, ap, TRUE); -} - -static void printf_error(char *format, ...) -{ - if (format) - { - va_list ap; - - va_start(ap, format); - vprintf_error(format, ap); - va_end(ap); - } -} - -static void printf_error_newline(char *format, ...) -{ - if (format) - { - va_list ap; - - va_start(ap, format); - vprintf_error_newline(format, ap); - va_end(ap); - } -} - static void fprintf_newline(FILE *stream, char *format, ...) { if (format) @@ -109,26 +62,14 @@ static void fprintf_newline(FILE *stream, char *format, ...) } } -static char *get_line_string(char *line_chars, int line_length) +void fprintf_line(FILE *stream, char *line_chars, int line_length) { - static char *buffer = NULL; - int line_chars_length = strlen(line_chars); int i; - if (buffer != NULL) - checked_free(buffer); - - buffer = checked_malloc(line_chars_length * line_length + 1); - for (i = 0; i < line_length; i++) - strcpy(&buffer[i * line_chars_length], line_chars); - - return buffer; -} + fprintf(stream, "%s", line_chars); -void fprintf_line(FILE *stream, char *line_chars, int line_length) -{ - fprintf_newline(stream, get_line_string(line_chars, line_length)); + fprintf_newline(stream, ""); } void printf_line(char *line_chars, int line_length) @@ -136,11 +77,6 @@ void printf_line(char *line_chars, int line_length) fprintf_line(stdout, line_chars, line_length); } -void printf_line_error(char *line_chars, int line_length) -{ - printf_error_newline(get_line_string(line_chars, line_length)); -} - void printf_line_with_prefix(char *prefix, char *line_chars, int line_length) { fprintf(stdout, "%s", prefix); @@ -900,7 +836,7 @@ void Error(int mode, char *format, ...) if (mode == ERR_RETURN_LINE) { if (!last_line_was_separator) - printf_line_error(format, 79); + fprintf_line(program.error_file, format, 79); last_line_was_separator = TRUE; @@ -920,23 +856,25 @@ void Error(int mode, char *format, ...) { va_list ap; - printf_error("%s%s: ", program.command_basename, process_name); + fprintf(program.error_file, "%s%s: ", program.command_basename, + process_name); if (mode & ERR_WARN) - printf_error("warning: "); + fprintf(program.error_file, "warning: "); va_start(ap, format); - vprintf_error_newline(format, ap); + vfprintf_newline(program.error_file, format, ap); va_end(ap); } if (mode & ERR_HELP) - printf_error_newline("%s: Try option '--help' for more information.", - program.command_basename); + fprintf_newline(program.error_file, + "%s: Try option '--help' for more information.", + program.command_basename); if (mode & ERR_EXIT) - printf_error_newline("%s%s: aborting", - program.command_basename, process_name); + fprintf_newline(program.error_file, "%s%s: aborting", + program.command_basename, process_name); if (mode & ERR_EXIT) { @@ -2864,22 +2802,22 @@ char *getErrorFilename(char *basename) return getPath2(getUserDataDir(), basename); } -void initErrorFile() +void openErrorFile() { - unlink(program.error_filename); -} - -FILE *openErrorFile() -{ - FILE *error_file = stderr; + /* always start with reliable default values */ + program.error_file = stderr; #if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) - if ((error_file = fopen(program.error_filename, MODE_APPEND)) == NULL) - fprintf_newline(stderr, "ERROR: cannot open file '%s' for appending!", + if ((program.error_file = fopen(program.error_filename, MODE_WRITE)) == NULL) + fprintf_newline(stderr, "ERROR: cannot open file '%s' for writing!", program.error_filename); #endif +} - return error_file; +void closeErrorFile() +{ + if (program.error_file != stderr) /* do not close stream 'stderr' */ + fclose(program.error_file); } void dumpErrorFile() diff --git a/src/libgame/misc.h b/src/libgame/misc.h index cc3ecf0a..9fb4f65b 100644 --- a/src/libgame/misc.h +++ b/src/libgame/misc.h @@ -189,8 +189,8 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *); void FreeCustomArtworkLists(struct ArtworkListInfo *); char *getErrorFilename(char *); -void initErrorFile(); -FILE *openErrorFile(); +void openErrorFile(); +void closeErrorFile(); void dumpErrorFile(); void NotifyUserAboutErrorFile(); diff --git a/src/libgame/system.c b/src/libgame/system.c index 5aac42f8..b3ad0f28 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -95,6 +95,7 @@ void InitProgramInfo(char *argv0, program.version_patch = VERSION_PATCH(program_version); program.error_filename = getErrorFilename(ERROR_BASENAME); + program.error_file = stderr; } void InitExitFunction(void (*exit_function)(int)) @@ -118,7 +119,7 @@ void InitPlatformDependentStuff(void) #endif #if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) - initErrorFile(); + openErrorFile(); #endif #if defined(TARGET_SDL) @@ -131,6 +132,10 @@ void InitPlatformDependentStuff(void) void ClosePlatformDependentStuff(void) { +#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) + closeErrorFile(); +#endif + #if defined(PLATFORM_MSDOS) dumpErrorFile(); #endif diff --git a/src/libgame/system.h b/src/libgame/system.h index 8fe22e2d..f96d530f 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -529,7 +529,8 @@ struct ProgramInfo char *cookie_prefix; char *filename_prefix; /* prefix to cut off from DOS filenames */ - char *error_filename; /* used instead of 'stderr' on some systems */ + char *error_filename; /* filename where to write error messages to */ + FILE *error_file; /* (used instead of 'stderr' on some systems) */ int version_major; int version_minor;