From edd595f760ea8db26d3d7011857e5da1a232cced Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 1 Apr 2023 22:48:14 +0900 Subject: [PATCH] specifier: always convert missing machine-id file to EUNATCH Then, use id128_get_machine(). --- src/shared/specifier.c | 16 +++------------- src/test/test-specifier.c | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 65e555f716d..a4a4017f061 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -187,19 +187,9 @@ int specifier_machine_id(char specifier, const void *data, const char *root, con assert(ret); - if (root) { - _cleanup_close_ int fd = -EBADF; - - fd = chase_and_open("/etc/machine-id", root, CHASE_PREFIX_ROOT, O_RDONLY|O_CLOEXEC|O_NOCTTY, NULL); - if (fd < 0) - /* Translate error for missing os-release file to EUNATCH. */ - return fd == -ENOENT ? -EUNATCH : fd; - - r = id128_read_fd(fd, ID128_FORMAT_PLAIN, &id); - } else - r = sd_id128_get_machine(&id); - if (r < 0) - return r; + r = id128_get_machine(root, &id); + if (r < 0) /* Translate error for missing /etc/machine-id file to EUNATCH. */ + return r == -ENOENT ? -EUNATCH : r; return specifier_id128(specifier, &id, root, userdata, ret); } diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c index 62986e8dc2e..6d4093ec05d 100644 --- a/src/test/test-specifier.c +++ b/src/test/test-specifier.c @@ -136,7 +136,7 @@ TEST(specifiers) { xsprintf(spec, "%%%c", s->specifier); r = specifier_printf(spec, SIZE_MAX, specifier_table, NULL, NULL, &resolved); - if (s->specifier == 'm' && IN_SET(r, -ENOENT, -ENOMEDIUM)) /* machine-id might be missing in build chroots */ + if (s->specifier == 'm' && IN_SET(r, -EUNATCH, -ENOMEDIUM)) /* machine-id might be missing in build chroots */ continue; assert_se(r >= 0); -- 2.47.3