diff --git a/src/basic/errno-list.c b/src/basic/errno-list.c index 8de9888083..a67b608700 100644 --- a/src/basic/errno-list.c +++ b/src/basic/errno-list.c @@ -25,8 +25,8 @@ int errno_from_name(const char *name) { } #if HAVE_STRERRORNAME_NP -const char* errno_to_name(int id) { - if (id == 0) /* To stay in line with our own impl */ +const char* errno_name_no_fallback(int id) { + if (id == 0) /* To stay in line with our implementation below. */ return NULL; return strerrorname_np(ABS(id)); @@ -34,7 +34,7 @@ const char* errno_to_name(int id) { #else # include "errno-to-name.inc" -const char* errno_to_name(int id) { +const char* errno_name_no_fallback(int id) { if (id < 0) id = -id; @@ -45,8 +45,8 @@ const char* errno_to_name(int id) { } #endif -const char* errno_name_full(int id, char buf[static ERRNO_NAME_BUF_LEN]) { - const char *a = errno_to_name(id); +const char* errno_name(int id, char buf[static ERRNO_NAME_BUF_LEN]) { + const char *a = errno_name_no_fallback(id); if (a) return a; snprintf(buf, ERRNO_NAME_BUF_LEN, "%d", abs(id)); diff --git a/src/basic/errno-list.h b/src/basic/errno-list.h index 6ce2d75c09..2064afa0f4 100644 --- a/src/basic/errno-list.h +++ b/src/basic/errno-list.h @@ -3,7 +3,7 @@ #include "forward.h" -const char* errno_to_name(int id) _const_; +const char* errno_name_no_fallback(int id) _const_; int errno_from_name(const char *name) _pure_; static inline bool errno_is_valid(int n) { @@ -12,7 +12,7 @@ static inline bool errno_is_valid(int n) { #define ERRNO_NAME_BUF_LEN DECIMAL_STR_MAX(int) /* Like errno_name, but always returns a string. */ -const char* errno_name_full(int id, char buf[static ERRNO_NAME_BUF_LEN]); +const char* errno_name(int id, char buf[static ERRNO_NAME_BUF_LEN]); /* A helper to print the errno "name" or number if name is not defined. */ -#define ERRNO_NAME_FULL(errnum) errno_name_full(errnum, (char[ERRNO_NAME_BUF_LEN]){}) +#define ERRNO_NAME(errnum) errno_name(errnum, (char[ERRNO_NAME_BUF_LEN]){}) diff --git a/src/core/socket.c b/src/core/socket.c index 34f3e3ea4d..f108d4db8a 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1460,8 +1460,8 @@ int socket_load_service_unit(Socket *s, int cfd, Unit **ret) { /* ENOTCONN is legitimate if TCP RST was received. Other socket families might return * different errors. This connection is over, but the socket unit lives on. */ return log_unit_debug_errno(UNIT(s), r, - "Got %s on incoming socket, assuming aborted connection attempt, ignoring.", - errno_to_name(r)); + "Got error %s on incoming socket, assuming aborted connection attempt, ignoring.", + ERRNO_NAME(r)); if (r < 0) return r; } diff --git a/src/home/homed-home.c b/src/home/homed-home.c index d8683b8211..a359baea59 100644 --- a/src/home/homed-home.c +++ b/src/home/homed-home.c @@ -1159,7 +1159,7 @@ static int home_on_worker_process(sd_event_source *s, const siginfo_t *si, void } else if (si->si_status != EXIT_SUCCESS) { /* If we received an error code via sd_notify(), use it */ if (h->worker_error_code != 0) - ret = log_debug_errno(h->worker_error_code, "Worker reported error code %s.", errno_to_name(h->worker_error_code)); + ret = log_debug_errno(h->worker_error_code, "Worker reported error code %s.", ERRNO_NAME(h->worker_error_code)); else ret = log_debug_errno(SYNTHETIC_ERRNO(EPROTO), "Worker exited with exit code %i.", si->si_status); } else diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index cf501c33c9..e5c9eb64a4 100644 --- a/src/libsystemd/sd-bus/bus-error.c +++ b/src/libsystemd/sd-bus/bus-error.c @@ -168,7 +168,11 @@ static int errno_to_bus_error_name_new(int error, char **ret) { if (error < 0) error = -error; - name = errno_to_name(error); + /* D-Bus names must not start with a digit. Thus, an name like System.Error.500 would not be legal. + * Let's just return 0 if an unknown errno is encountered, which will cause the caller to fall back + * to BUS_ERROR_FAILED. + */ + name = errno_name_no_fallback(error); if (!name) return 0; diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c index 91045c06c2..c6b86be621 100644 --- a/src/libsystemd/sd-bus/test-bus-error.c +++ b/src/libsystemd/sd-bus/test-bus-error.c @@ -139,7 +139,7 @@ static int dump_mapping_table(void) { continue; } - printf("%s -> %i/%s\n", strna(m->name), m->code, strna(errno_to_name(m->code))); + printf("%s -> %i/%s\n", strna(m->name), m->code, ERRNO_NAME(m->code)); m++; } printf("---------------------------\n"); diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c index a4ab2659b2..98846d1011 100644 --- a/src/libsystemd/sd-login/test-login.c +++ b/src/libsystemd/sd-login/test-login.c @@ -36,9 +36,7 @@ static char* format_uids(char **buf, uid_t* uids, int count) { return *buf; } -static const char *e(int r) { - return r == 0 ? "OK" : errno_to_name(r); -} +#define e(r) (r == 0 ? "OK" : ERRNO_NAME(r)) TEST(login) { _cleanup_close_pair_ int pair[2] = EBADF_PAIR; diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index 7679cc11e5..1666162e89 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -2699,7 +2699,7 @@ _public_ int sd_varlink_error_errno(sd_varlink *v, int error) { * open, even to foreign systems. */ error = abs(error); - const char *name = errno_to_name(error); + const char *name = errno_name_no_fallback(error); return sd_varlink_errorbo( v, diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index 3edf87b321..bdfc823058 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -3146,9 +3146,9 @@ static void monitor_query_dump(sd_json_variant *v) { streq_ptr(p.state, "success") ? ansi_highlight_green() : ansi_highlight_red(), glyph(GLYPH_ARROW_LEFT), ansi_normal(), - strna(streq_ptr(p.state, "errno") ? errno_to_name(p.error) : - streq_ptr(p.state, "rcode-failure") ? dns_rcode_to_string(p.rcode) : - p.state)); + streq_ptr(p.state, "errno") ? ERRNO_NAME(p.error) : + streq_ptr(p.state, "rcode-failure") ? strna(dns_rcode_to_string(p.rcode)) : + strna(p.state)); if (!isempty(p.result)) printf(": %s", p.result); diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 2e183d15fe..00fbe27e33 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -406,7 +406,6 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) { DnsQueryCandidate *c; DnsZoneItem *z; DnsTransaction *d; - const char *st; char key_str[DNS_RESOURCE_KEY_STRING_MAX]; assert(t); @@ -430,11 +429,6 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) { * should hence not attempt to access the query or transaction * after calling this function. */ - if (state == DNS_TRANSACTION_ERRNO) - st = errno_to_name(t->answer_errno); - else - st = dns_transaction_state_to_string(state); - log_debug("%s transaction %" PRIu16 " for <%s> on scope %s on %s/%s now complete with <%s> from %s (%s; %s).", t->bypass ? "Bypass" : "Regular", t->id, @@ -442,7 +436,7 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) { dns_protocol_to_string(t->scope->protocol), t->scope->link ? t->scope->link->ifname : "*", af_to_name_short(t->scope->family), - st, + state == DNS_TRANSACTION_ERRNO ? ERRNO_NAME(t->answer_errno) : dns_transaction_state_to_string(state), t->answer_source < 0 ? "none" : dns_transaction_source_to_string(t->answer_source), FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) ? "not validated" : (FLAGS_SET(t->answer_query_flags, SD_RESOLVED_AUTHENTICATED) ? "authenticated" : "unsigned"), diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c index 1925f92e53..53d18dada5 100644 --- a/src/shared/seccomp-util.c +++ b/src/shared/seccomp-util.c @@ -2541,5 +2541,5 @@ int seccomp_parse_errno_or_action(const char *p) { const char* seccomp_errno_or_action_to_string(int num) { if (num == SECCOMP_ERROR_NUMBER_KILL) return "kill"; - return errno_to_name(num); + return errno_name_no_fallback(num); } diff --git a/src/shared/tests.h b/src/shared/tests.h index ece0503095..33304903ba 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -174,28 +174,28 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char #ifdef __COVERITY__ # define ASSERT_OK(expr) __coverity_check__((expr) >= 0) #else -# define ASSERT_OK(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ - #expr, (intmax_t) _result, ERRNO_NAME_FULL(_result)); \ +# define ASSERT_OK(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ + #expr, (intmax_t) _result, ERRNO_NAME(_result)); \ }) #endif #ifdef __COVERITY__ -# define ASSERT_OK_OR(expr, ...) \ - ({ \ - typeof(expr) _result = (expr); \ - __coverity_check__(_result >= 0 || IN_SET(_result, 0, __VA_ARGS__) \ +# define ASSERT_OK_OR(expr, ...) \ + ({ \ + typeof(expr) _result = (expr); \ + __coverity_check__(_result >= 0 || IN_SET(_result, 0, __VA_ARGS__) \ }) #else -# define ASSERT_OK_OR(expr, ...) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0 && !IN_SET(_result, 0, __VA_ARGS__)) \ - log_test_failed("\"%s\" failed with unexpected error: %"PRIiMAX"/%s", \ - #expr, (intmax_t) _result, ERRNO_NAME_FULL(_result)); \ +# define ASSERT_OK_OR(expr, ...) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0 && !IN_SET(_result, 0, __VA_ARGS__)) \ + log_test_failed("\"%s\" failed with unexpected error: %"PRIiMAX"/%s", \ + #expr, (intmax_t) _result, ERRNO_NAME(_result)); \ }) #endif @@ -203,45 +203,45 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char #ifdef __COVERITY__ # define ASSERT_OK_POSITIVE(expr) __coverity_check__((expr) > 0) #else -# define ASSERT_OK_POSITIVE(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ - #expr, (intmax_t) _result, ERRNO_NAME_FULL(_result)); \ - if (_result == 0) \ - log_test_failed("Expected \"%s\" to be positive, but it is zero.", #expr); \ +# define ASSERT_OK_POSITIVE(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ + #expr, (intmax_t) _result, ERRNO_NAME(_result)); \ + if (_result == 0) \ + log_test_failed("Expected \"%s\" to be positive, but it is zero.", #expr); \ }) #endif #ifdef __COVERITY__ # define ASSERT_OK_ZERO(expr) __coverity_check__((expr) == 0) #else -# define ASSERT_OK_ZERO(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ - #expr, (intmax_t) _result, ERRNO_NAME_FULL(_result)); \ - if (_result != 0) \ - log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ - #expr, (intmax_t) _result); \ +# define ASSERT_OK_ZERO(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ + #expr, (intmax_t) _result, ERRNO_NAME(_result)); \ + if (_result != 0) \ + log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ + #expr, (intmax_t) _result); \ }) #endif #ifdef __COVERITY__ # define ASSERT_OK_EQ(expr1, expr2) __coverity_check__((expr1) == (expr2)) #else -# define ASSERT_OK_EQ(expr1, expr2) \ - ({ \ - typeof(expr1) _expr1 = (expr1); \ - typeof(expr2) _expr2 = (expr2); \ - if (_expr1 < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ - #expr1, (intmax_t) _expr1, ERRNO_NAME_FULL(_expr1)); \ - if (_expr1 != _expr2) \ - log_test_failed("Expected \"%s == %s\", got %"PRIiMAX" != %"PRIiMAX, \ - #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ +# define ASSERT_OK_EQ(expr1, expr2) \ + ({ \ + typeof(expr1) _expr1 = (expr1); \ + typeof(expr2) _expr2 = (expr2); \ + if (_expr1 < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got error: %"PRIiMAX"/%s", \ + #expr1, (intmax_t) _expr1, ERRNO_NAME(_expr1)); \ + if (_expr1 != _expr2) \ + log_test_failed("Expected \"%s == %s\", got %"PRIiMAX" != %"PRIiMAX, \ + #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ }) #endif @@ -249,153 +249,153 @@ _noreturn_ void log_test_failed_internal(const char *file, int line, const char #ifdef __COVERITY__ # define ASSERT_OK_ERRNO(expr) __coverity_check__((expr) >= 0) #else -# define ASSERT_OK_ERRNO(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ - #expr, errno, ERRNO_NAME_FULL(errno)); \ +# define ASSERT_OK_ERRNO(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ + #expr, errno, ERRNO_NAME(errno)); \ }) #endif #ifdef __COVERITY__ # define ASSERT_OK_ZERO_ERRNO(expr) __coverity_check__((expr) == 0) #else -# define ASSERT_OK_ZERO_ERRNO(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ - #expr, errno, ERRNO_NAME_FULL(errno)); \ - if (_result != 0) \ - log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ - #expr, (intmax_t) _result); \ +# define ASSERT_OK_ZERO_ERRNO(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ + #expr, errno, ERRNO_NAME(errno)); \ + if (_result != 0) \ + log_test_failed("Expected \"%s\" to be zero, but it is %"PRIiMAX".", \ + #expr, (intmax_t) _result); \ }) #endif #ifdef __COVERITY__ # define ASSERT_OK_EQ_ERRNO(expr1, expr2) __coverity_check__((expr1) == (expr2)) #else -# define ASSERT_OK_EQ_ERRNO(expr1, expr2) \ - ({ \ - typeof(expr1) _expr1 = (expr1); \ - typeof(expr2) _expr2 = (expr2); \ - if (_expr1 < 0) \ - log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ - #expr1, errno, ERRNO_NAME_FULL(errno)); \ - if (_expr1 != _expr2) \ - log_test_failed("Expected \"%s == %s\", but %"PRIiMAX" != %"PRIiMAX, \ - #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ +# define ASSERT_OK_EQ_ERRNO(expr1, expr2) \ + ({ \ + typeof(expr1) _expr1 = (expr1); \ + typeof(expr2) _expr2 = (expr2); \ + if (_expr1 < 0) \ + log_test_failed("Expected \"%s\" to succeed, but got errno: %d/%s", \ + #expr1, errno, ERRNO_NAME(errno)); \ + if (_expr1 != _expr2) \ + log_test_failed("Expected \"%s == %s\", but %"PRIiMAX" != %"PRIiMAX, \ + #expr1, #expr2, (intmax_t) _expr1, (intmax_t) _expr2); \ }) #endif #ifdef __COVERITY__ # define ASSERT_FAIL(expr) __coverity_check__((expr) < 0) #else -# define ASSERT_FAIL(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result >= 0) \ - log_test_failed("Expected \"%s\" to fail, but it succeeded.", #expr); \ +# define ASSERT_FAIL(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result >= 0) \ + log_test_failed("Expected \"%s\" to fail, but it succeeded.", #expr); \ }) #endif #ifdef __COVERITY__ # define ASSERT_ERROR(expr1, expr2) __coverity_check__((expr1) == -(expr2)) #else -# define ASSERT_ERROR(expr1, expr2) \ - ({ \ - int _expr1 = (expr1); \ - int _expr2 = (expr2); \ - if (_expr1 >= 0) \ - log_test_failed("Expected \"%s\" to fail with error %d/%s, but it succeeded", \ - #expr1, -_expr2, ERRNO_NAME_FULL(_expr2)); \ - else if (-_expr1 != _expr2) \ - log_test_failed("Expected \"%s\" to fail with error %d/%s, but got %d/%s", \ - #expr1, -_expr2, ERRNO_NAME_FULL(_expr2), _expr1, ERRNO_NAME_FULL(_expr1)); \ +# define ASSERT_ERROR(expr1, expr2) \ + ({ \ + int _expr1 = (expr1); \ + int _expr2 = (expr2); \ + if (_expr1 >= 0) \ + log_test_failed("Expected \"%s\" to fail with error %d/%s, but it succeeded", \ + #expr1, -_expr2, ERRNO_NAME(_expr2)); \ + else if (-_expr1 != _expr2) \ + log_test_failed("Expected \"%s\" to fail with error %d/%s, but got %d/%s", \ + #expr1, -_expr2, ERRNO_NAME(_expr2), _expr1, ERRNO_NAME(_expr1)); \ }) #endif #ifdef __COVERITY__ # define ASSERT_ERROR_ERRNO(expr1, expr2) __coverity_check__((expr1) < 0 && errno == (expr2)) #else -# define ASSERT_ERROR_ERRNO(expr1, expr2) \ - ({ \ - int _expr1 = (expr1); \ - int _expr2 = (expr2); \ - if (_expr1 >= 0) \ - log_test_failed("Expected \"%s\" to fail with errno %d/%s, but it succeeded", \ - #expr1, _expr2, ERRNO_NAME_FULL(_expr2)); \ - else if (errno != _expr2) \ - log_test_failed("Expected \"%s\" to fail with errno %d/%s, but got %d/%s", \ - #expr1, _expr2, ERRNO_NAME_FULL(_expr2), errno, ERRNO_NAME_FULL(errno)); \ +# define ASSERT_ERROR_ERRNO(expr1, expr2) \ + ({ \ + int _expr1 = (expr1); \ + int _expr2 = (expr2); \ + if (_expr1 >= 0) \ + log_test_failed("Expected \"%s\" to fail with errno %d/%s, but it succeeded", \ + #expr1, _expr2, ERRNO_NAME(_expr2)); \ + else if (errno != _expr2) \ + log_test_failed("Expected \"%s\" to fail with errno %d/%s, but got %d/%s", \ + #expr1, _expr2, ERRNO_NAME(_expr2), errno, ERRNO_NAME(errno)); \ }) #endif #ifdef __COVERITY__ # define ASSERT_TRUE(expr) __coverity_check__(!!(expr)) #else -# define ASSERT_TRUE(expr) \ - ({ \ - if (!(expr)) \ - log_test_failed("Expected \"%s\" to be true", #expr); \ +# define ASSERT_TRUE(expr) \ + ({ \ + if (!(expr)) \ + log_test_failed("Expected \"%s\" to be true", #expr); \ }) #endif #ifdef __COVERITY__ # define ASSERT_FALSE(expr) __coverity_check__(!(expr)) #else -# define ASSERT_FALSE(expr) \ - ({ \ - if ((expr)) \ - log_test_failed("Expected \"%s\" to be false", #expr); \ +# define ASSERT_FALSE(expr) \ + ({ \ + if ((expr)) \ + log_test_failed("Expected \"%s\" to be false", #expr); \ }) #endif #ifdef __COVERITY__ # define ASSERT_NULL(expr) __coverity_check__((expr) == NULL) #else -# define ASSERT_NULL(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result != NULL) \ - log_test_failed("Expected \"%s\" to be NULL, got \"%p\" != NULL", #expr, _result); \ +# define ASSERT_NULL(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result != NULL) \ + log_test_failed("Expected \"%s\" to be NULL, got \"%p\" != NULL", #expr, _result); \ }) #endif #ifdef __COVERITY__ # define ASSERT_NOT_NULL(expr) __coverity_check__((expr) != NULL) #else -# define ASSERT_NOT_NULL(expr) \ - ({ \ - typeof(expr) _result = (expr); \ - if (_result == NULL) \ - log_test_failed("Expected \"%s\" to be not NULL", #expr); \ - _result; \ +# define ASSERT_NOT_NULL(expr) \ + ({ \ + typeof(expr) _result = (expr); \ + if (_result == NULL) \ + log_test_failed("Expected \"%s\" to be not NULL", #expr); \ + _result; \ }) #endif #ifdef __COVERITY__ # define ASSERT_STREQ(expr1, expr2) __coverity_check__(streq_ptr((expr1), (expr2))) #else -# define ASSERT_STREQ(expr1, expr2) \ - ({ \ - const char *_expr1 = (expr1), *_expr2 = (expr2); \ - if (!streq_ptr(_expr1, _expr2)) \ - log_test_failed("Expected \"%s == %s\", got \"%s != %s\"", \ - #expr1, #expr2, strnull(_expr1), strnull(_expr2)); \ +# define ASSERT_STREQ(expr1, expr2) \ + ({ \ + const char *_expr1 = (expr1), *_expr2 = (expr2); \ + if (!streq_ptr(_expr1, _expr2)) \ + log_test_failed("Expected \"%s == %s\", got \"%s != %s\"", \ + #expr1, #expr2, strnull(_expr1), strnull(_expr2)); \ }) #endif #ifdef __COVERITY__ # define ASSERT_PTR_EQ(expr1, expr2) __coverity_check__((expr1) == (expr2)) #else -# define ASSERT_PTR_EQ(expr1, expr2) \ - ({ \ - const void *_expr1 = (expr1), *_expr2 = (expr2); \ - if (_expr1 != _expr2) \ - log_test_failed("Expected \"%s == %s\", got \"0x%p != 0x%p\"", \ - #expr1, #expr2, _expr1, _expr2); \ +# define ASSERT_PTR_EQ(expr1, expr2) \ + ({ \ + const void *_expr1 = (expr1), *_expr2 = (expr2); \ + if (_expr1 != _expr2) \ + log_test_failed("Expected \"%s == %s\", got \"0x%p != 0x%p\"", \ + #expr1, #expr2, _expr1, _expr2); \ }) #endif diff --git a/src/test/test-bpf-devices.c b/src/test/test-bpf-devices.c index 2694b1eebc..74e58fd41d 100644 --- a/src/test/test-bpf-devices.c +++ b/src/test/test-bpf-devices.c @@ -40,12 +40,12 @@ static void test_policy_closed(const char *cgroup_path, BPFProgram **installed_p _cleanup_close_ int fd = -EBADF, fd2 = -EBADF; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd < 0 && errno == EPERM; /* We ignore errors other than EPERM, e.g. ENOENT or ENXIO */ fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 < 0 && errno == EPERM; } assert_se(wrong == 0); @@ -78,11 +78,11 @@ static void test_policy_strict(const char *cgroup_path, BPFProgram **installed_p const char *s = "/dev/null"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd < 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 < 0; } @@ -91,11 +91,11 @@ static void test_policy_strict(const char *cgroup_path, BPFProgram **installed_p const char *s = "/dev/random"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd < 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 >= 0; } @@ -104,11 +104,11 @@ static void test_policy_strict(const char *cgroup_path, BPFProgram **installed_p const char *s = "/dev/zero"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd >= 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 < 0; } @@ -117,11 +117,11 @@ static void test_policy_strict(const char *cgroup_path, BPFProgram **installed_p const char *s = "/dev/full"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd >= 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 >= 0; } @@ -150,11 +150,11 @@ static void test_policy_allow_list_major(const char *pattern, const char *cgroup const char *s = "/dev/null"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd < 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 < 0; } @@ -163,11 +163,11 @@ static void test_policy_allow_list_major(const char *pattern, const char *cgroup const char *s = "/dev/full"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd < 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 < 0; } @@ -176,11 +176,11 @@ static void test_policy_allow_list_major(const char *pattern, const char *cgroup const char *s = "/dev/tty"; fd = open(s, O_CLOEXEC|O_RDONLY|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd >= 0; fd2 = open(s, O_CLOEXEC|O_WRONLY|O_NOCTTY); - log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"w\") = %d/%s", s, fd2, fd2 < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd2 >= 0; } @@ -208,7 +208,7 @@ static void test_policy_allow_list_major_star(char type, const char *cgroup_path const char *s = "/dev/null"; fd = open(s, O_CLOEXEC|O_RDWR|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); if (type == 'c') wrong += fd < 0; else @@ -241,7 +241,7 @@ static void test_policy_empty(bool add_mismatched, const char *cgroup_path, BPFP const char *s = "/dev/null"; fd = open(s, O_CLOEXEC|O_RDWR|O_NOCTTY); - log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? errno_to_name(errno) : "-"); + log_debug("open(%s, \"r\") = %d/%s", s, fd, fd < 0 ? ERRNO_NAME(errno) : "-"); wrong += fd >= 0; } diff --git a/src/test/test-bus-unit-util.c b/src/test/test-bus-unit-util.c index 2b21f119e5..d713a52b81 100644 --- a/src/test/test-bus-unit-util.c +++ b/src/test/test-bus-unit-util.c @@ -32,7 +32,7 @@ static void test_transient_settings_one(UnitType type, const char* const* lines) } r = bus_append_unit_property_assignment(m, type, t); - log_debug("%s → %d/%s", t, r, r < 0 ? ERRNO_NAME_FULL(r) : yes_no(r)); + log_debug("%s → %d/%s", t, r, r < 0 ? ERRNO_NAME(r) : yes_no(r)); ASSERT_EQ(r, expect); } } diff --git a/src/test/test-errno-list.c b/src/test/test-errno-list.c index c72f657123..f7d3c5ce94 100644 --- a/src/test/test-errno-list.c +++ b/src/test/test-errno-list.c @@ -5,49 +5,54 @@ #include "errno-to-name.inc" -TEST(errno_list) { +TEST(errno_name_no_fallback) { ASSERT_NULL(errno_names[0]); - ASSERT_NULL(errno_to_name(0)); + ASSERT_NULL(errno_name_no_fallback(0)); - for (size_t i = 0; i < ELEMENTSOF(errno_names); i++) { + for (size_t i = 0; i < ELEMENTSOF(errno_names); i++) if (errno_names[i]) { - ASSERT_STREQ(errno_to_name(i), errno_names[i]); + const char *mapped = errno_name_no_fallback(i); + + if (mapped) + /* glibc might not know some errno names. + * This is not an error. */ + ASSERT_STREQ(mapped, errno_names[i]); + assert_se(errno_from_name(errno_names[i]) == (int) i); } - } #ifdef ECANCELLED /* ECANCELLED is an alias of ECANCELED. */ - ASSERT_STREQ(errno_to_name(ECANCELLED), "ECANCELED"); + ASSERT_STREQ(errno_name_no_fallback(ECANCELLED), "ECANCELED"); #endif - ASSERT_STREQ(errno_to_name(ECANCELED), "ECANCELED"); + ASSERT_STREQ(errno_name_no_fallback(ECANCELED), "ECANCELED"); #ifdef EREFUSED /* EREFUSED is an alias of ECONNREFUSED. */ - ASSERT_STREQ(errno_to_name(EREFUSED), "ECONNREFUSED"); + ASSERT_STREQ(errno_name_no_fallback(EREFUSED), "ECONNREFUSED"); #endif - ASSERT_STREQ(errno_to_name(ECONNREFUSED), "ECONNREFUSED"); + ASSERT_STREQ(errno_name_no_fallback(ECONNREFUSED), "ECONNREFUSED"); } TEST(errno_name_full) { char buf[ERRNO_NAME_BUF_LEN]; - ASSERT_STREQ(errno_name_full(0, buf), "0"); - ASSERT_STREQ(errno_name_full(EPERM, buf), "EPERM"); - ASSERT_STREQ(errno_name_full(ENOENT, buf), "ENOENT"); - ASSERT_STREQ(errno_name_full(200, buf), "200"); - ASSERT_STREQ(errno_name_full(-200, buf), "200"); + ASSERT_STREQ(errno_name(0, buf), "0"); + ASSERT_STREQ(errno_name(EPERM, buf), "EPERM"); + ASSERT_STREQ(errno_name(ENOENT, buf), "ENOENT"); + ASSERT_STREQ(errno_name(200, buf), "200"); + ASSERT_STREQ(errno_name(-200, buf), "200"); } TEST(ERRNO_NAME_FULL) { - ASSERT_STREQ(ERRNO_NAME_FULL(0), "0"); - ASSERT_STREQ(ERRNO_NAME_FULL(EPERM), "EPERM"); - ASSERT_STREQ(ERRNO_NAME_FULL(ENOENT), "ENOENT"); - ASSERT_STREQ(ERRNO_NAME_FULL(200), "200"); - ASSERT_STREQ(ERRNO_NAME_FULL(-200), "200"); + ASSERT_STREQ(ERRNO_NAME(0), "0"); + ASSERT_STREQ(ERRNO_NAME(EPERM), "EPERM"); + ASSERT_STREQ(ERRNO_NAME(ENOENT), "ENOENT"); + ASSERT_STREQ(ERRNO_NAME(200), "200"); + ASSERT_STREQ(ERRNO_NAME(-200), "200"); int x = 0; - ASSERT_STREQ(ERRNO_NAME_FULL(++x), "EPERM"); /* Confirm that eval happens just once. */ + ASSERT_STREQ(ERRNO_NAME(++x), "EPERM"); /* Confirm that eval happens just once. */ ASSERT_EQ(x, 1); } diff --git a/src/test/test-nss-hosts.c b/src/test/test-nss-hosts.c index df93a7b528..8756fcd394 100644 --- a/src/test/test-nss-hosts.c +++ b/src/test/test-nss-hosts.c @@ -115,7 +115,7 @@ static void test_gethostbyname4_r(void *handle, const char *module, const char * fname, name, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", pat ? (uintptr_t) pat - (uintptr_t) buffer : 0, - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2), ttl); n = print_gaih_addrtuples(pat); @@ -124,7 +124,7 @@ static void test_gethostbyname4_r(void *handle, const char *module, const char * fname, name, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", pat, - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2)); n = 0; } @@ -175,7 +175,7 @@ static void test_gethostbyname3_r(void *handle, const char *module, const char * log_info("%s(\"%s\", %s) → status=%s%-20serrno=%d/%s h_errno=%d/%s ttl=%"PRIi32, fname, name, af_to_string(af, family_name, sizeof family_name), nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2), ttl); if (status == NSS_STATUS_SUCCESS) @@ -204,7 +204,7 @@ static void test_gethostbyname2_r(void *handle, const char *module, const char * log_info("%s(\"%s\", %s) → status=%s%-20serrno=%d/%s h_errno=%d/%s", fname, name, af_to_string(af, family_name, sizeof family_name), nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2)); if (status == NSS_STATUS_SUCCESS) print_struct_hostent(&host, NULL); @@ -231,7 +231,7 @@ static void test_gethostbyname_r(void *handle, const char *module, const char *n log_info("%s(\"%s\") → status=%s%-20serrno=%d/%s h_errno=%d/%s", fname, name, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2)); if (status == NSS_STATUS_SUCCESS) print_struct_hostent(&host, NULL); @@ -268,7 +268,7 @@ static void test_gethostbyaddr2_r(void *handle, log_info("%s(\"%s\") → status=%s%-20serrno=%d/%s h_errno=%d/%s ttl=%"PRIi32, fname, addr_pretty, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2), ttl); if (status == NSS_STATUS_SUCCESS) @@ -305,7 +305,7 @@ static void test_gethostbyaddr_r(void *handle, log_info("%s(\"%s\") → status=%s%-20serrno=%d/%s h_errno=%d/%s", fname, addr_pretty, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---", + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---", errno2, hstrerror(errno2)); if (status == NSS_STATUS_SUCCESS) print_struct_hostent(&host, NULL); diff --git a/src/test/test-nss-users.c b/src/test/test-nss-users.c index 0f78995fb7..f253b53c1f 100644 --- a/src/test/test-nss-users.c +++ b/src/test/test-nss-users.c @@ -61,7 +61,7 @@ static void test_getpwnam_r(void *handle, const char *module, const char *name) log_info("%s(\"%s\") → status=%s%-20serrno=%d/%s", fname, name, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---"); + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---"); if (status == NSS_STATUS_SUCCESS) print_struct_passwd(&pwd); } @@ -87,7 +87,7 @@ static void test_getgrnam_r(void *handle, const char *module, const char *name) log_info("%s(\"%s\") → status=%s%-20serrno=%d/%s", fname, name, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---"); + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---"); if (status == NSS_STATUS_SUCCESS) print_struct_group(&gr); } @@ -113,7 +113,7 @@ static void test_getpwuid_r(void *handle, const char *module, uid_t uid) { log_info("%s("UID_FMT") → status=%s%-20serrno=%d/%s", fname, uid, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---"); + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---"); if (status == NSS_STATUS_SUCCESS) print_struct_passwd(&pwd); } @@ -139,7 +139,7 @@ static void test_getgrgid_r(void *handle, const char *module, gid_t gid) { log_info("%s("GID_FMT") → status=%s%-20serrno=%d/%s", fname, gid, nss_status_to_string(status, pretty_status, sizeof pretty_status), "\n", - errno1, errno_to_name(errno1) ?: "---"); + errno1, errno1 > 0 ? ERRNO_NAME(errno1) : "---"); if (status == NSS_STATUS_SUCCESS) print_struct_group(&gr); } diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c index 9c14d99a82..5723f2a074 100644 --- a/src/test/test-process-util.c +++ b/src/test/test-process-util.c @@ -123,34 +123,34 @@ static void test_pid_get_cmdline_one(pid_t pid) { int r; r = pid_get_cmdline(pid, SIZE_MAX, 0, &c); - log_info("PID "PID_FMT": %s", pid, r >= 0 ? c : errno_to_name(r)); + log_info("PID "PID_FMT": %s", pid, r >= 0 ? c : ERRNO_NAME(r)); r = pid_get_cmdline(pid, SIZE_MAX, PROCESS_CMDLINE_COMM_FALLBACK, &d); - log_info(" %s", r >= 0 ? d : errno_to_name(r)); + log_info(" %s", r >= 0 ? d : ERRNO_NAME(r)); r = pid_get_cmdline(pid, SIZE_MAX, PROCESS_CMDLINE_QUOTE, &e); - log_info(" %s", r >= 0 ? e : errno_to_name(r)); + log_info(" %s", r >= 0 ? e : ERRNO_NAME(r)); r = pid_get_cmdline(pid, SIZE_MAX, PROCESS_CMDLINE_QUOTE | PROCESS_CMDLINE_COMM_FALLBACK, &f); - log_info(" %s", r >= 0 ? f : errno_to_name(r)); + log_info(" %s", r >= 0 ? f : ERRNO_NAME(r)); r = pid_get_cmdline(pid, SIZE_MAX, PROCESS_CMDLINE_QUOTE_POSIX, &g); - log_info(" %s", r >= 0 ? g : errno_to_name(r)); + log_info(" %s", r >= 0 ? g : ERRNO_NAME(r)); r = pid_get_cmdline(pid, SIZE_MAX, PROCESS_CMDLINE_QUOTE_POSIX | PROCESS_CMDLINE_COMM_FALLBACK, &h); - log_info(" %s", r >= 0 ? h : errno_to_name(r)); + log_info(" %s", r >= 0 ? h : ERRNO_NAME(r)); r = pid_get_cmdline_strv(pid, 0, &strv_a); if (r >= 0) ASSERT_NOT_NULL((joined = strv_join(strv_a, "\", \""))); - log_info(" \"%s\"", r >= 0 ? joined : errno_to_name(r)); + log_info(" \"%s\"", r >= 0 ? joined : ERRNO_NAME(r)); joined = mfree(joined); r = pid_get_cmdline_strv(pid, PROCESS_CMDLINE_COMM_FALLBACK, &strv_b); if (r >= 0) ASSERT_NOT_NULL((joined = strv_join(strv_b, "\", \""))); - log_info(" \"%s\"", r >= 0 ? joined : errno_to_name(r)); + log_info(" \"%s\"", r >= 0 ? joined : ERRNO_NAME(r)); } TEST(pid_get_cmdline) { diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c index fc8bad256f..cbaa29d5a9 100644 --- a/src/test/test-stat-util.c +++ b/src/test/test-stat-util.c @@ -169,7 +169,7 @@ TEST(path_is_temporary_fs) { r = path_is_temporary_fs(s); log_info_errno(r, "path_is_temporary_fs(\"%s\"): %d, %s", - s, r, r < 0 ? errno_to_name(r) : yes_no(r)); + s, r, r < 0 ? ERRNO_NAME(r) : yes_no(r)); } /* run might not be a mount point in build chroots */ @@ -186,7 +186,7 @@ TEST(path_is_read_only_fs) { r = path_is_read_only_fs(s); log_info_errno(r, "path_is_read_only_fs(\"%s\"): %d, %s", - s, r, r < 0 ? errno_to_name(r) : yes_no(r)); + s, r, r < 0 ? ERRNO_NAME(r) : yes_no(r)); } if (path_is_mount_point_full("/sys", NULL, AT_SYMLINK_FOLLOW) > 0) diff --git a/src/udev/udev-error.c b/src/udev/udev-error.c index b7cadbd9a4..c61df6fbaa 100644 --- a/src/udev/udev-error.c +++ b/src/udev/udev-error.c @@ -21,7 +21,7 @@ int device_add_errno(sd_device *dev, int error) { r = device_add_property(dev, "UDEV_WORKER_FAILED", "1"); RET_GATHER(r, device_add_propertyf(dev, "UDEV_WORKER_ERRNO", "%i", error)); - const char *str = errno_to_name(error); + const char *str = errno_name_no_fallback(error); if (str) RET_GATHER(r, device_add_property(dev, "UDEV_WORKER_ERRNO_NAME", str)); diff --git a/src/udev/udev-worker.c b/src/udev/udev-worker.c index c75947a0cb..27addfa7f1 100644 --- a/src/udev/udev-worker.c +++ b/src/udev/udev-worker.c @@ -296,7 +296,7 @@ static int worker_device_monitor_handler(sd_device_monitor *monitor, sd_device * return 0; } - const char *e = errno_to_name(r); + const char *e = errno_name_no_fallback(r); r = sd_notifyf(/* unset_environment = */ false, "ERRNO=%i%s%s", -r, e ? "\nERRNO_NAME=" : "", strempty(e)); if (r < 0) { log_device_warning_errno(dev, r, "Failed to send notification message to manager process, ignoring: %m"); diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c index f16d835f8a..285b3565fa 100644 --- a/src/userdb/userdbctl.c +++ b/src/userdb/userdbctl.c @@ -1069,7 +1069,7 @@ static int display_services(int argc, char *argv[], void *userdata) { r = connect_unix_path(fd, dirfd(d), de->d_name); if (r < 0) { - no = strjoin("No (", errno_to_name(r), ")"); + no = strjoin("No (", ERRNO_NAME(r), ")"); if (!no) return log_oom(); }