# define WCOREDUMP(x) ((x) & 0x80)
#endif
+/* W_EXITCODE is not POSIX but the encoding of wait status is. */
+#ifndef W_EXITCODE
+# define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
+#endif
+
/* Number of bits in a byte. */
#ifndef NBBY
# ifdef __NBBY
/*
* Run the command and wait for it to complete.
+ * Returns wait status suitable for use with the wait(2) macros.
*/
int
run_command(struct command_details *details)
{
struct plugin_container *plugin;
struct command_status cstat;
- int status = 1;
+ int status = W_EXITCODE(1, 0);
debug_decl(run_command, SUDO_DEBUG_EXEC)
cstat.type = CMD_INVALID;
"calling I/O close with errno %d", cstat.val);
iolog_close(plugin, 0, cstat.val);
}
- status = 1;
break;
case CMD_WSTATUS:
/* Command ran, exited or was killed. */