fs-util: make symlink_idempotent() optionally create relative link
This commit is contained in:
committed by
Lennart Poettering
parent
bee13f2e49
commit
6c9c51e5e2
+16
-1
@@ -346,12 +346,27 @@ int touch(const char *path) {
|
||||
return touch_file(path, false, USEC_INFINITY, UID_INVALID, GID_INVALID, MODE_INVALID);
|
||||
}
|
||||
|
||||
int symlink_idempotent(const char *from, const char *to) {
|
||||
int symlink_idempotent(const char *from, const char *to, bool make_relative) {
|
||||
_cleanup_free_ char *relpath = NULL;
|
||||
int r;
|
||||
|
||||
assert(from);
|
||||
assert(to);
|
||||
|
||||
if (make_relative) {
|
||||
_cleanup_free_ char *parent = NULL;
|
||||
|
||||
parent = dirname_malloc(to);
|
||||
if (!parent)
|
||||
return -ENOMEM;
|
||||
|
||||
r = path_make_relative(parent, from, &relpath);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
from = relpath;
|
||||
}
|
||||
|
||||
if (symlink(from, to) < 0) {
|
||||
_cleanup_free_ char *p = NULL;
|
||||
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ int fd_warn_permissions(const char *path, int fd);
|
||||
int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
|
||||
int touch(const char *path);
|
||||
|
||||
int symlink_idempotent(const char *from, const char *to);
|
||||
int symlink_idempotent(const char *from, const char *to, bool make_relative);
|
||||
|
||||
int symlink_atomic(const char *from, const char *to);
|
||||
int mknod_atomic(const char *path, mode_t mode, dev_t dev);
|
||||
|
||||
Reference in New Issue
Block a user