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-bus: introduce sd_bus_slot objects encapsulating callbacks or vtables attached...
[elogind.git]
/
src
/
systemctl
/
systemctl.c
diff --git
a/src/systemctl/systemctl.c
b/src/systemctl/systemctl.c
index 7bc8ece0424c3f063caebe822424e292d0e58836..91d8032945fbe5899287a859f528f9d890a347ba 100644
(file)
--- a/
src/systemctl/systemctl.c
+++ b/
src/systemctl/systemctl.c
@@
-2305,6
+2305,7
@@
static int enable_wait_for_jobs(sd_bus *bus) {
r = sd_bus_add_match(
bus,
r = sd_bus_add_match(
bus,
+ NULL,
"type='signal',"
"sender='org.freedesktop.systemd1',"
"interface='org.freedesktop.systemd1.Manager',"
"type='signal',"
"sender='org.freedesktop.systemd1',"
"interface='org.freedesktop.systemd1.Manager',"
@@
-2364,13
+2365,14
@@
static int check_wait_response(WaitData *d) {
}
static int wait_for_jobs(sd_bus *bus, Set *s) {
}
static int wait_for_jobs(sd_bus *bus, Set *s) {
+ _cleanup_bus_slot_unref_ sd_bus_slot *slot = NULL;
WaitData d = { .set = s };
int r = 0, q;
assert(bus);
assert(s);
WaitData d = { .set = s };
int r = 0, q;
assert(bus);
assert(s);
- q = sd_bus_add_filter(bus, wait_filter, &d);
+ q = sd_bus_add_filter(bus,
&slot,
wait_filter, &d);
if (q < 0)
return log_oom();
if (q < 0)
return log_oom();
@@
-2398,10
+2400,6
@@
static int wait_for_jobs(sd_bus *bus, Set *s) {
d.result = NULL;
}
d.result = NULL;
}
- q = sd_bus_remove_filter(bus, wait_filter, &d);
- if (q < 0 && r == 0)
- r = q;
-
return r;
}
return r;
}
@@
-4285,7
+4283,7
@@
static int show_all(
_cleanup_free_ UnitInfo *unit_infos = NULL;
const UnitInfo *u;
unsigned c;
_cleanup_free_ UnitInfo *unit_infos = NULL;
const UnitInfo *u;
unsigned c;
- int r;
+ int r
, ret = 0
;
r = get_unit_list(bus, NULL, NULL, &unit_infos, 0, &reply);
if (r < 0)
r = get_unit_list(bus, NULL, NULL, &unit_infos, 0, &reply);
if (r < 0)
@@
-4307,9
+4305,11
@@
static int show_all(
r = show_one(verb, bus, p, show_properties, new_line, ellipsized);
if (r < 0)
return r;
r = show_one(verb, bus, p, show_properties, new_line, ellipsized);
if (r < 0)
return r;
+ else if (r > 0 && ret == 0)
+ ret = r;
}
}
- return
0
;
+ return
ret
;
}
static int show_system_status(sd_bus *bus) {
}
static int show_system_status(sd_bus *bus) {
@@
-4431,7
+4431,12
@@
static int show(sd_bus *bus, char **args) {
}
}
}
}
- show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized);
+ r = show_one(args[0], bus, unit, show_properties,
+ &new_line, &ellipsized);
+ if (r < 0)
+ return r;
+ else if (r > 0 && ret == 0)
+ ret = r;
}
if (!strv_isempty(patterns)) {
}
if (!strv_isempty(patterns)) {
@@
-4448,7
+4453,12
@@
static int show(sd_bus *bus, char **args) {
if (!unit)
return log_oom();
if (!unit)
return log_oom();
- show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized);
+ r = show_one(args[0], bus, unit, show_properties,
+ &new_line, &ellipsized);
+ if (r < 0)
+ return r;
+ else if (r > 0 && ret == 0)
+ ret = r;
}
}
}
}
}
}