X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmachine-id-setup.c;h=f154800484f823fe1628b7a27826b3ab937ffb5c;hb=3577de7ac39c54821e1d1d946db65e109dfb94b2;hp=3efcd5fac22b83b0e5d32fc9784e8c0c0ac6092a;hpb=34f750b7251936965045754e0f337cd5495ea25b;p=elogind.git diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index 3efcd5fac..f15480048 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -157,18 +157,23 @@ static int generate(char id[34], const char *root) { } int machine_id_setup(const char *root) { + const char *etc_machine_id, *run_machine_id; _cleanup_close_ int fd = -1; - int r; bool writable = false; struct stat st; char id[34]; /* 32 + \n + \0 */ - char *etc_machine_id, *run_machine_id; + int r; - etc_machine_id = strappenda(root, "/etc/machine-id"); - path_kill_slashes(etc_machine_id); + if (isempty(root)) { + etc_machine_id = "/etc/machine-id"; + run_machine_id = "/run/machine-id"; + } else { + etc_machine_id = strappenda(root, "/etc/machine-id"); + path_kill_slashes((char*) etc_machine_id); - run_machine_id = strappenda(root, "/run/machine-id"); - path_kill_slashes(run_machine_id); + run_machine_id = strappenda(root, "/run/machine-id"); + path_kill_slashes((char*) run_machine_id); + } RUN_WITH_UMASK(0000) { /* We create this 0444, to indicate that this isn't really @@ -176,6 +181,7 @@ int machine_id_setup(const char *root) { * will be owned by root it doesn't matter much, but maybe * people look. */ + mkdir_parents(etc_machine_id, 0755); fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444); if (fd >= 0) writable = true;