From: Tom Gundersen Date: Fri, 10 Apr 2015 18:39:43 +0000 (+0200) Subject: shared: move assert_return_errno() from libudev X-Git-Tag: v226.4~1^2~483 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=d6a6c7157af1ce285962f98f006a3f05bb7c11ef;ds=sidebyside shared: move assert_return_errno() from libudev This should not be used for any new code, as we don't set errno in new code, but there are several legacy users, so let's keep it in shared. --- diff --git a/src/shared/macro.h b/src/shared/macro.h index 7f89951d6..7ae1ed80b 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -256,6 +256,15 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) { } \ } while (false) +#define assert_return_errno(expr, r, err) \ + do { \ + if (_unlikely_(!(expr))) { \ + log_assert_failed_return(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); \ + errno = err; \ + return (r); \ + } \ + } while (false) + #define PTR_TO_INT(p) ((int) ((intptr_t) (p))) #define INT_TO_PTR(u) ((void *) ((intptr_t) (u))) #define PTR_TO_UINT(p) ((unsigned int) ((uintptr_t) (p)))