Move no_alias information to shared/
This way it can be used in install.c in subsequent commit.
This commit is contained in:
@@ -1050,7 +1050,6 @@ const UnitVTable automount_vtable = {
|
||||
"Automount\0"
|
||||
"Install\0",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
|
||||
.init = automount_init,
|
||||
|
||||
@@ -1028,7 +1028,6 @@ const UnitVTable busname_vtable = {
|
||||
"Install\0",
|
||||
.private_section = "BusName",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
|
||||
.init = busname_init,
|
||||
|
||||
@@ -3612,7 +3612,7 @@ static int load_from_path(Unit *u, const char *path) {
|
||||
/* Hmm, no suitable file found? */
|
||||
return 0;
|
||||
|
||||
if (UNIT_VTABLE(u)->no_alias && set_size(symlink_names) > 1) {
|
||||
if (!unit_type_may_alias(u->type) && set_size(symlink_names) > 1) {
|
||||
log_unit_warning(u, "Unit type of %s does not support alias names, refusing loading via symlink.", u->id);
|
||||
return -ELOOP;
|
||||
}
|
||||
|
||||
@@ -1839,7 +1839,6 @@ const UnitVTable mount_vtable = {
|
||||
"Install\0",
|
||||
.private_section = "Mount",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
|
||||
.init = mount_init,
|
||||
|
||||
@@ -569,7 +569,6 @@ const UnitVTable scope_vtable = {
|
||||
"Install\0",
|
||||
.private_section = "Scope",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
.can_transient = true,
|
||||
|
||||
|
||||
@@ -309,7 +309,6 @@ const UnitVTable slice_vtable = {
|
||||
"Install\0",
|
||||
.private_section = "Slice",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
.can_transient = true,
|
||||
|
||||
|
||||
@@ -1465,7 +1465,6 @@ const UnitVTable swap_vtable = {
|
||||
"Install\0",
|
||||
.private_section = "Swap",
|
||||
|
||||
.no_alias = true,
|
||||
.no_instances = true,
|
||||
|
||||
.init = swap_init,
|
||||
|
||||
+2
-2
@@ -202,7 +202,7 @@ int unit_add_name(Unit *u, const char *text) {
|
||||
if (u->type != _UNIT_TYPE_INVALID && !u->instance != !i)
|
||||
return -EINVAL;
|
||||
|
||||
if (unit_vtable[t]->no_alias && !set_isempty(u->names))
|
||||
if (!unit_type_may_alias(t) && !set_isempty(u->names))
|
||||
return -EEXIST;
|
||||
|
||||
if (hashmap_size(u->manager->units) >= MANAGER_MAX_NAMES)
|
||||
@@ -720,7 +720,7 @@ int unit_merge(Unit *u, Unit *other) {
|
||||
if (!u->instance != !other->instance)
|
||||
return -EINVAL;
|
||||
|
||||
if (UNIT_VTABLE(u)->no_alias) /* Merging only applies to unit names that support aliases */
|
||||
if (!unit_type_may_alias(u->type)) /* Merging only applies to unit names that support aliases */
|
||||
return -EEXIST;
|
||||
|
||||
if (other->load_state != UNIT_STUB &&
|
||||
|
||||
@@ -416,9 +416,6 @@ struct UnitVTable {
|
||||
/* The strings to print in status messages */
|
||||
UnitStatusMessageFormats status_message_formats;
|
||||
|
||||
/* Can units of this type have multiple names? */
|
||||
bool no_alias:1;
|
||||
|
||||
/* Instances make no sense for this type */
|
||||
bool no_instances:1;
|
||||
|
||||
|
||||
@@ -68,6 +68,16 @@ typedef struct {
|
||||
|
||||
static int unit_file_lookup_state(UnitFileScope scope, const LookupPaths *paths, const char *name, UnitFileState *ret);
|
||||
|
||||
bool unit_type_may_alias(UnitType type) {
|
||||
return IN_SET(type,
|
||||
UNIT_SERVICE,
|
||||
UNIT_SOCKET,
|
||||
UNIT_TARGET,
|
||||
UNIT_DEVICE,
|
||||
UNIT_TIMER,
|
||||
UNIT_PATH);
|
||||
}
|
||||
|
||||
static int in_search_path(const LookupPaths *p, const char *path) {
|
||||
_cleanup_free_ char *parent = NULL;
|
||||
char **i;
|
||||
|
||||
@@ -138,6 +138,8 @@ static inline bool UNIT_FILE_INSTALL_INFO_HAS_ALSO(UnitFileInstallInfo *i) {
|
||||
return !strv_isempty(i->also);
|
||||
}
|
||||
|
||||
bool unit_type_may_alias(UnitType type) _const_;
|
||||
|
||||
int unit_file_enable(
|
||||
UnitFileScope scope,
|
||||
bool runtime,
|
||||
|
||||
Reference in New Issue
Block a user