core: simplify unit_escape_setting()

The function had a provision for NULL input, and would return NULL, but that
looks like an error and all callers pass in a non-NULL arg and report oom on
NULL. So assert that the input is non-NULL.

All callers specifed the output buffer, so we can simplify the logic to only
make an allocation if appropriate and change the return type to 'const *'.

No functional change.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-04-04 15:18:00 +02:00
parent 4a055e5a3e
commit 68ecb48b90
2 changed files with 11 additions and 17 deletions
+10 -16
View File
@@ -4310,20 +4310,18 @@ static const char* unit_drop_in_dir(Unit *u, UnitWriteFlags flags) {
return NULL;
}
char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf) {
const char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf) {
assert(s);
assert(!FLAGS_SET(flags, UNIT_ESCAPE_EXEC_SYNTAX | UNIT_ESCAPE_C));
assert(buf);
_cleanup_free_ char *t = NULL;
if (!s)
return NULL;
/* Escapes the input string as requested. Returns the escaped string. If 'buf' is specified then the
* allocated return buffer pointer is also written to *buf, except if no escaping was necessary, in
* which case *buf is set to NULL, and the input pointer is returned as-is. This means the return
* value always contains a properly escaped version, but *buf when passed only contains a pointer if
* an allocation was necessary. If *buf is not specified, then the return value always needs to be
* freed. Callers can use this to optimize memory allocations. */
/* Returns a string with any escaping done. If no escaping was necessary, *buf is set to NULL, and
* the input pointer is returned as-is. If an allocation was needed, the return buffer pointer is
* written to *buf. This means the return value always contains a properly escaped version, but *buf
* only contains a pointer if an allocation was made. Callers can use this to optimize memory
* allocations. */
if (flags & UNIT_ESCAPE_SPECIFIERS) {
t = specifier_escape(s);
@@ -4353,12 +4351,8 @@ char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf) {
s = t;
}
if (buf) {
*buf = TAKE_PTR(t);
return (char*) s;
}
return TAKE_PTR(t) ?: strdup(s);
*buf = TAKE_PTR(t);
return s;
}
char* unit_concat_strv(char **l, UnitWriteFlags flags) {
+1 -1
View File
@@ -964,7 +964,7 @@ ExecRuntime *unit_get_exec_runtime(Unit *u) _pure_;
int unit_setup_exec_runtime(Unit *u);
char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf);
const char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf);
char* unit_concat_strv(char **l, UnitWriteFlags flags);
int unit_write_setting(Unit *u, UnitWriteFlags flags, const char *name, const char *data);