return unit_add_dependency_by_name(UNIT(t), UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true);
}
-static int target_add_getty_dependencies(Target *t) {
- char *n, *active;
- int r;
-
- assert(t);
-
- if (!unit_has_name(UNIT(t), SPECIAL_GETTY_TARGET))
- return 0;
-
- if (detect_container(NULL) > 0)
- return 1;
-
- if (read_one_line_file("/sys/class/tty/console/active", &active) >= 0) {
- const char *tty;
-
- truncate_nl(active);
- if ((tty = strrchr(active, ' ')))
- tty ++;
- else
- tty = active;
-
- /* Automatically add in a serial getty on the kernel
- * console */
- if (!tty_is_vc(tty)) {
-
- /* 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);
- if (!(n = unit_name_replace_instance(SPECIAL_SERIAL_GETTY_SERVICE, tty))) {
- free(active);
- return -ENOMEM;
- }
-
- r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_WANTS, n, NULL, true);
- free(n);
-
- if (r < 0) {
- free(active);
- return r;
- }
- }
-
- free(active);
- }
-
- /* Automatically add in a serial getty on the first
- * virtualizer console */
- if (access("/sys/class/tty/hvc0", F_OK) == 0) {
- log_debug("Automatic adding serial getty for hvc0");
- if (!(n = unit_name_replace_instance(SPECIAL_SERIAL_GETTY_SERVICE, "hvc0")))
- return -ENOMEM;
-
- r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_WANTS, n, NULL, true);
- free(n);
-
- if (r < 0)
- return r;
- }
-
- return 0;
-}
-
static int target_load(Unit *u) {
Target *t = TARGET(u);
int r;
if (u->meta.default_dependencies)
if ((r = target_add_default_dependencies(t)) < 0)
return r;
-
- if ((r = target_add_getty_dependencies(t)) < 0)
- return r;
}
return 0;
const UnitVTable target_vtable = {
.suffix = ".target",
+ .sections =
+ "Unit\0"
+ "Target\0"
+ "Install\0",
.load = target_load,
.coldplug = target_coldplug,