Mark *data and *userdata params to specifier_printf() as const
It would be very wrong if any of the specfier printf calls modified any of the objects or data being printed. Let's mark all arguments as const (primarily to make it easier for the reader to see where modifications cannot occur).
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
#include "unit-name.h"
|
||||
#include "user-util.h"
|
||||
|
||||
static int specifier_prefix_and_instance(char specifier, void *data, void *userdata, char **ret) {
|
||||
static int specifier_prefix_and_instance(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const UnitFileInstallInfo *i = userdata;
|
||||
_cleanup_free_ char *prefix = NULL;
|
||||
int r;
|
||||
@@ -38,7 +38,7 @@ static int specifier_prefix_and_instance(char specifier, void *data, void *userd
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int specifier_name(char specifier, void *data, void *userdata, char **ret) {
|
||||
static int specifier_name(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const UnitFileInstallInfo *i = userdata;
|
||||
char *ans;
|
||||
|
||||
@@ -54,7 +54,7 @@ static int specifier_name(char specifier, void *data, void *userdata, char **ret
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int specifier_prefix(char specifier, void *data, void *userdata, char **ret) {
|
||||
static int specifier_prefix(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const UnitFileInstallInfo *i = userdata;
|
||||
|
||||
assert(i);
|
||||
@@ -62,7 +62,7 @@ static int specifier_prefix(char specifier, void *data, void *userdata, char **r
|
||||
return unit_name_to_prefix(i->name, ret);
|
||||
}
|
||||
|
||||
static int specifier_instance(char specifier, void *data, void *userdata, char **ret) {
|
||||
static int specifier_instance(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const UnitFileInstallInfo *i = userdata;
|
||||
char *instance;
|
||||
int r;
|
||||
@@ -83,7 +83,7 @@ static int specifier_instance(char specifier, void *data, void *userdata, char *
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int specifier_last_component(char specifier, void *data, void *userdata, char **ret) {
|
||||
static int specifier_last_component(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
_cleanup_free_ char *prefix = NULL;
|
||||
char *dash;
|
||||
int r;
|
||||
@@ -104,8 +104,7 @@ static int specifier_last_component(char specifier, void *data, void *userdata,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int install_full_printf(UnitFileInstallInfo *i, const char *format, char **ret) {
|
||||
|
||||
int install_full_printf(const UnitFileInstallInfo *i, const char *format, char **ret) {
|
||||
/* This is similar to unit_full_printf() but does not support
|
||||
* anything path-related.
|
||||
*
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
#include "install.h"
|
||||
|
||||
int install_full_printf(UnitFileInstallInfo *i, const char *format, char **ret);
|
||||
int install_full_printf(const UnitFileInstallInfo *i, const char *format, char **ret);
|
||||
|
||||
+14
-14
@@ -27,7 +27,7 @@
|
||||
* and "%" used for escaping. */
|
||||
#define POSSIBLE_SPECIFIERS ALPHANUMERICAL "%"
|
||||
|
||||
int specifier_printf(const char *text, const Specifier table[], void *userdata, char **_ret) {
|
||||
int specifier_printf(const char *text, const Specifier table[], const void *userdata, char **_ret) {
|
||||
size_t l, allocated = 0;
|
||||
_cleanup_free_ char *ret = NULL;
|
||||
char *t;
|
||||
@@ -102,7 +102,7 @@ int specifier_printf(const char *text, const Specifier table[], void *userdata,
|
||||
|
||||
/* Generic handler for simple string replacements */
|
||||
|
||||
int specifier_string(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_string(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
char *n;
|
||||
|
||||
n = strdup(strempty(data));
|
||||
@@ -113,7 +113,7 @@ int specifier_string(char specifier, void *data, void *userdata, char **ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_machine_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_machine_id(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
sd_id128_t id;
|
||||
char *n;
|
||||
int r;
|
||||
@@ -130,7 +130,7 @@ int specifier_machine_id(char specifier, void *data, void *userdata, char **ret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_boot_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_boot_id(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
sd_id128_t id;
|
||||
char *n;
|
||||
int r;
|
||||
@@ -147,7 +147,7 @@ int specifier_boot_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_host_name(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_host_name(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
char *n;
|
||||
|
||||
n = gethostname_malloc();
|
||||
@@ -158,7 +158,7 @@ int specifier_host_name(char specifier, void *data, void *userdata, char **ret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_kernel_release(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_kernel_release(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
struct utsname uts;
|
||||
char *n;
|
||||
int r;
|
||||
@@ -175,7 +175,7 @@ int specifier_kernel_release(char specifier, void *data, void *userdata, char **
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_group_name(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_group_name(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
char *t;
|
||||
|
||||
t = gid_to_name(getgid());
|
||||
@@ -186,14 +186,14 @@ int specifier_group_name(char specifier, void *data, void *userdata, char **ret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_group_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_group_id(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
if (asprintf(ret, UID_FMT, getgid()) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_user_name(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_user_name(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
char *t;
|
||||
|
||||
/* If we are UID 0 (root), this will not result in NSS, otherwise it might. This is good, as we want to be able
|
||||
@@ -211,7 +211,7 @@ int specifier_user_name(char specifier, void *data, void *userdata, char **ret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_user_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_user_id(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
|
||||
if (asprintf(ret, UID_FMT, getuid()) < 0)
|
||||
return -ENOMEM;
|
||||
@@ -219,7 +219,7 @@ int specifier_user_id(char specifier, void *data, void *userdata, char **ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_user_home(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_user_home(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
|
||||
/* On PID 1 (which runs as root) this will not result in NSS,
|
||||
* which is good. See above */
|
||||
@@ -227,7 +227,7 @@ int specifier_user_home(char specifier, void *data, void *userdata, char **ret)
|
||||
return get_home_dir(ret);
|
||||
}
|
||||
|
||||
int specifier_user_shell(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_user_shell(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
|
||||
/* On PID 1 (which runs as root) this will not result in NSS,
|
||||
* which is good. See above */
|
||||
@@ -235,7 +235,7 @@ int specifier_user_shell(char specifier, void *data, void *userdata, char **ret)
|
||||
return get_shell(ret);
|
||||
}
|
||||
|
||||
int specifier_tmp_dir(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_tmp_dir(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const char *p;
|
||||
char *copy;
|
||||
int r;
|
||||
@@ -252,7 +252,7 @@ int specifier_tmp_dir(char specifier, void *data, void *userdata, char **ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int specifier_var_tmp_dir(char specifier, void *data, void *userdata, char **ret) {
|
||||
int specifier_var_tmp_dir(char specifier, const void *data, const void *userdata, char **ret) {
|
||||
const char *p;
|
||||
char *copy;
|
||||
int r;
|
||||
|
||||
+16
-16
@@ -3,32 +3,32 @@
|
||||
|
||||
#include "string-util.h"
|
||||
|
||||
typedef int (*SpecifierCallback)(char specifier, void *data, void *userdata, char **ret);
|
||||
typedef int (*SpecifierCallback)(char specifier, const void *data, const void *userdata, char **ret);
|
||||
|
||||
typedef struct Specifier {
|
||||
const char specifier;
|
||||
const SpecifierCallback lookup;
|
||||
void *data;
|
||||
const void *data;
|
||||
} Specifier;
|
||||
|
||||
int specifier_printf(const char *text, const Specifier table[], void *userdata, char **ret);
|
||||
int specifier_printf(const char *text, const Specifier table[], const void *userdata, char **ret);
|
||||
|
||||
int specifier_string(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_string(char specifier, const void *data, const void *userdata, char **ret);
|
||||
|
||||
int specifier_machine_id(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_boot_id(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_host_name(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_kernel_release(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_machine_id(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_boot_id(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_host_name(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_kernel_release(char specifier, const void *data, const void *userdata, char **ret);
|
||||
|
||||
int specifier_group_name(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_group_id(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_user_name(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_user_id(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_user_home(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_user_shell(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_group_name(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_group_id(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_user_name(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_user_id(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_user_home(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_user_shell(char specifier, const void *data, const void *userdata, char **ret);
|
||||
|
||||
int specifier_tmp_dir(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_var_tmp_dir(char specifier, void *data, void *userdata, char **ret);
|
||||
int specifier_tmp_dir(char specifier, const void *data, const void *userdata, char **ret);
|
||||
int specifier_var_tmp_dir(char specifier, const void *data, const void *userdata, char **ret);
|
||||
|
||||
static inline char* specifier_escape(const char *string) {
|
||||
return strreplace(string, "%", "%%");
|
||||
|
||||
Reference in New Issue
Block a user