From: Zbigniew Jędrzejewski-Szmek Date: Thu, 20 Dec 2018 11:10:36 +0000 (+0100) Subject: shared/generator: allow absolute symlink target in generator_add_symlink() X-Git-Tag: v242-rc1~306^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c176eb4bf182f059d34ff267036213dc93bac17;p=thirdparty%2Fsystemd.git shared/generator: allow absolute symlink target in generator_add_symlink() Also remove the stray ".d" from comment and rename directory argument to "dir" (we usually use "root" for arg_root, so using it here was misleading). --- diff --git a/src/shared/generator.c b/src/shared/generator.c index 0adaaf2c567..ce8305c2366 100644 --- a/src/shared/generator.c +++ b/src/shared/generator.c @@ -55,13 +55,14 @@ int generator_open_unit_file( return 0; } -int generator_add_symlink(const char *root, const char *dst, const char *dep_type, const char *src) { - /* Adds a symlink from ..d/ to ../ */ +int generator_add_symlink(const char *dir, const char *dst, const char *dep_type, const char *src) { + /* Adds a symlink from ./ to (if src is absolute) + * or ../ (otherwise). */ const char *from, *to; - from = strjoina("../", src); - to = strjoina(root, "/", dst, ".", dep_type, "/", src); + from = path_is_absolute(src) ? src : strjoina("../", src); + to = strjoina(dir, "/", dst, ".", dep_type, "/", basename(src)); mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) diff --git a/src/shared/generator.h b/src/shared/generator.h index 5a1c1e32f7f..e2209657cd6 100644 --- a/src/shared/generator.h +++ b/src/shared/generator.h @@ -11,7 +11,7 @@ int generator_open_unit_file( const char *name, FILE **file); -int generator_add_symlink(const char *root, const char *dst, const char *dep_type, const char *src); +int generator_add_symlink(const char *dir, const char *dst, const char *dep_type, const char *src); int generator_write_fsck_deps( FILE *f,