[systemd-devel] [feature request] allow instances in file.preset
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Thu Sep 25 16:00:11 PDT 2014
On Thu, Sep 25, 2014 at 10:44:35PM +0000, Damien Robert wrote:
> Zbigniew Jędrzejewski-Szmek wrote in message
> <20140925211702.GV29977 at in.waw.pl>:
> > This seems to be a mis-design. I'm pretty sure we should allow users
> > to set their own presets, so those directories underneath the home
> > dir should be added.
>
> Ok great! I'll be happy to provide a patch but I have never hacked systemd
> before. Would something like that be ok? (not tested, just to see if I am
> in the right direction)
In general yes. Some specific notes below.
> ---------------------- >8 -------------------------
> From 7755e4afc3dc24f50c97c28fd7c00fd576d882cc Mon Sep 17 00:00:00 2001
> From: Damien Robert <damien.olivier.robert+git at gmail.com>
> Date: Fri, 26 Sep 2014 00:34:46 +0200
> Subject: [PATCH 1/1] preset: read files in $XDG_CONFIG_HOME/systemd/user-preset/*
>
> This is the only way for a user to modify preset files as the other
> directory read
> /run/systemd/user-preset/*.preset
> /usr/lib/systemd/user-preset/*.preset
> are not user owned.
>
> ---
> man/systemd.preset.xml | 1 +
> src/shared/install.c | 24 ++++++++++++++++++------
> 2 files changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml
> index 55cb4de..9d414f4 100644
> --- a/man/systemd.preset.xml
> +++ b/man/systemd.preset.xml
> @@ -49,6 +49,7 @@
> <para><filename>/etc/systemd/system-preset/*.preset</filename></para>
> <para><filename>/run/systemd/system-preset/*.preset</filename></para>
> <para><filename>/usr/lib/systemd/system-preset/*.preset</filename></para>
> + <para><literallayout><filename>$XDG_CONFIG_HOME/systemd/user-preset/*</filename>
> <para><filename>/etc/systemd/user-preset/*.preset</filename></para>
> <para><filename>/run/systemd/user-preset/*.preset</filename></para>
> <para><filename>/usr/lib/systemd/user-preset/*.preset</filename></para>
You seem to open an xml element, without closing it.
> diff --git a/src/shared/install.c b/src/shared/install.c
> index 61e572b..7981556 100644
> --- a/src/shared/install.c
> +++ b/src/shared/install.c
> @@ -1769,6 +1769,7 @@ UnitFileState unit_file_get_state(
>
> int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name) {
> _cleanup_strv_free_ char **files = NULL;
> + _cleanup_free_ char *user_preset = NULL;
You can define this below, where it is used.
> char **p;
> int r;
>
> @@ -1786,12 +1787,23 @@ int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char
> #endif
> NULL);
> else if (scope == UNIT_FILE_GLOBAL)
> - r = conf_files_list(&files, ".preset", root_dir,
> - "/etc/systemd/user-preset",
> - "/usr/local/lib/systemd/user-preset",
> - "/usr/lib/systemd/user-preset",
> - NULL);
> - else
> + if (user_config_home(&user_preset) >= 0) {
> + user_preset = strappend(user_preset, "-preset");
> + if (!user_preset)
> + return -ENOMEM;
> + r = conf_files_list(&files, ".preset", root_dir,
> + user_preset,
> + "/etc/systemd/user-preset",
> + "/usr/local/lib/systemd/user-preset",
> + "/usr/lib/systemd/user-preset",
> + NULL);
> + }
> + else
> + r = conf_files_list(&files, ".preset", root_dir,
> + "/etc/systemd/user-preset",
> + "/usr/local/lib/systemd/user-preset",
> + "/usr/lib/systemd/user-preset",
> + NULL);
Please align all the if's at the same level, not nested.
Zbyszek
More information about the systemd-devel
mailing list