From 74fb0cae63ff0baaaaac19f0624a76a3f869b847 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 22 Dec 2019 14:22:04 +0000 Subject: ntux_cmd_spawn(), ntux_cmd_strace(): pass-through exit code of child process. --- src/cmds/ntux_cmd_spawn.c | 5 ++++- src/cmds/ntux_cmd_strace.c | 5 ++++- src/driver/ntux_amain.c | 10 ++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/cmds/ntux_cmd_spawn.c b/src/cmds/ntux_cmd_spawn.c index f488e3e..c4486fc 100644 --- a/src/cmds/ntux_cmd_spawn.c +++ b/src/cmds/ntux_cmd_spawn.c @@ -45,8 +45,11 @@ int ntux_cmd_spawn(const struct ntux_driver_ctx * dctx) __sys_exit(0); /* parent */ + struct ntux_driver_ctx_impl * ictx = ntux_get_driver_ictx(dctx); + __sys_wait4( - pid,&status, + pid, + &ictx->cctx.status, 0,0); return 0; diff --git a/src/cmds/ntux_cmd_strace.c b/src/cmds/ntux_cmd_strace.c index bdc1308..a91e1d5 100644 --- a/src/cmds/ntux_cmd_strace.c +++ b/src/cmds/ntux_cmd_strace.c @@ -132,8 +132,11 @@ int ntux_cmd_strace(const struct ntux_driver_ctx * dctx) return NTUX_SYSTEM_ERROR(dctx); /* wait */ + struct ntux_driver_ctx_impl * ictx = ntux_get_driver_ictx(dctx); + __sys_wait4( - pid,&status, + pid, + &ictx->cctx.status, 0,0); return 0; diff --git a/src/driver/ntux_amain.c b/src/driver/ntux_amain.c index 5b6587e..ae4f8f8 100644 --- a/src/driver/ntux_amain.c +++ b/src/driver/ntux_amain.c @@ -12,6 +12,8 @@ #include "ntux_driver_impl.h" #include "ntux_nolibc_impl.h" +#include + #ifndef NTUX_DRIVER_FLAGS #define NTUX_DRIVER_FLAGS NTUX_DRIVER_VERBOSITY_ERRORS \ | NTUX_DRIVER_VERBOSITY_USAGE @@ -87,11 +89,15 @@ int ntux_main(char ** argv, char ** envp, const struct ntux_fd_ctx * fdctx) if ((ntux_version(dctx,fdout)) < 0) return ntux_exit(dctx,NTUX_ERROR); - if (dctx->cctx->cmd == NTUX_CMD_SPAWN) + if (dctx->cctx->cmd == NTUX_CMD_SPAWN) { ntux_cmd_spawn(dctx); + __xfi_exit(dctx->cctx->status); + } - if (dctx->cctx->cmd == NTUX_CMD_STRACE) + if (dctx->cctx->cmd == NTUX_CMD_STRACE) { ntux_cmd_strace(dctx); + __xfi_exit(dctx->cctx->status); + } for (unit=dctx->units; *unit; unit++) ntux_perform_unit_actions(dctx,*unit); -- cgit v1.2.3