>From b4619f01b6f25752220b2fe5c5ccd22e248f4015 Mon Sep 17 00:00:00 2001 From: Didier Roche <didro...@ubuntu.com> Date: Mon, 24 Nov 2014 09:40:57 +0100 Subject: [PATCH 1/5] Factorize some machine-id-setup functions to be reused
--- src/core/machine-id-setup.c | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index ce6d8e0..578bcfb 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -159,6 +159,34 @@ static int generate(char id[34], const char *root) { return 0; } +static int get_valid_machine_id(int fd, char id[34]) { + assert(fd >= 0); + assert(id); + + if (loop_read(fd, id, 33, false) == 33 && id[32] == '\n') { + id[32] = 0; + + if (id128_is_valid(id)) { + id[32] = '\n'; + id[33] = 0; + return 0; + } + } + + return -EINVAL; +} + +static int write_machine_id(int fd, char id[34]) { + assert(fd >= 0); + assert(id); + lseek(fd, 0, SEEK_SET); + + if (loop_write(fd, id, 33, false) == 33) + return 0; + + return -errno; +} + int machine_id_setup(const char *root) { const char *etc_machine_id, *run_machine_id; _cleanup_close_ int fd = -1; @@ -211,13 +239,8 @@ int machine_id_setup(const char *root) { return -errno; } - if (S_ISREG(st.st_mode)) - if (loop_read(fd, id, 33, false) == 33 && id[32] == '\n') { - id[32] = 0; - - if (id128_is_valid(id)) - return 0; - } + if (S_ISREG(st.st_mode) && get_valid_machine_id(fd, id) == 0) + return 0; /* Hmm, so, the id currently stored is not useful, then let's * generate one */ @@ -227,9 +250,7 @@ int machine_id_setup(const char *root) { return r; if (S_ISREG(st.st_mode) && writable) { - lseek(fd, 0, SEEK_SET); - - if (loop_write(fd, id, 33, false) == 33) + if (write_machine_id(fd, id) == 0) return 0; } -- 2.1.3
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel