chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
path: follow symbolic link for parent path
[elogind.git]
/
src
/
shared
/
path-util.c
diff --git
a/src/shared/path-util.c
b/src/shared/path-util.c
index 67566bc76b2c8a0ad54b357ea41c0ad3736b49f2..9e2fd6434a988512f9d75ee2c0c3ea2a9535116a 100644
(file)
--- a/
src/shared/path-util.c
+++ b/
src/shared/path-util.c
@@
-129,7
+129,7
@@
char *path_make_absolute_cwd(const char *p) {
if (!cwd)
return NULL;
if (!cwd)
return NULL;
- return
path_make_absolute(p, cwd
);
+ return
strjoin(cwd, "/", p, NULL
);
}
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
}
int path_make_relative(const char *from_dir, const char *to_path, char **_r) {
@@
-306,6
+306,7
@@
char **path_strv_resolve(char **l, const char *prefix) {
} else {
/* canonicalized path goes outside of
* prefix, keep the original path instead */
} else {
/* canonicalized path goes outside of
* prefix, keep the original path instead */
+ free(u);
u = orig;
orig = NULL;
}
u = orig;
orig = NULL;
}
@@
-439,14
+440,14
@@
char* path_join(const char *root, const char *path, const char *rest) {
assert(path);
if (!isempty(root))
assert(path);
if (!isempty(root))
- return strjoin(root, "/",
+ return strjoin(root,
endswith(root, "/") ? "" :
"/",
path[0] == '/' ? path+1 : path,
path[0] == '/' ? path+1 : path,
- rest ?
"/"
: NULL,
+ rest ?
(endswith(path, "/") ? "" : "/")
: NULL,
rest && rest[0] == '/' ? rest+1 : rest,
NULL);
else
return strjoin(path,
rest && rest[0] == '/' ? rest+1 : rest,
NULL);
else
return strjoin(path,
- rest ?
"/"
: NULL,
+ rest ?
(endswith(path, "/") ? "" : "/")
: NULL,
rest && rest[0] == '/' ? rest+1 : rest,
NULL);
}
rest && rest[0] == '/' ? rest+1 : rest,
NULL);
}
@@
-518,7
+519,7
@@
fallback:
if (r < 0)
return r;
if (r < 0)
return r;
- r =
l
stat(parent, &b);
+ r = stat(parent, &b);
if (r < 0)
return -errno;
if (r < 0)
return -errno;
@@
-563,11
+564,11
@@
int path_is_os_tree(const char *path) {
return r >= 0;
}
return r >= 0;
}
-int find_binary(const char *name, char **filename) {
+int find_binary(const char *name,
bool local,
char **filename) {
assert(name);
if (is_path(name)) {
assert(name);
if (is_path(name)) {
- if (access(name, X_OK) < 0)
+ if (
local &&
access(name, X_OK) < 0)
return -errno;
if (filename) {
return -errno;
if (filename) {
@@
-657,7
+658,7
@@
int fsck_exists(const char *fstype) {
checker = strappenda("fsck.", fstype);
checker = strappenda("fsck.", fstype);
- r = find_binary(checker, &p);
+ r = find_binary(checker,
true,
&p);
if (r < 0)
return r;
if (r < 0)
return r;