X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Futil.c;h=3b45ce6fa26626e8d9690151a1ee92f879d613c5;hb=efdb571bf22033727f0d15bb161614686e5bcf66;hp=86fcb05983f3308bf22241bda121e7f75e40857a;hpb=e61f93d517a76c23a3bfc2fdbd32fa190fbbc286;p=wimlib diff --git a/src/util.c b/src/util.c index 86fcb059..3b45ce6f 100644 --- a/src/util.c +++ b/src/util.c @@ -67,6 +67,7 @@ utf16le_strlen(const utf16lechar *s) #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) @@ -192,8 +193,11 @@ WIMLIBAPI int 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; @@ -201,17 +205,16 @@ wimlib_set_error_file(FILE *fp) } 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; - fp = fopen(path, "a"); + fp = tfopen(path, "a"); 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;