diff options
Diffstat (limited to 'src/driver/ntux_amain.c')
-rw-r--r-- | src/driver/ntux_amain.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/driver/ntux_amain.c b/src/driver/ntux_amain.c index b6719ff..22a1403 100644 --- a/src/driver/ntux_amain.c +++ b/src/driver/ntux_amain.c @@ -8,6 +8,7 @@ #include <unistd.h> #include <ntux/ntux.h> +#include "ntux_dprintf_impl.h" #include "ntux_driver_impl.h" #include "ntux_nolibc_impl.h" @@ -32,16 +33,16 @@ static const char * const ntux_ver_plain[6] = { "","" }; -static ssize_t ntux_version(struct ntux_driver_ctx * dctx) +static ssize_t ntux_version(struct ntux_driver_ctx * dctx, int fdout) { const struct ntux_source_version * verinfo; const char * const * verclr; verinfo = ntux_source_version(); - verclr = isatty(STDOUT_FILENO) ? ntux_ver_color : ntux_ver_plain; + verclr = isatty(fdout) ? ntux_ver_color : ntux_ver_plain; return ntux_dprintf( - STDOUT_FILENO,vermsg, + fdout,vermsg, verclr[0],dctx->program,verclr[1], verclr[2],verinfo->major,verinfo->minor, verinfo->revision,verclr[3], @@ -63,19 +64,24 @@ static int ntux_exit(struct ntux_driver_ctx * dctx, int ret) return ret; } -int ntux_main(int argc, char ** argv, char ** envp) +int ntux_main(int argc, char ** argv, char ** envp, const struct ntux_fd_ctx * fdctx) { int ret; + int fdout; + uint64_t flags; struct ntux_driver_ctx * dctx; const char ** unit; - if ((ret = ntux_get_driver_ctx(argv,envp,NTUX_DRIVER_FLAGS,&dctx))) + flags = NTUX_DRIVER_FLAGS; + fdout = fdctx ? fdctx->fdout : STDOUT_FILENO; + + if ((ret = ntux_get_driver_ctx(argv,envp,flags,fdctx,&dctx))) return (ret == NTUX_USAGE) ? !--argc : NTUX_ERROR; if (dctx->cctx->drvflags & NTUX_DRIVER_VERSION) - if ((ntux_version(dctx)) < 0) + if ((ntux_version(dctx,fdout)) < 0) return ntux_exit(dctx,NTUX_ERROR); if (dctx->cctx->cmd == NTUX_CMD_SPAWN) |