basic/errno-util: add helper to protect and set errno in one step

This pattern is used in a few places. Those are changed in this patch.
Subsequent patches will add more.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2022-10-10 09:12:21 +02:00
parent 6b7834fe5d
commit 50c5b991df
2 changed files with 7 additions and 6 deletions
+4
View File
@@ -22,6 +22,10 @@ static inline void _reset_errno_(int *saved_errno) {
_saved_errno_ = -1; \
} while (false)
#define LOCAL_ERRNO(value) \
PROTECT_ERRNO; \
errno = abs(value)
static inline int negative_errno(void) {
/* This helper should be used to shut up gcc if you know 'errno' is
* negative. Instead of "return -errno;", use "return negative_errno();"
+3 -6
View File
@@ -732,14 +732,12 @@ int log_internalv(
const char *format,
va_list ap) {
char buffer[LINE_MAX];
PROTECT_ERRNO;
if (_likely_(LOG_PRI(level) > log_max_level))
return -ERRNO_VALUE(error);
/* Make sure that %m maps to the specified error (or "Success"). */
errno = ERRNO_VALUE(error);
char buffer[LINE_MAX];
LOCAL_ERRNO(ERRNO_VALUE(error));
(void) vsnprintf(buffer, sizeof buffer, format, ap);
@@ -777,14 +775,13 @@ int log_object_internalv(
const char *format,
va_list ap) {
PROTECT_ERRNO;
char *buffer, *b;
if (_likely_(LOG_PRI(level) > log_max_level))
return -ERRNO_VALUE(error);
/* Make sure that %m maps to the specified error (or "Success"). */
errno = ERRNO_VALUE(error);
LOCAL_ERRNO(ERRNO_VALUE(error));
/* Prepend the object name before the message */
if (object) {