static HANDLE get_file_handle(WCHAR *filename, BOOL overwrite_file) { HANDLE hFile = create_file(filename, overwrite_file ? CREATE_ALWAYS : CREATE_NEW); if (hFile == INVALID_HANDLE_VALUE) { DWORD error = GetLastError(); if (error == ERROR_FILE_EXISTS) { if (!ask_confirm(STRING_OVERWRITE_FILE, filename)) { output_message(STRING_CANCELLED); exit(0); } hFile = create_file(filename, CREATE_ALWAYS); } else { WCHAR *str; FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, 0, (WCHAR *)&str, 0, NULL); output_writeconsole(str, lstrlenW(str)); LocalFree(str); exit(1); } } return hFile; }
static void REGPROC_print_error(void) { WCHAR *str; DWORD error_code, len; error_code = GetLastError(); len = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_code, 0, (WCHAR *)&str, 0, NULL); if (len == 0 && GetLastError() != NO_ERROR) { WINE_FIXME("FormatMessage failed: le=%u, previous=%u\n", GetLastError(), error_code); exit(1); } output_writeconsole(str, len); LocalFree(str); exit(1); }
static void output_formatstring(const WCHAR *fmt, __ms_va_list va_args) { WCHAR *str; DWORD len; SetLastError(NO_ERROR); len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER, fmt, 0, 0, (WCHAR *)&str, 0, &va_args); if (len == 0 && GetLastError() != NO_ERROR) { WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt)); return; } output_writeconsole(str, len); LocalFree(str); }