return retval;
}
+static int
+script_status(const char *script, int status)
+{
+
+ if (WIFEXITED(status)) {
+ if (WEXITSTATUS(status))
+ logerrx("%s: %s: WEXITSTATUS %d",
+ __func__, script, WEXITSTATUS(status));
+ } else if (WIFSIGNALED(status))
+ logerrx("%s: %s: %s",
+ __func__, script, strsignal(WTERMSIG(status)));
+
+ return WEXITSTATUS(status);
+}
+
static int
script_run(struct dhcpcd_ctx *ctx, char **argv)
{
break;
}
}
- if (WIFEXITED(status)) {
- if (WEXITSTATUS(status))
- logerrx("%s: %s: WEXITSTATUS %d",
- __func__, argv[0], WEXITSTATUS(status));
- } else if (WIFSIGNALED(status))
- logerrx("%s: %s: %s",
- __func__, argv[0], strsignal(WTERMSIG(status)));
+ status = script_status(argv[0], status);
}
return WEXITSTATUS(status);
#ifdef PRIVSEP
if (ctx->options & DHCPCD_PRIVSEP) {
- if (ps_root_script(ctx,
- ctx->script_buf, (size_t)buflen) == -1)
+ ssize_t err;
+
+ err = ps_root_script(ctx, ctx->script_buf, (size_t)buflen);
+ if (err == -1)
logerr(__func__);
+ else
+ script_status(ctx->script, (int)err);
goto send_listeners;
}
#endif