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)
}
}
-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);
+ fprintf(stream, "%s", line_chars);
- return buffer;
-}
-
-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)
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);
return real_name;
}
-char *getHomeDir()
-{
- static char *dir = NULL;
-
-#if defined(PLATFORM_WIN32)
- if (dir == NULL)
- {
- dir = checked_malloc(MAX_PATH + 1);
-
- if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, dir)))
- strcpy(dir, ".");
- }
-#elif defined(PLATFORM_UNIX)
- if (dir == NULL)
- {
- if ((dir = getenv("HOME")) == NULL)
- {
- struct passwd *pwd;
-
- if ((pwd = getpwuid(getuid())) != NULL)
- dir = getStringCopy(pwd->pw_dir);
- else
- dir = ".";
- }
- }
-#else
- dir = ".";
-#endif
-
- return dir;
-}
-
/* ------------------------------------------------------------------------- */
/* path manipulation functions */
/* when doing batch processing, always enable verbose mode (warnings) */
options.verbose = TRUE;
}
-#if 1
-#if DEBUG
-#if defined(TARGET_SDL)
- else if (strncmp(option, "-SDL_ListModes", option_len) == 0)
- {
- SDL_Rect **modes;
- int i;
-
- SDL_Init(SDL_INIT_VIDEO);
-
- /* get available fullscreen/hardware modes */
- modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
-
- /* check if there are any modes available */
- if (modes == (SDL_Rect **)0)
- {
- printf("No modes available!\n");
-
- exit(-1);
- }
-
- /* check if our resolution is restricted */
- if (modes == (SDL_Rect **)-1)
- {
- printf("All resolutions available.\n");
- }
- else
- {
- /* print valid modes */
- printf("Available Modes:\n");
- for(i = 0; modes[i]; i++)
- printf(" %d x %d\n", modes[i]->w, modes[i]->h);
- }
-
- exit(0);
- }
-#endif
-#endif
-#endif
else if (*option == '-')
{
Error(ERR_EXIT_HELP, "unrecognized option '%s'", option_str);
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;
{
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)
{
char *getErrorFilename(char *basename)
{
- return getPath2(getUserDataDir(), basename);
+ return getPath2(getUserGameDataDir(), 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()