X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fgetty-generator.c;h=1263785fb51127d646fc11495ec5d03d57d9c0ad;hp=4be3ce96407c39a5d4a57f0e99ed98f03e646101;hb=fc8af9ff3fbbbf21bf26f21d2eb100f26afc201a;hpb=3c20189a722e6f2eec12c57c3bf3567533073c66 diff --git a/src/getty-generator.c b/src/getty-generator.c index 4be3ce964..1263785fb 100644 --- a/src/getty-generator.c +++ b/src/getty-generator.c @@ -26,6 +26,7 @@ #include "log.h" #include "util.h" #include "unit-name.h" +#include "virt.h" const char *arg_dest = "/tmp"; @@ -33,6 +34,9 @@ static int add_symlink(const char *fservice, const char *tservice) { char *from = NULL, *to = NULL; int r; + assert(fservice); + assert(tservice); + asprintf(&from, SYSTEM_DATA_UNIT_PATH "/%s", fservice); asprintf(&to, "%s/getty.target.wants/%s", arg_dest, tservice); @@ -63,6 +67,26 @@ finish: return r; } +static int add_serial_getty(const char *tty) { + char *n; + int r; + + assert(tty); + + log_debug("Automatically adding serial getty for /dev/%s.", tty); + + n = unit_name_replace_instance("serial-getty@.service", tty); + if (!n) { + log_error("Out of memory"); + return -ENOMEM; + } + + r = add_symlink("serial-getty@.service", n); + free(n); + + return r; +} + int main(int argc, char *argv[]) { static const char virtualization_consoles[] = @@ -79,7 +103,7 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); + log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); @@ -112,27 +136,15 @@ int main(int argc, char *argv[]) { if (tty_is_vc(tty)) free(active); else { - char *n; int k; /* We assume that gettys on virtual terminals are * started via manual configuration and do this magic * only for non-VC terminals. */ - log_debug("Automatically adding serial getty for /dev/%s.", tty); - - n = unit_name_replace_instance("serial-getty@.service", tty); + k = add_serial_getty(tty); free(active); - if (!n) { - log_error("Out of memory"); - r = EXIT_FAILURE; - goto finish; - } - - k = add_symlink("serial-getty@.service", n); - free(n); - if (k < 0) { r = EXIT_FAILURE; goto finish; @@ -143,7 +155,7 @@ int main(int argc, char *argv[]) { /* Automatically add in a serial getty on the first * virtualizer console */ NULSTR_FOREACH(j, virtualization_consoles) { - char *n, *p; + char *p; int k; if (asprintf(&p, "/sys/class/tty/%s", j) < 0) { @@ -158,18 +170,7 @@ int main(int argc, char *argv[]) { if (k < 0) continue; - log_debug("Automatically adding serial getty for /dev/%s.", j); - - n = unit_name_replace_instance("serial-getty@.service", j); - if (!n) { - log_error("Out of memory"); - r = EXIT_FAILURE; - goto finish; - } - - k = add_symlink("serial-getty@.service", n); - free(n); - + k = add_serial_getty(j); if (k < 0) { r = EXIT_FAILURE; goto finish;