diff options
author | Daniel Mack <github@zonque.org> | 2015-11-12 18:18:45 +0100 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2015-11-12 18:18:45 +0100 |
commit | f1637bd3a81fe0468b53d7aa91b44cc0c34410d7 (patch) | |
tree | 60306026034427f5016a1da67cdb9d4689e2a5e9 /src/basic/fs-util.c | |
parent | 05c450966a08ff85fa8348e2fe41b722612fa3dc (diff) | |
parent | 79413b673b45adc98dfeaec882bbdda2343cb2f9 (diff) |
Merge pull request #1515 from poettering/install-symlink
install: follow unit file symlinks in /usr, but not /etc when looking for [Install] data and more
Diffstat (limited to 'src/basic/fs-util.c')
-rw-r--r-- | src/basic/fs-util.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index cddd4232fc..2b6189ad90 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -233,6 +233,26 @@ int readlink_and_canonicalize(const char *p, char **r) { return 0; } +int readlink_and_make_absolute_root(const char *root, const char *path, char **ret) { + _cleanup_free_ char *target = NULL, *t = NULL; + const char *full; + int r; + + full = prefix_roota(root, path); + r = readlink_malloc(full, &target); + if (r < 0) + return r; + + t = file_in_same_dir(path, target); + if (!t) + return -ENOMEM; + + *ret = t; + t = NULL; + + return 0; +} + int chmod_and_chown(const char *path, mode_t mode, uid_t uid, gid_t gid) { assert(path); |