summaryrefslogtreecommitdiff
path: root/src/shared/specifier.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-04-01 22:48:14 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-04-05 00:52:56 +0900
commitedd595f760ea8db26d3d7011857e5da1a232cced (patch)
treef696117e20d600b4e3e9e2c4b7b7d8955e4c101c /src/shared/specifier.c
parent319477f1b6db521ebc7c3db911ecb1a767a621aa (diff)
downloadsystemd-edd595f760ea8db26d3d7011857e5da1a232cced.tar.gz
specifier: always convert missing machine-id file to EUNATCH
Then, use id128_get_machine().
Diffstat (limited to 'src/shared/specifier.c')
-rw-r--r--src/shared/specifier.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/shared/specifier.c b/src/shared/specifier.c
index 65e555f716..a4a4017f06 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);
}