Index: trunk/psLib/src/sys/psConfigure.c
===================================================================
--- trunk/psLib/src/sys/psConfigure.c	(revision 10284)
+++ trunk/psLib/src/sys/psConfigure.c	(revision 10286)
@@ -13,6 +13,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-11-29 20:24:19 $
+ *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-11-29 21:33:09 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -34,8 +34,25 @@
 static FILE *memCheckFile = NULL;       // File to which to write results of mem check
 
+static const char *cvsTag = "$Name: not supported by cvs2svn $"; // CVS tag name
+
 psString psLibVersion(void)
 {
-    psString version = NULL;
-    psStringAppend(&version, "%s-v%s",PACKAGE_NAME,PACKAGE_VERSION);
+    psString version = NULL;            // Version, to return
+    psStringAppend(&version, "%s-%s",PACKAGE_NAME,PACKAGE_VERSION);
+    return version;
+}
+
+psString psLibVersionLong(void)
+{
+    psString version = psLibVersion();    // Version, to return
+    psString tag = psStringStripCVS(cvsTag, "Name"); // CVS tag
+
+    psStringAppend(&version, " (cvs tag %s) compiled %s at %s with"
+                   #ifdef OMIT_PSDB
+                   "out"
+                   #endif
+                   " psDB", tag, __DATE__, __TIME__);
+
+    psFree(tag);
     return version;
 }
Index: trunk/psLib/src/sys/psConfigure.h
===================================================================
--- trunk/psLib/src/sys/psConfigure.h	(revision 10284)
+++ trunk/psLib/src/sys/psConfigure.h	(revision 10286)
@@ -13,6 +13,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-10-13 21:13:48 $
+ *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-11-29 21:33:09 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -30,9 +30,18 @@
  *  Returns the current psLib version name as a string.
  *
- *  @return char*: String with version name.
+ *  @return psString: String with version name.
  */
 psString psLibVersion(
     void
 );
+
+/** Get current psLib version (full identification)
+ *
+ *  Returns the current psLib version name and other information identifying the compilation.
+ *
+ *  @return psString: String with identity.
+ */
+psString psLibVersionLong(void);
+
 
 /** Initializes persistent memory.
Index: trunk/psLib/src/sys/psString.c
===================================================================
--- trunk/psLib/src/sys/psString.c	(revision 10284)
+++ trunk/psLib/src/sys/psString.c	(revision 10286)
@@ -13,6 +13,6 @@
  *  @author David Robbins, MHPCC
  *
- *  @version $Revision: 1.45 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-10-13 21:13:48 $
+ *  @version $Revision: 1.46 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-11-29 21:33:09 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -379,2 +379,31 @@
     return msg;
 }
+
+
+psString psStringStripCVS(const char *string, const char *tagName)
+{
+    PS_ASSERT_STRING_NON_EMPTY(string, NULL);
+    PS_ASSERT_STRING_NON_EMPTY(tagName, NULL);
+
+    psString tagString = NULL;          // Tag string, e.g., "$Name:" from "Name"
+    psStringAppend(&tagString, "$%s:", tagName);
+    char *p = strstr(string, tagString); // The start of the real tag
+    psFree(tagString);
+    if (!p) {
+        return psStringCopy("UNKNOWN");
+    }
+
+    psString tag = psStringCopy(string + 6); // The tag, without the leading tagString
+    p = strrchr(tag, '$');              // The closing dollar sign
+    if (p) {
+        *p = 0;
+    }
+    psStringStrip(tag);
+    if (*tag == 0) {
+        psFree(tag);
+        return psStringCopy("UNKNOWN");
+    }
+
+    return tag;
+}
+
Index: trunk/psLib/src/sys/psString.h
===================================================================
--- trunk/psLib/src/sys/psString.h	(revision 10284)
+++ trunk/psLib/src/sys/psString.h	(revision 10286)
@@ -14,6 +14,6 @@
  *  @author David Robbins, MHPCC
  *
- *  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-11-10 00:31:12 $
+ *  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-11-29 21:33:09 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -208,4 +208,8 @@
 );
 
+/// Given a CVS keyword string, strip off the CVS-specific keyword to get the value
+psString psStringStripCVS(const char *string, ///< The string, something like "$CVSKEYWORD: Value$"
+                          const char *tagName ///< The name of the tag to remove, something like "CVSKEYWORD"
+                         );
 
 #define PS_ASSERT_STRING_NON_EMPTY(NAME, RVAL) \
