From 5c176eb4bf182f059d34ff267036213dc93bac17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 20 Dec 2018 12:10:36 +0100 Subject: [PATCH] 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). --- src/shared/generator.c | 9 +++++---- src/shared/generator.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) 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, -- 2.47.3