mirror of
https://github.com/systemd/systemd.git
synced 2026-08-03 14:40:31 +00:00
machine: introduce report_errno_and_exit()
This commit is contained in:
@@ -154,3 +154,18 @@ Operation *operation_free(Operation *o) {
|
||||
|
||||
return mfree(o);
|
||||
}
|
||||
|
||||
_noreturn_ void report_errno_and_exit(int errno_fd, int r) {
|
||||
if (r >= 0)
|
||||
_exit(EXIT_SUCCESS);
|
||||
|
||||
assert(errno_fd >= 0);
|
||||
|
||||
ssize_t n = write(errno_fd, &r, sizeof(r));
|
||||
if (n < 0)
|
||||
log_debug_errno(errno, "Failed to write operation's errno: %m");
|
||||
if (n != sizeof(r))
|
||||
log_debug_errno(SYNTHETIC_ERRNO(EIO), "Sent unexpectedly short message");
|
||||
|
||||
_exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@@ -39,3 +39,5 @@ static inline int operation_new_with_bus_reply(Manager *manager, Machine *machin
|
||||
static inline int operation_new_with_varlink_reply(Manager *manager, Machine *machine, pid_t child, sd_varlink *link, int errno_fd, Operation **ret) {
|
||||
return operation_new(manager, machine, child, /* message = */ NULL, link, errno_fd, ret);
|
||||
}
|
||||
|
||||
void report_errno_and_exit(int errno_fd, int r);
|
||||
|
||||
Reference in New Issue
Block a user