summaryrefslogtreecommitdiffstats
path: root/src/test/test-log.c
diff options
context:
space:
mode:
authorMike Yuan <me@yhndnzj.com>2024-07-24 16:28:48 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2024-07-25 12:03:59 +0200
commit268f58076f7e0258dce75f521d08199092279853 (patch)
tree2b6bf518c578ccc94eb445f4599fa01f6f4068bf /src/test/test-log.c
parentmkosi: update debian commit reference (diff)
downloadsystemd-268f58076f7e0258dce75f521d08199092279853.tar.xz
systemd-268f58076f7e0258dce75f521d08199092279853.zip
basic/log: do not treat all negative errnos as synthetic
Currently, IS_SYNTHETIC_ERRNO() evaluates to true for all negative errnos, because of the two's-complement negative value representation. Subsequently, ERRNO= is not logged for most of our own code. Let's fix this, by formatting all synthetic errnos as positive. Then, treat all negative values as non-synthetic. While at it, mark the evaluation order explicitly, and remove unneeded comment. Fixes #33800
Diffstat (limited to 'src/test/test-log.c')
-rw-r--r--src/test/test-log.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/test/test-log.c b/src/test/test-log.c
index 97eb5e0199..57cab63269 100644
--- a/src/test/test-log.c
+++ b/src/test/test-log.c
@@ -13,11 +13,6 @@
#include "strv.h"
#include "tests.h"
-assert_cc(IS_SYNTHETIC_ERRNO(SYNTHETIC_ERRNO(EINVAL)));
-assert_cc(!IS_SYNTHETIC_ERRNO(EINVAL));
-assert_cc(IS_SYNTHETIC_ERRNO(SYNTHETIC_ERRNO(0)));
-assert_cc(!IS_SYNTHETIC_ERRNO(0));
-
#define X10(x) x x x x x x x x x x
#define X100(x) X10(X10(x))
#define X1000(x) X100(X10(x))
@@ -227,6 +222,15 @@ static void test_log_prefix(void) {
int main(int argc, char* argv[]) {
test_setup_logging(LOG_DEBUG);
+ ASSERT_TRUE(IS_SYNTHETIC_ERRNO(SYNTHETIC_ERRNO(EINVAL)));
+ ASSERT_TRUE(IS_SYNTHETIC_ERRNO(SYNTHETIC_ERRNO(-EINVAL)));
+ assert_cc(!IS_SYNTHETIC_ERRNO(EINVAL));
+ assert_cc(!IS_SYNTHETIC_ERRNO(-EINVAL));
+ ASSERT_TRUE(IS_SYNTHETIC_ERRNO(SYNTHETIC_ERRNO(0)));
+ assert_cc(!IS_SYNTHETIC_ERRNO(0));
+ ASSERT_EQ(ERRNO_VALUE(EINVAL), EINVAL);
+ ASSERT_EQ(ERRNO_VALUE(SYNTHETIC_ERRNO(-EINVAL)), EINVAL);
+
test_assert_return_is_critical();
test_file();