From 8ff290af3b7db00eef76bdec61fee4aca7d84d0b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Jun 2012 16:24:57 +0200 Subject: [PATCH] unit: drop the Names= option Names= is a source of errors, simply because alias names specified like this only become relevant after a unit has been loaded but cannot be used to load a unit. Let's get rid of the confusion and drop this field. To establish alias names peope should use symlinks, which have the the benefit of being useful as key to load a unit, even though they are not taken into account if unit names are listed but they haven't been explicitly referenced before. --- TODO | 2 - man/systemd.unit.xml | 54 +-------------------------- src/core/load-fragment-gperf.gperf.m4 | 1 - src/core/load-fragment.c | 44 ---------------------- src/core/load-fragment.h | 1 - 5 files changed, 1 insertion(+), 101 deletions(-) diff --git a/TODO b/TODO index 7fb3747db2..8778707169 100644 --- a/TODO +++ b/TODO @@ -399,5 +399,3 @@ Regularly: Scheduled for removal (or fixing): * xxxOverridable dependencies - -* Names= unit option diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 123965bd44..93fb37b72b 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -869,35 +869,6 @@ symlinks. - - Names= - - Additional names for - this unit. The names listed here must - have the same suffix (i.e. type) as - the unit file name. This option may be - specified more than once, in which - case all listed names are used. Note - that this option is different from the - Alias= option from - the [Install] section mentioned - below. See below for details. Note - that in almost all cases this option - is not what you want. A symlink alias - in the file system is generally - preferable since it can be used as - lookup key. If a unit with a symlinked - alias name is not loaded and needs to - be it is easily found via the - symlink. However, if a unit with an - alias name configured with this - setting is not loaded it will not be - discovered. This settings' only use is - in conjunction with service - instances. - - - SourcePath= A path to a @@ -936,30 +907,7 @@ time, systemctl enable will create symlinks from these names - to the unit file name. Note that this - is different from the - Names= option from - the [Unit] section mentioned above: - The names from - Names= apply - unconditionally if the unit is - loaded. The names from - Alias= apply only - if the unit has actually been - installed with the - systemctl enable - command. Also, if systemd searches for a - unit, it will discover symlinked alias - names as configured with - Alias=, but not - names configured with - Names= only. It is - a common pattern to list a name in - both options. In this case, a unit - will be active under all names if - installed, but also if not installed - but requested explicitly under its - main name. + to the unit file name. diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index d51c7ac5e2..f5e9b70672 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -90,7 +90,6 @@ $1.UtmpIdentifier, config_parse_unit_string_printf, 0, $1.ControlGroupModify, config_parse_bool, 0, offsetof($1, exec_context.control_group_modify) $1.ControlGroupPersistent, config_parse_tristate, 0, offsetof($1, exec_context.control_group_persistent)' )m4_dnl -Unit.Names, config_parse_unit_names, 0, 0 Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description) Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation) Unit.SourcePath, config_parse_path, 0, offsetof(Unit, source_path) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 22da6c1197..1ca0dece67 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -105,49 +105,6 @@ int config_parse_unit_deps( return 0; } -int config_parse_unit_names( - const char *filename, - unsigned line, - const char *section, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - Unit *u = userdata; - char *w; - size_t l; - char *state; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char *t, *k; - int r; - - t = strndup(w, l); - if (!t) - return -ENOMEM; - - k = unit_name_printf(u, t); - free(t); - if (!k) - return -ENOMEM; - - r = unit_merge_by_name(u, k); - if (r < 0) - log_error("Failed to add name %s, ignoring: %s", k, strerror(-r)); - - free(k); - } - - return 0; -} - int config_parse_unit_string_printf( const char *filename, unsigned line, @@ -2395,7 +2352,6 @@ void unit_dump_config_items(FILE *f) { { config_parse_limit, "LIMIT" }, { config_parse_unit_cgroup, "CGROUP [...]" }, { config_parse_unit_deps, "UNIT [...]" }, - { config_parse_unit_names, "UNIT [...]" }, { config_parse_exec, "PATH [ARGUMENT [...]]" }, { config_parse_service_type, "SERVICETYPE" }, { config_parse_service_restart, "SERVICERESTART" }, diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index 9a3465a166..501ea4ad47 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -32,7 +32,6 @@ void unit_dump_config_items(FILE *f); int config_parse_warn_compat(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_deps(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_names(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_string_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_strv_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_path_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);