X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fdev-setup.c;h=b0ac02d4611ef6e7110624d5764036161b350b5f;hb=7584d236eac91f9b7128b1eb08bddf18be2bce9f;hp=0b3d648acb879daedc77ef1aacbdd010155e3ef8;hpb=5ba2dc259f3cdd8fddef68cfd28380a32534e49a;p=elogind.git diff --git a/src/shared/dev-setup.c b/src/shared/dev-setup.c index 0b3d648ac..b0ac02d46 100644 --- a/src/shared/dev-setup.c +++ b/src/shared/dev-setup.c @@ -50,7 +50,7 @@ static int symlink_and_label(const char *old_path, const char *new_path) { return r; } -void dev_setup(void) { +void dev_setup(const char *prefix) { const char *j, *k; static const char symlinks[] = @@ -60,6 +60,19 @@ void dev_setup(void) { "/proc/self/fd/1\0" "/dev/stdout\0" "/proc/self/fd/2\0" "/dev/stderr\0"; - NULSTR_FOREACH_PAIR(j, k, symlinks) - symlink_and_label(j, k); + NULSTR_FOREACH_PAIR(j, k, symlinks) { + + if (prefix) { + char *linkname; + + if (asprintf(&linkname, "%s/%s", prefix, k) < 0) { + log_oom(); + break; + } + + symlink_and_label(j, linkname); + free(linkname); + } else + symlink_and_label(j, k); + } }