diff --git a/src/error.c b/src/error.c index 909f2ed..d5b4612 100644 --- a/src/error.c +++ b/src/error.c @@ -41,3 +41,15 @@ errno_t we_map_win_error_to_errno(DWORD error) { } #pragma warning(pop) + +void we_set_win_error(DWORD error) { + if (error == 0) + error = GetLastError(); + else + SetLastError(error); + errno = we_map_win_error_to_errno(error); +} + +void we_clear_win_error(void) { + SetLastError(ERROR_SUCCESS); +} diff --git a/src/error.h b/src/error.h index 62746b9..49af6b5 100644 --- a/src/error.h +++ b/src/error.h @@ -9,4 +9,7 @@ DWORD we_map_ntstatus_to_win_error(NTSTATUS ntstatus); DWORD we_map_ntstatus_to_ws_error(NTSTATUS ntstatus); errno_t we_map_win_error_to_errno(DWORD error); +void we_set_win_error(DWORD error); +void we_clear_win_error(void); + #endif /* ERROR_H_ */