Mercurial > hg > minc-tools
changeset 1647:ebda59014519
Added support for ARGV_VERSION and ARGV_VERINFO
author | bert <bert> |
---|---|
date | Mon, 02 Feb 2004 18:22:07 +0000 |
parents | e7b768342f0b |
children | 0cac26818ef9 |
files | libsrc/ParseArgv.c |
diffstat | 1 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libsrc/ParseArgv.c +++ b/libsrc/ParseArgv.c @@ -16,11 +16,11 @@ * * This file has been modified to not rely on tcl, tk or X11. * Based on tkArgv.c from tk2.3 : -static char rcsid[] = "$Header: /private-cvsroot/minc/libsrc/ParseArgv.c,v 6.2 2002-10-30 13:53:02 jason Exp $ SPRITE (Berkeley)"; +static char rcsid[] = "$Header: /private-cvsroot/minc/libsrc/ParseArgv.c,v 6.3 2004-02-02 18:22:07 bert Exp $ SPRITE (Berkeley)"; * * Modifications by Peter Neelin (November 27, 1992) */ - +#include "config.h" #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -38,6 +38,8 @@ static ArgvInfo defaultTable[] = { {"-help", ARGV_HELP, (char *) NULL, (char *) NULL, "Print summary of command-line options and abort"}, + {"-version", ARGV_VERSION, (char *) NULL, (char *) NULL, + "Print version number of program and exit"}, {NULL, ARGV_END, (char *) NULL, (char *) NULL, (char *) NULL} }; @@ -47,6 +49,7 @@ */ static void PrintUsage _ANSI_ARGS_((ArgvInfo *argTable, int flags)); +static void PrintVersion(ArgvInfo *argTable); /* *---------------------------------------------------------------------- @@ -285,6 +288,9 @@ case ARGV_HELP: PrintUsage (argTable, flags); return TRUE; + case ARGV_VERSION: + PrintVersion(argTable); + return FALSE; default: FPRINTF(stderr, "bad argument type %d in ArgvInfo", infoPtr->type); @@ -374,6 +380,9 @@ for (i = 0; ; i++) { for (infoPtr = i ? defaultTable : argTable; infoPtr->type != ARGV_END; infoPtr++) { + if (infoPtr->type == ARGV_VERINFO) { + continue; + } if ((infoPtr->type == ARGV_HELP) && (infoPtr->key == NULL)) { FPRINTF(stderr, "\n%s", infoPtr->help); continue; @@ -441,3 +450,21 @@ FPRINTF(stderr, "\n"); } + +static void PrintVersion(ArgvInfo *argTable) +{ + char *versionStr = VERSION; + + for ( ; argTable->type != ARGV_END; argTable++) { + if (argTable->type == ARGV_VERINFO) { + /* Version information found? */ + if (argTable->src != NULL) { + versionStr = argTable->src; + break; + } + } + } + printf("program: %s\n", versionStr); + printf("libminc: %s\n", miget_version()); + exit(0); +}