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);
+}