#ifdef ENABLE_ERROR_MESSAGES
bool wimlib_print_errors = false;
FILE *wimlib_error_file = NULL; /* Set in wimlib_global_init() */
+static bool wimlib_owns_error_file = false;
#endif
#if defined(ENABLE_ERROR_MESSAGES) || defined(ENABLE_DEBUG)
wimlib_set_error_file(FILE *fp)
{
#ifdef ENABLE_ERROR_MESSAGES
+ if (wimlib_owns_error_file)
+ fclose(wimlib_error_file);
wimlib_error_file = fp;
- wimlib_print_errors = true;
+ wimlib_print_errors = (fp != NULL);
+ wimlib_owns_error_file = false;
return 0;
#else
return WIMLIB_ERR_UNSUPPORTED;
}
WIMLIBAPI int
-wimlib_set_error_file_by_name(const char *path)
+wimlib_set_error_file_by_name(const tchar *path)
{
#ifdef ENABLE_ERROR_MESSAGES
FILE *fp;
+#ifdef __WIN32__
+ fp = win32_open_logfile(path);
+#else
fp = fopen(path, "a");
+#endif
if (!fp)
return WIMLIB_ERR_OPEN;
-
- wimlib_error_file = fp;
- wimlib_print_errors = true;
+ wimlib_set_error_file(fp);
+ wimlib_owns_error_file = true;
return 0;
#else
return WIMLIB_ERR_UNSUPPORTED;