chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement drop-in directories
[elogind.git]
/
manager.c
diff --git
a/manager.c
b/manager.c
index 819164ca2ddb8d9c67d65d308bf9a1668059452e..682c7e7f26b451172563644618eff712ef9fe723 100644
(file)
--- a/
manager.c
+++ b/
manager.c
@@
-830,16
+830,19
@@
static void dispatch_load_queue(Manager *m) {
m->dispatching_load_queue = false;
}
m->dispatching_load_queue = false;
}
-int manager_load_unit(Manager *m, const char *
name
, Unit **_ret) {
+int manager_load_unit(Manager *m, const char *
path
, Unit **_ret) {
Unit *ret;
int r;
Unit *ret;
int r;
+ const char *name;
assert(m);
assert(m);
- assert(
name
);
+ assert(
path
);
assert(_ret);
/* This will load the service information files, but not actually
assert(_ret);
/* This will load the service information files, but not actually
- * start any services or anything */
+ * start any services or anything. */
+
+ name = file_name_from_path(path);
if ((ret = manager_get_unit(m, name))) {
*_ret = ret;
if ((ret = manager_get_unit(m, name))) {
*_ret = ret;
@@
-849,6
+852,13
@@
int manager_load_unit(Manager *m, const char *name, Unit **_ret) {
if (!(ret = unit_new(m)))
return -ENOMEM;
if (!(ret = unit_new(m)))
return -ENOMEM;
+ if (is_path(path)) {
+ if (!(ret->meta.load_path = strdup(path))) {
+ unit_free(ret);
+ return -ENOMEM;
+ }
+ }
+
if ((r = unit_add_name(ret, name)) < 0) {
unit_free(ret);
return r;
if ((r = unit_add_name(ret, name)) < 0) {
unit_free(ret);
return r;