mirror of
https://github.com/systemd/systemd.git
synced 2026-08-05 23:50:42 +00:00
core: deprecate %c, %r, %R specifiers
%c and %r rely on settings made in the unit files themselves and hence resolve to different values depending on whether they are used before or after Slice=. Let's simply deprecate them and drop them from the documentation, as that's not really possible to fix. Moreover they are actually redundant, as the same information may always be queried from /proc/self/cgroup and /proc/1/cgroup. (Accurately speaking, %R is actually not broken like this as it is constant. However, let's remove all cgroup-related specifiers at once, as it is also redundant, and doesn't really make much sense alone.)
This commit is contained in:
@@ -78,12 +78,18 @@ static int specifier_filename(char specifier, void *data, void *userdata, char *
|
||||
return unit_name_to_path(u->id, ret);
|
||||
}
|
||||
|
||||
static void bad_specifier(Unit *u, char specifier) {
|
||||
log_unit_warning(u, "Specifier '%%%c' used in unit configuration, which is deprecated. Please update your unit file, as it does not work as intended.", specifier);
|
||||
}
|
||||
|
||||
static int specifier_cgroup(char specifier, void *data, void *userdata, char **ret) {
|
||||
Unit *u = userdata;
|
||||
char *n;
|
||||
|
||||
assert(u);
|
||||
|
||||
bad_specifier(u, specifier);
|
||||
|
||||
if (u->cgroup_path)
|
||||
n = strdup(u->cgroup_path);
|
||||
else
|
||||
@@ -101,6 +107,8 @@ static int specifier_cgroup_root(char specifier, void *data, void *userdata, cha
|
||||
|
||||
assert(u);
|
||||
|
||||
bad_specifier(u, specifier);
|
||||
|
||||
n = strdup(u->manager->cgroup_root);
|
||||
if (!n)
|
||||
return -ENOMEM;
|
||||
@@ -115,6 +123,8 @@ static int specifier_cgroup_slice(char specifier, void *data, void *userdata, ch
|
||||
|
||||
assert(u);
|
||||
|
||||
bad_specifier(u, specifier);
|
||||
|
||||
if (UNIT_ISSET(u->slice)) {
|
||||
Unit *slice;
|
||||
|
||||
@@ -238,9 +248,9 @@ int unit_full_printf(Unit *u, const char *format, char **ret) {
|
||||
* (which are likely not suitable for unescaped inclusion in unit names):
|
||||
*
|
||||
* %f: the unescaped instance if set, otherwise the id unescaped as path
|
||||
* %c: cgroup path of unit
|
||||
* %r: where units in this slice are placed in the cgroup tree
|
||||
* %R: the root of this systemd's instance tree
|
||||
* %c: cgroup path of unit (deprecated)
|
||||
* %r: where units in this slice are placed in the cgroup tree (deprecated)
|
||||
* %R: the root of this systemd's instance tree (deprecated)
|
||||
* %t: the runtime directory to place sockets in (e.g. "/run" or $XDG_RUNTIME_DIR)
|
||||
*
|
||||
* %h: the homedir of the running user
|
||||
|
||||
Reference in New Issue
Block a user