}
#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));
#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;
}
#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));
#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) {
#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]){})
/* 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;
}
} 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
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;
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");
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;
* 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,
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);
DnsQueryCandidate *c;
DnsZoneItem *z;
DnsTransaction *d;
- const char *st;
char key_str[DNS_RESOURCE_KEY_STRING_MAX];
assert(t);
* 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,
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"),
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);
}
#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
#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
#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
_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);
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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
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;
}
}
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);
}
}
#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);
}
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);
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;
}
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)
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);
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);
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)
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);
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);
}
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);
}
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);
}
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);
}
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) {
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 */
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)
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));
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");
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();
}