Index: /trunk/psLib/src/types/psMetadataConfig.c
===================================================================
--- /trunk/psLib/src/types/psMetadataConfig.c	(revision 7467)
+++ /trunk/psLib/src/types/psMetadataConfig.c	(revision 7468)
@@ -10,6 +10,6 @@
 *  @author Eric Van Alst, MHPCC
 *
-*  @version $Revision: 1.59 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-06-09 02:35:17 $
+*  @version $Revision: 1.60 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-06-10 01:27:52 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -218,6 +218,6 @@
 // Returns single parsed value as a double precision number. The input string must be cleaned and null
 // terminated.
-static double parseValue(char *inString,
-                         psS32 *status)
+static double parseDouble(char *inString,
+                          psS32 *status)
 {
     char *end = NULL;
@@ -225,4 +225,40 @@
 
     value = strtod(inString, &end);
+    if(*end != '\0') {
+        *status = 1;
+    } else if(inString==end) {
+        *status = 1;
+    }
+
+    return value;
+}
+
+// Returns single parsed value as a long signed int. The input string must be cleaned and null
+// terminated.
+static long int parseSignedInt(char *inString,
+                               psS32 *status)
+{
+    char *end = NULL;
+    psS32 value = 0;
+
+    value = strtol(inString, &end, 0);
+    if(*end != '\0') {
+        *status = 1;
+    } else if(inString==end) {
+        *status = 1;
+    }
+
+    return value;
+}
+
+// Returns single parsed value as a double precision number. The input string must be cleaned and null
+// terminated.
+static unsigned long int parseUnsignedInt(char *inString,
+        psS32 *status)
+{
+    char *end = NULL;
+    psU32 value = 0;
+
+    value = strtoul(inString, &end, 0);
     if(*end != '\0') {
         *status = 1;
@@ -649,4 +685,5 @@
     psBool               tempBool      = false;
     psS32                tempInt       = 0;
+    psU32                tempUint       = 0;
     psVector*            tempVec       = NULL;
     char*                tempStr       = NULL;
@@ -706,6 +743,16 @@
         } else if(!strncmp(strType, "BOOL", 4)) {
             mdType = PS_DATA_BOOL;
+        } else if(!strncmp(strType, "S8", 2)) {
+            mdType = PS_DATA_S8;
+        } else if(!strncmp(strType, "S16", 3)) {
+            mdType = PS_DATA_S16;
         } else if(!strncmp(strType, "S32", 3)) {
             mdType = PS_DATA_S32;
+        } else if(!strncmp(strType, "U8", 2)) {
+            mdType = PS_DATA_U8;
+        } else if(!strncmp(strType, "U16", 3)) {
+            mdType = PS_DATA_U16;
+        } else if(!strncmp(strType, "U32", 3)) {
+            mdType = PS_DATA_U32;
         } else if(!strncmp(strType, "F32", 3)) {
             mdType = PS_DATA_F32;
@@ -817,5 +864,5 @@
     case PS_DATA_F32:
     case PS_DATA_F64:
-        tempDbl = parseValue(strValue, &status);
+        tempDbl = parseDouble(strValue, &status);
         if(!status) {
             addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
@@ -829,10 +876,58 @@
         }
         break;
+    case PS_DATA_S8:
+        tempInt = (psS8) parseSignedInt(strValue, &status);
+        if(!status) {
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempInt);
+        } else {
+            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
+                    strType, lineCount, fileName);
+            returnValue = false;
+        }
+        break;
+    case PS_DATA_S16:
+        tempInt = (psS16) parseSignedInt(strValue, &status);
+        if(!status) {
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempInt);
+        } else {
+            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
+                    strType, lineCount, fileName);
+            returnValue = false;
+        }
+        break;
     case PS_DATA_S32:
-        tempInt = (psS32)parseValue(strValue, &status);
+        tempInt = (psS32) parseSignedInt(strValue, &status);
         if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, tempInt);
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempInt);
+        } else {
+            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
+                    strType, lineCount, fileName);
+            returnValue = false;
+        }
+        break;
+    case PS_DATA_U8:
+        tempUint = (psU8)parseUnsignedInt(strValue, &status);
+        if(!status) {
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempUint);
+        } else {
+            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
+                    strType, lineCount, fileName);
+            returnValue = false;
+        }
+        break;
+    case PS_DATA_U16:
+        tempUint = (psU16)parseUnsignedInt(strValue, &status);
+        if(!status) {
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempUint);
+        } else {
+            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
+                    strType, lineCount, fileName);
+            returnValue = false;
+        }
+        break;
+    case PS_DATA_U32:
+        tempUint = (psU32)parseUnsignedInt(strValue, &status);
+        if(!status) {
+            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags, strComment, tempUint);
         } else {
             psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, keyName,
