diff options
Diffstat (limited to 'src/core/unit-printf.c')
-rw-r--r-- | src/core/unit-printf.c | 82 |
1 files changed, 27 insertions, 55 deletions
diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 046e937e92..a8e84ebe80 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -12,25 +12,25 @@ #include "unit.h" #include "user-util.h" -static int specifier_prefix_and_instance(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_prefix_and_instance(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; assert(u); return unit_name_to_prefix_and_instance(u->id, ret); } -static int specifier_prefix(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_prefix(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; assert(u); return unit_name_to_prefix(u->id, ret); } -static int specifier_prefix_unescaped(char specifier, void *data, void *userdata, char **ret) { +static int specifier_prefix_unescaped(char specifier, const void *data, const void *userdata, char **ret) { _cleanup_free_ char *p = NULL; - Unit *u = userdata; + const Unit *u = userdata; int r; assert(u); @@ -42,16 +42,16 @@ static int specifier_prefix_unescaped(char specifier, void *data, void *userdata return unit_name_unescape(p, ret); } -static int specifier_instance_unescaped(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_instance_unescaped(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; assert(u); return unit_name_unescape(strempty(u->instance), ret); } -static int specifier_last_component(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_last_component(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; _cleanup_free_ char *prefix = NULL; char *dash; int r; @@ -70,7 +70,7 @@ static int specifier_last_component(char specifier, void *data, void *userdata, return 0; } -static int specifier_last_component_unescaped(char specifier, void *data, void *userdata, char **ret) { +static int specifier_last_component_unescaped(char specifier, const void *data, const void *userdata, char **ret) { _cleanup_free_ char *p = NULL; int r; @@ -81,8 +81,8 @@ static int specifier_last_component_unescaped(char specifier, void *data, void * return unit_name_unescape(p, ret); } -static int specifier_filename(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_filename(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; assert(u); @@ -92,12 +92,12 @@ 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) { +static void bad_specifier(const 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; +static int specifier_cgroup(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; char *n; assert(u); @@ -115,8 +115,8 @@ static int specifier_cgroup(char specifier, void *data, void *userdata, char **r return 0; } -static int specifier_cgroup_root(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_cgroup_root(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; char *n; assert(u); @@ -131,8 +131,8 @@ static int specifier_cgroup_root(char specifier, void *data, void *userdata, cha return 0; } -static int specifier_cgroup_slice(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_cgroup_slice(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; char *n; assert(u); @@ -140,7 +140,7 @@ static int specifier_cgroup_slice(char specifier, void *data, void *userdata, ch bad_specifier(u, specifier); if (UNIT_ISSET(u->slice)) { - Unit *slice; + const Unit *slice; slice = UNIT_DEREF(u->slice); @@ -157,8 +157,8 @@ static int specifier_cgroup_slice(char specifier, void *data, void *userdata, ch return 0; } -static int specifier_special_directory(char specifier, void *data, void *userdata, char **ret) { - Unit *u = userdata; +static int specifier_special_directory(char specifier, const void *data, const void *userdata, char **ret) { + const Unit *u = userdata; char *n = NULL; assert(u); @@ -196,6 +196,8 @@ int unit_name_printf(Unit *u, const char* format, char **ret) { { 'p', specifier_prefix, NULL }, { 'i', specifier_string, u->instance }, + { 'g', specifier_group_name, NULL }, + { 'G', specifier_group_id, NULL }, { 'U', specifier_user_id, NULL }, { 'u', specifier_user_name, NULL }, @@ -264,6 +266,8 @@ int unit_full_printf(Unit *u, const char *format, char **ret) { { 'T', specifier_tmp_dir, NULL }, { 'V', specifier_var_tmp_dir, NULL }, + { 'g', specifier_group_name, NULL }, + { 'G', specifier_group_id, NULL }, { 'U', specifier_user_id, NULL }, { 'u', specifier_user_name, NULL }, { 'h', specifier_user_home, NULL }, @@ -282,35 +286,3 @@ int unit_full_printf(Unit *u, const char *format, char **ret) { return specifier_printf(format, table, u, ret); } - -int unit_full_printf_strv(Unit *u, char **l, char ***ret) { - size_t n; - char **r, **i, **j; - int q; - - /* Applies unit_full_printf to every entry in l */ - - assert(u); - - n = strv_length(l); - r = new(char*, n+1); - if (!r) - return -ENOMEM; - - for (i = l, j = r; *i; i++, j++) { - q = unit_full_printf(u, *i, j); - if (q < 0) - goto fail; - } - - *j = NULL; - *ret = r; - return 0; - -fail: - for (j--; j >= r; j--) - free(*j); - - free(r); - return q; -} |