chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kdbus: when uploading bus name policy, resolve users/groups out-of-process
[elogind.git]
/
src
/
shared
/
path-util.c
diff --git
a/src/shared/path-util.c
b/src/shared/path-util.c
index 2f38c1096b642d1b15cb741016401221066951be..5863429c311d483f81a88a8076bbb295ae25e8e9 100644
(file)
--- a/
src/shared/path-util.c
+++ b/
src/shared/path-util.c
@@
-135,7
+135,6
@@
char *path_make_absolute_cwd(const char *p) {
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
char *r, *p;
unsigned n_parents;
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
char *r, *p;
unsigned n_parents;
- size_t to_path_len;
assert(from_dir);
assert(to_path);
assert(from_dir);
assert(to_path);
@@
-168,6
+167,8
@@
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
if (!r)
return -ENOMEM;
if (!r)
return -ENOMEM;
+ path_kill_slashes(r);
+
*_r = r;
return 0;
}
*_r = r;
return 0;
}
@@
-202,21
+203,15
@@
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
n_parents++;
}
n_parents++;
}
- to_path_len = strlen(to_path);
-
- r = malloc(n_parents * 3 + to_path_len);
+ r = malloc(n_parents * 3 + strlen(to_path) + 1);
if (!r)
return -ENOMEM;
for (p = r; n_parents > 0; n_parents--, p += 3)
memcpy(p, "../", 3);
if (!r)
return -ENOMEM;
for (p = r; n_parents > 0; n_parents--, p += 3)
memcpy(p, "../", 3);
- if (to_path_len > 0)
- memcpy(p, to_path, to_path_len);
- else
- /* "to_path" is a parent directory of "from_dir". Let's remove
- * the redundant slash from the end of the result. */
- *(p - 1) = 0;
+ strcpy(p, to_path);
+ path_kill_slashes(r);
*_r = r;
return 0;
*_r = r;
return 0;