Commit 067d851d authored by Daniel Wallace's avatar Daniel Wallace Committed by Lennart Poettering
Browse files

unit: add %U for uids in units

parent 490b7e47
......@@ -263,6 +263,11 @@
<entry>User name</entry>
<entry>This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
</row>
<row>
<entry><literal>%U</literal></entry>
<entry>User uid</entry>
<entry>This is the uid of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
</row>
<row>
<entry><literal>%h</literal></entry>
<entry>User home directory</entry>
......
......@@ -123,6 +123,8 @@ static char *specifier_user_name(char specifier, void *data, void *userdata) {
ExecContext *c;
int r;
const char *username;
uid_t uid;
char *printed = NULL;
assert(u);
......@@ -134,11 +136,21 @@ static char *specifier_user_name(char specifier, void *data, void *userdata) {
/* fish username from passwd */
username = c->user;
r = get_user_creds(&username, NULL, NULL, NULL, NULL);
r = get_user_creds(&username, &uid, NULL, NULL, NULL);
if (r < 0)
return NULL;
return strdup(username);
switch (specifier) {
case 'U':
if (asprintf(&printed, "%d", uid) < 0)
return NULL;
break;
case 'u':
printed = strdup(username);
break;
}
return printed;
}
static char *specifier_user_home(char specifier, void *data, void *userdata) {
......@@ -292,6 +304,7 @@ char *unit_full_printf(Unit *u, const char *format) {
{ 'r', specifier_cgroup_root, NULL },
{ 'R', specifier_cgroup_root, NULL },
{ 't', specifier_runtime, NULL },
{ 'U', specifier_user_name, NULL },
{ 'u', specifier_user_name, NULL },
{ 'h', specifier_user_home, NULL },
{ 's', specifier_user_shell, NULL },
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment