diff --git a/src/error.h b/src/error.h index 49af6b5..03683ea 100644 --- a/src/error.h +++ b/src/error.h @@ -12,4 +12,18 @@ errno_t we_map_win_error_to_errno(DWORD error); void we_set_win_error(DWORD error); void we_clear_win_error(void); +#define _return_error_helper(error, value) \ + do { \ + we_set_win_error(error); \ + return (value); \ + } while (0) + +#define return_error(value, ...) _return_error_helper(__VA_ARGS__ + 0, value) + +#define return_success(value) \ + do { \ + we_clear_win_error(); \ + return (value); \ + } while (0) + #endif /* ERROR_H_ */