chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-dhcp-server: add basic NAK support
[elogind.git]
/
src
/
shared
/
install.c
diff --git
a/src/shared/install.c
b/src/shared/install.c
index 2822e6188009c595c37482deddc8378a02766b91..487d0f660d40b6f13d3be1435e9d4a65a6dd187c 100644
(file)
--- a/
src/shared/install.c
+++ b/
src/shared/install.c
@@
-47,7
+47,9
@@
typedef struct {
#define _cleanup_install_context_done_ _cleanup_(install_context_done)
#define _cleanup_install_context_done_ _cleanup_(install_context_done)
-static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) {
+static int lookup_paths_init_from_scope(LookupPaths *paths,
+ UnitFileScope scope,
+ const char *root_dir) {
assert(paths);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(paths);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
@@
-57,6
+59,7
@@
static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope)
return lookup_paths_init(paths,
scope == UNIT_FILE_SYSTEM ? SYSTEMD_SYSTEM : SYSTEMD_USER,
scope == UNIT_FILE_USER,
return lookup_paths_init(paths,
scope == UNIT_FILE_SYSTEM ? SYSTEMD_SYSTEM : SYSTEMD_USER,
scope == UNIT_FILE_USER,
+ root_dir,
NULL, NULL, NULL);
}
NULL, NULL, NULL);
}
@@
-701,7
+704,7
@@
int unit_file_link(
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1473,7
+1476,7
@@
int unit_file_enable(
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1513,7
+1516,7
@@
int unit_file_disable(
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1577,7
+1580,7
@@
int unit_file_set_default(
if (unit_name_to_type(file) != UNIT_TARGET)
return -EINVAL;
if (unit_name_to_type(file) != UNIT_TARGET)
return -EINVAL;
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1617,7
+1620,7
@@
int unit_file_get_default(
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(name);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(name);
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1675,12
+1678,13
@@
UnitFileState unit_file_get_state(
if (!unit_name_is_valid(name, TEMPLATE_VALID))
return -EINVAL;
if (!unit_name_is_valid(name, TEMPLATE_VALID))
return -EINVAL;
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
STRV_FOREACH(i, paths.unit_path) {
struct stat st;
if (r < 0)
return r;
STRV_FOREACH(i, paths.unit_path) {
struct stat st;
+ char *partial;
free(path);
path = NULL;
free(path);
path = NULL;
@@
-1689,10
+1693,14
@@
UnitFileState unit_file_get_state(
asprintf(&path, "%s/%s/%s", root_dir, *i, name);
else
asprintf(&path, "%s/%s", *i, name);
asprintf(&path, "%s/%s/%s", root_dir, *i, name);
else
asprintf(&path, "%s/%s", *i, name);
-
if (!path)
return -ENOMEM;
if (!path)
return -ENOMEM;
+ if (root_dir)
+ partial = path + strlen(root_dir) + 1;
+ else
+ partial = path;
+
/*
* Search for a unit file in our default paths, to
* be sure, that there are no broken symlinks.
/*
* Search for a unit file in our default paths, to
* be sure, that there are no broken symlinks.
@@
-1724,7
+1732,7
@@
UnitFileState unit_file_get_state(
else if (r > 0)
return state;
else if (r > 0)
return state;
- r = unit_file_can_install(&paths, root_dir, pa
th
, true);
+ r = unit_file_can_install(&paths, root_dir, pa
rtial
, true);
if (r < 0 && errno != ENOENT)
return r;
else if (r > 0)
if (r < 0 && errno != ENOENT)
return r;
else if (r > 0)
@@
-1832,7
+1840,7
@@
int unit_file_preset(
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1902,7
+1910,7
@@
int unit_file_get_list(
if (root_dir && scope != UNIT_FILE_SYSTEM)
return -EINVAL;
if (root_dir && scope != UNIT_FILE_SYSTEM)
return -EINVAL;
- r = lookup_paths_init_from_scope(&paths, scope);
+ r = lookup_paths_init_from_scope(&paths, scope
, root_dir
);
if (r < 0)
return r;
if (r < 0)
return r;