From fe600eac2be9bd09d6c9746cf273a7eaed4e6f7f Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 13 Sep 2021 09:54:18 +0000 Subject: seatd-launch: exit with status >128 if child is signalled Mimick shells and exit with a status >128 if our child has been signalled. Exiting with 128 + signal number is what most shells do (POSIX only requires them to exit with >128). --- man/seatd-launch.1.scd | 8 ++++++++ seatd-launch/seatd-launch.c | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/man/seatd-launch.1.scd b/man/seatd-launch.1.scd index d882ba5..9234203 100644 --- a/man/seatd-launch.1.scd +++ b/man/seatd-launch.1.scd @@ -38,6 +38,14 @@ superior to it for two reasons: . The specified command never runs as root . The standard seatd executable and libseat backend is used +# EXIT STATUS + +seatd-launch exits with the status of its child. When the child terminates on +a signal _N_, seatd-launch exits with the status 128 + _N_. + +If seatd-launch fails because of another error, it exits with a non-zero +status. + # SEE ALSO The libseat library, **, *seatd*(1) diff --git a/seatd-launch/seatd-launch.c b/seatd-launch/seatd-launch.c index 1877c98..ba61f5d 100644 --- a/seatd-launch/seatd-launch.c +++ b/seatd-launch/seatd-launch.c @@ -166,8 +166,10 @@ int main(int argc, char *argv[]) { if (WIFEXITED(status)) { return WEXITSTATUS(status); + } else if (WIFSIGNALED(status)) { + return 128 + WTERMSIG(status); } else { - return 1; + abort(); // unreachable } error_seatd: -- cgit v1.2.3