From a17b785b5fa57fba8cd658fdf710d5987413d9c2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 31 Aug 2011 01:30:57 +0200 Subject: [PATCH] getty-generator: ignore if symlinks already exist --- src/getty-generator.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/getty-generator.c b/src/getty-generator.c index 7cce76fb8..14cceb49c 100644 --- a/src/getty-generator.c +++ b/src/getty-generator.c @@ -44,9 +44,15 @@ static int add_symlink(const char *fservice, const char *tservice) { mkdir_parents(to, 0755); - if ((r = symlink(from, to)) < 0) { - log_error("Failed to create symlink from %s to %s: %m", from, to); - r = -errno; + r = symlink(from, to); + if (r < 0) { + if (errno == EEXIST) + /* In case console=hvc is passed this will very likely result in EEXIST */ + r = 0; + else { + log_error("Failed to create symlink from %s to %s: %m", from, to); + r = -errno; + } } finish: @@ -88,7 +94,8 @@ int main(int argc, char *argv[]) { if (read_one_line_file("/sys/class/tty/console/active", &active) >= 0) { const char *tty; - if ((tty = strrchr(active, ' '))) + tty = strrchr(active, ' '); + if (tty) tty ++; else tty = active; @@ -104,8 +111,8 @@ int main(int argc, char *argv[]) { log_debug("Automatically adding serial getty for /dev/%s.", tty); - if (!(n = unit_name_replace_instance("serial-getty@.service", tty)) || - add_symlink("serial-getty@.service", n) < 0) + n = unit_name_replace_instance("serial-getty@.service", tty); + if (!n || add_symlink("serial-getty@.service", n) < 0) r = EXIT_FAILURE; free(n);