/***********************************************************/ /* ntux: native translation und extension */ /* Copyright (C) 2016 Z. Gilboa */ /* Released under GPLv2 and GPLv3; see COPYING.NTUX. */ /***********************************************************/ #include #include #include #include "ntux_driver_impl.h" #include "ntux_nolibc_impl.h" #ifndef NTUX_DRIVER_FLAGS #define NTUX_DRIVER_FLAGS NTUX_DRIVER_VERBOSITY_ERRORS \ | NTUX_DRIVER_VERBOSITY_USAGE #endif static const char vermsg[] = "%s%s%s (git://midipix.org/ntux): " "version %s%d.%d.%d%s.\n" "[commit reference: %s%s%s]\n"; static const char * const ntux_ver_color[6] = { "\x1b[1m\x1b[35m","\x1b[0m", "\x1b[1m\x1b[32m","\x1b[0m", "\x1b[1m\x1b[34m","\x1b[0m" }; static const char * const ntux_ver_plain[6] = { "","", "","", "","" }; static ssize_t ntux_version(struct ntux_driver_ctx * dctx) { const struct ntux_source_version * verinfo; const char * const * verclr; verinfo = ntux_source_version(); verclr = isatty(STDOUT_FILENO) ? ntux_ver_color : ntux_ver_plain; return fprintf(stdout,vermsg, verclr[0],dctx->program,verclr[1], verclr[2],verinfo->major,verinfo->minor, verinfo->revision,verclr[3], verclr[4],verinfo->commit,verclr[5]); } static int ntux_exit(struct ntux_driver_ctx * dctx, int ret) { ntux_free_driver_ctx(dctx); return ret; } int ntux_main(int argc, char ** argv, char ** envp) { int ret; struct ntux_driver_ctx * dctx; if ((ret = ntux_get_driver_ctx(argv,envp,NTUX_DRIVER_FLAGS,&dctx))) return (ret == NTUX_USAGE) ? !--argc : NTUX_ERROR; if (dctx->cctx->drvflags & NTUX_DRIVER_VERSION) if ((ntux_version(dctx)) < 0) return ntux_exit(dctx,NTUX_ERROR); return ntux_exit(dctx,dctx->errv[0] ? NTUX_ERROR : NTUX_OK); }