chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: remove union dirent_storage
[elogind.git]
/
src
/
run
/
run.c
diff --git
a/src/run/run.c
b/src/run/run.c
index 3fb72e61035c79749009d832c45307bd3f44d8f7..2e0cd1a6d228792064ff6b2279cd1f904a9f1e09 100644
(file)
--- a/
src/run/run.c
+++ b/
src/run/run.c
@@
-28,6
+28,7
@@
#include "build.h"
#include "unit-name.h"
#include "path-util.h"
#include "build.h"
#include "unit-name.h"
#include "path-util.h"
+#include "bus-error.h"
static bool arg_scope = false;
static bool arg_remain_after_exit = false;
static bool arg_scope = false;
static bool arg_remain_after_exit = false;
@@
-177,6
+178,10
@@
static int message_start_transient_unit_new(sd_bus *bus, const char *name, sd_bu
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
int r;
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
int r;
+ assert(bus);
+ assert(name);
+ assert(ret);
+
log_info("Running as unit %s.", name);
r = sd_bus_message_new_method_call(
log_info("Running as unit %s.", name);
r = sd_bus_message_new_method_call(
@@
-225,11
+230,18
@@
static int message_start_transient_unit_new(sd_bus *bus, const char *name, sd_bu
static int message_start_transient_unit_send(sd_bus *bus, sd_bus_message *m, sd_bus_error *error, sd_bus_message **reply) {
int r;
static int message_start_transient_unit_send(sd_bus *bus, sd_bus_message *m, sd_bus_error *error, sd_bus_message **reply) {
int r;
+ assert(bus);
+ assert(m);
+
r = sd_bus_message_close_container(m);
if (r < 0)
return r;
r = sd_bus_message_close_container(m);
if (r < 0)
return r;
- return sd_bus_send_with_reply_and_block(bus, m, 0, error, reply);
+ r = sd_bus_message_append(m, "a(sa(sv))", 0);
+ if (r < 0)
+ return r;
+
+ return sd_bus_call(bus, m, 0, error, reply);
}
static int start_transient_service(
}
static int start_transient_service(
@@
-237,7
+249,7
@@
static int start_transient_service(
char **argv,
sd_bus_error *error) {
char **argv,
sd_bus_error *error) {
- _cleanup_bus_message_unref_ sd_bus_message *m = NULL
, *reply = NULL
;
+ _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *name = NULL;
char **i;
int r;
_cleanup_free_ char *name = NULL;
char **i;
int r;
@@
-315,7
+327,7
@@
static int start_transient_service(
if (r < 0)
return r;
if (r < 0)
return r;
- return
message_start_transient_unit_send(bus, m, error, &reply
);
+ return
message_start_transient_unit_send(bus, m, error, NULL
);
}
static int start_transient_scope(
}
static int start_transient_scope(
@@
-323,10
+335,12
@@
static int start_transient_scope(
char **argv,
sd_bus_error *error) {
char **argv,
sd_bus_error *error) {
- _cleanup_bus_message_unref_ sd_bus_message *m = NULL
, *reply = NULL
;
+ _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *name = NULL;
int r;
_cleanup_free_ char *name = NULL;
int r;
+ assert(bus);
+
if (arg_unit)
name = unit_name_mangle_with_suffix(arg_unit, ".scope");
else
if (arg_unit)
name = unit_name_mangle_with_suffix(arg_unit, ".scope");
else
@@
-342,7
+356,7
@@
static int start_transient_scope(
if (r < 0)
return r;
if (r < 0)
return r;
- r = message_start_transient_unit_send(bus, m, error,
&reply
);
+ r = message_start_transient_unit_send(bus, m, error,
NULL
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-352,7
+366,7
@@
static int start_transient_scope(
}
int main(int argc, char* argv[]) {
}
int main(int argc, char* argv[]) {
- sd_bus_error error = SD_BUS_ERROR_NULL;
+
_cleanup_bus_error_free_
sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_bus_unref_ sd_bus *bus = NULL;
_cleanup_free_ char *description = NULL, *command = NULL;
int r;
_cleanup_bus_unref_ sd_bus *bus = NULL;
_cleanup_free_ char *description = NULL, *command = NULL;
int r;
@@
-391,11
+405,8
@@
int main(int argc, char* argv[]) {
r = start_transient_scope(bus, argv + optind, &error);
else
r = start_transient_service(bus, argv + optind, &error);
r = start_transient_scope(bus, argv + optind, &error);
else
r = start_transient_service(bus, argv + optind, &error);
- if (r < 0) {
- log_error("Failed start transient unit: %s", error.message ? error.message : strerror(-r));
- sd_bus_error_free(&error);
- goto finish;
- }
+ if (r < 0)
+ log_error("Failed start transient unit: %s", bus_error_message(&error, r));
finish:
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
finish:
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;