[systemd-devel] tmpfiles.d specifier support on "argument" when operating on files

Lennart Poettering lennart at poettering.net
Wed Feb 18 02:10:52 PST 2015


On Tue, 17.02.15 17:35, Cristian Rodríguez (crrodriguez at opensuse.org) wrote:

Please fix this for all arguments, not just symlinks.

> diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
> index c948d4d..1b35b8e 100644
> --- a/src/tmpfiles/tmpfiles.c
> +++ b/src/tmpfiles/tmpfiles.c
> @@ -1590,6 +1590,12 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
>                          i.argument = strappend("/usr/share/factory/", i.path);
>                          if (!i.argument)
>                                  return log_oom();
> +                } else {
> +                    r = specifier_printf(i.argument,
> specifier_table, NULL, &i.argument);

Here's a memory leak, you need to free the old i.argument.

Indentation! Please have a look at CODING_STYLE. You need to indent by
8ch. 4ch indenting is not acceptable. 

> +                    if (r < 0) {
> +                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, path);
> +                        return r;
> +                    }

A good candidate for log_error_errno().

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list