diff options
Diffstat (limited to 'src/shared/install.c')
-rw-r--r-- | src/shared/install.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/shared/install.c b/src/shared/install.c index 7fb352cfff..b82d1891dd 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -956,6 +956,33 @@ static int config_parse_also( return 0; } +static int config_parse_user( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + InstallInfo *i = data; + char* printed; + + assert(filename); + assert(lvalue); + assert(rvalue); + + printed = install_full_printf(i, rvalue); + if (!printed) + return -ENOMEM; + + free(i->user); + i->user = printed; + + return 0; +} + static int unit_file_load( InstallContext *c, InstallInfo *info, @@ -967,6 +994,7 @@ static int unit_file_load( { "Install", "WantedBy", config_parse_strv, 0, &info->wanted_by }, { "Install", "RequiredBy", config_parse_strv, 0, &info->required_by }, { "Install", "Also", config_parse_also, 0, c }, + { "Exec", "User", config_parse_user, 0, info }, { NULL, NULL, NULL, 0, NULL } }; |