Index: /trunk/psLib/src/types/psMetadataConfig.c
===================================================================
--- /trunk/psLib/src/types/psMetadataConfig.c	(revision 9867)
+++ /trunk/psLib/src/types/psMetadataConfig.c	(revision 9868)
@@ -10,6 +10,6 @@
 *  @author Eric Van Alst, MHPCC
 *
-*  @version $Revision: 1.107 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-11-04 03:15:43 $
+*  @version $Revision: 1.108 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-11-06 22:31:31 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -660,5 +660,5 @@
                                     break;
                                 }
-                 
+
                                 // Add item to metadata
                                 if(!psMetadataAddItem(md, mdItem, PS_LIST_TAIL, PS_META_DEFAULT)) {
@@ -1169,10 +1169,18 @@
                     }
                 }
+
+                char *strValue = NULL;
+                strValue = getToken(&linePtr, "#", &status,true);
+                char *strComment = NULL;
+                strComment = getToken(&linePtr,"~", &status,true);
+
                 // Add metadata to upper level metadata
                 addStatus = psMetadataAdd(upperLevelInfo->metadata,
                                           PS_LIST_TAIL,lowerLevelInfo->name,
                                           PS_DATA_METADATA | flags,
-                                          "",
+                                          strComment, //"",
                                           lowerLevelInfo->metadata);
+                psFree(strValue);
+                psFree(strComment);
                 if(!addStatus) {
                     psFree(keyName);
Index: /trunk/psLib/test/pstap/src/pstap.h
===================================================================
--- /trunk/psLib/test/pstap/src/pstap.h	(revision 9867)
+++ /trunk/psLib/test/pstap/src/pstap.h	(revision 9868)
@@ -25,4 +25,7 @@
 ok(strcmp(VALUE, EXPECT) == 0, COMMENT, ## __VA_ARGS__);
 
+# define ok_strn(VALUE,EXPECT,N,COMMENT, ...)\
+ok(strncmp(VALUE, EXPECT, N) == 0, COMMENT, ## __VA_ARGS__);
+
 #elif __STDC_VERSION__ >= 199901L /* __GNUC__ */
 
@@ -38,4 +41,7 @@
 ok(strcmp(VALUE, EXPECT) == 0, __VA_ARGS__);
 
+# define ok_strn(VALUE,EXPECT,N, ...)\
+ok(strncmp(VALUE, EXPECT, N) == 0, __VA_ARGS__);
+
 #else /* __STDC_VERSION__ */
 # error "Needs gcc or C99 compiler for variadic macros."
Index: /trunk/psLib/test/types/metaconf.in
===================================================================
--- /trunk/psLib/test/types/metaconf.in	(revision 9867)
+++ /trunk/psLib/test/types/metaconf.in	(revision 9868)
@@ -62,8 +62,8 @@
       @VECTORNEW S32 1 2 3 4 5   # Newest VECTOR
       cell             STR       pStArRs          # I am a p-Star
-   END  # I AM Newest METADATA
+   END  # I am a metadata
    ITEM02           F32       666.6            # I AM FLOAT
    ITEM03           F64       666.666          # I AM DOUBLE
-END  # I am a metadata
+END
 
      TYPE  C32  3
Index: /trunk/psLib/test/types/tap_psArguments_all.c
===================================================================
--- /trunk/psLib/test/types/tap_psArguments_all.c	(revision 9867)
+++ /trunk/psLib/test/types/tap_psArguments_all.c	(revision 9868)
@@ -23,5 +23,5 @@
 int main(void)
 {
-    plan_tests(39);
+    plan_tests(27);
 
     diag("Tests for psArguments Functions");
Index: /trunk/psLib/test/types/tap_psMetadataConfig_input.c
===================================================================
--- /trunk/psLib/test/types/tap_psMetadataConfig_input.c	(revision 9867)
+++ /trunk/psLib/test/types/tap_psMetadataConfig_input.c	(revision 9868)
@@ -74,5 +74,4 @@
     {
         out = psMetadataConfigRead(out, &nfail, "metaconf.in", false);
-        //        psMetadataPrint(NULL, out, 2);
         psMetadataItem *tempItem = psMetadataGet(out, PS_LIST_HEAD);
         ok( out != NULL,
Index: /trunk/psLib/test/types/tap_psMetadataConfig_output.c
===================================================================
--- /trunk/psLib/test/types/tap_psMetadataConfig_output.c	(revision 9867)
+++ /trunk/psLib/test/types/tap_psMetadataConfig_output.c	(revision 9868)
@@ -25,5 +25,5 @@
 int main(void)
 {
-    plan_tests(20);
+    plan_tests(25);
 
     diag("Tests for psMetadataConfig Output Functions");
@@ -181,11 +181,19 @@
             "psMetadataConfigWrite:           return false for empty metadata input.");
     }
-    //    psMetadataAddS32(md, PS_LIST_HEAD, "new S32", 0, "", 666);
-    psFree(md);
-    md = setupMeta();
     //Return true for valid inputs
     {
+        psFree(md);
+        md = setupMeta();
         ok( psMetadataConfigWrite(md, "mdcfg.wrt"),
             "psMetadataConfigWrite:           return true for valid inputs.");
+        char configTest[61];
+        char fileStr[62];
+        FILE *mdcfg = fopen("mdcfg.wrt", "r");
+        fgets(fileStr, 61, mdcfg);
+        strncpy(configTest,
+                "item1-1          BOOL      T                # I am a boolean", 60);
+        ok_strn(configTest, fileStr, 60,
+                "psMetadataConfigWrite:           return correct output.");
+        fclose(mdcfg);
     }
 
@@ -228,17 +236,29 @@
     {
         ok( !psMetadataConfigPrint(nofile, md),
-            "psMetadataConfigPrint:           return false for read-only FILE* input.");
-    }
+            "psMetadataConfigPrint:          return false for read-only FILE* input.");
+    }
+    fclose(nofile);
     //Return true for valid inputs
     {
         ok( psMetadataConfigPrint(openfile, md),
             "psMetadataConfigPrint:          return true for valid inputs.");
-    }
-
+        fclose(openfile);
+        char configTest[32];
+        char fileStr2[62];
+        FILE *mdcfg = fopen("mdcfg.prt", "r");
+        fgets(fileStr2, 31, mdcfg);
+        while (strlen(fileStr2) < 10)
+        {
+            fgets(fileStr2, 31, mdcfg);
+        }
+        strncpy(configTest,
+                "new S32          S32       666 ", 31);
+        ok_strn(configTest, fileStr2, 30,
+                "psMetadataConfigWrite:          return correct output.");
+        fclose(mdcfg);
+    }
 
     //Check for Memory leaks
     {
-        fclose(nofile);
-        fclose(openfile);
         psFree(md);
         remove
@@ -248,8 +268,7 @@
 }
 
-
 void testMetaConfigFormat(void)
 {
-    diag("  >>>Test 1:  psMetadataConfigFormat");
+    diag("  >>>Test 3:  psMetadataConfigFormat");
     psMetadata *md = NULL;
     psString out = NULL;
@@ -292,5 +311,5 @@
         psFree(md);
     }
-    //Return false for attempting to format vector with type = complex
+    //Return NULL for attempting to format vector with type = complex
     {
         psVector *vec = psVectorAlloc(60, PS_TYPE_C64);
@@ -307,5 +326,5 @@
         psFree(vec);
     }
-    //Return false for attempting to format psTime with type = -1
+    //Return NULL for attempting to format psTime with type = -1
     {
         psFree(md);
@@ -320,5 +339,5 @@
         psFree(time);
     }
-    //Return true for attempting to format NULL psTime metadataItem
+    //Return valid metadata for attempting to format NULL psTime metadataItem
     {
         psFree(md);
@@ -333,9 +352,13 @@
             "psMetadataConfigFormat:         return valid metadata for metadata "
             "containing a NULL time.");
+        char configTest[32];
+        strncpy(configTest, "time             TAI       NULL", 31);
+        ok_strn(configTest, out, 31,
+                "psMetadataConfigFormat:         return correct output string.");
         psFree(time);
         psFree(out);
         out = NULL;
     }
-    //Return true for attempting to format NULL psTime metadataItem
+    //Return valid metadata for attempting to format NULL psTime metadataItem
     {
         psFree(md);
@@ -347,8 +370,12 @@
             "psMetadataConfigFormat:         return valid metadata for metadata "
             "containing a NULL time.");
+        char configTest[62];
+        strncpy(configTest, "new_S32 MULTI\nnew_S32          S32       666", 61);
+        ok_strn(configTest, out, strlen(configTest),
+                "psMetadataConfigFormat:         return correct output string.");
         psFree(out);
         out = NULL;
     }
-    //Return true for attempting to format NULL psTime metadataItem
+    //Return valid metadata for attempting to format NULL psTime metadataItem
     {
         psFree(md);
@@ -358,33 +385,21 @@
         psMetadataAddS32(md, PS_LIST_TAIL, "f32", PS_META_DUPLICATE_OK, "f32_2", 665);
         out = psMetadataConfigFormat(md);
-        //        printf("\n%s\n", out);
         ok( out != NULL,
             "psMetadataConfigFormat:         return valid metadata for metadata "
             "containing a NULL time.");
+        char configTest[201];
+        strncpy(configTest,
+                "f32 MULTI"
+                "\nf32              S32       666              # f32_1"
+                "\nf32              S32       666              # f32_3"
+                "\nf32              S32       665              # f32_2", 200);
+        ok_strn(configTest, out, strlen(configTest),
+                "psMetadataConfigFormat:         return correct output string.");
         psFree(out);
         out = NULL;
     }
 
-    /*    //Return true for valid inputs
-    {
-    skip_start(  !psMetadataConfigWrite(md, "mdcfg.wrt"), 2,
-    "Skipping 2 tests because psMetadataConfigWrite failed");
-    out = psMetadataConfigRead(out, &nfail, "mdcfg.wrt", false);
-    psMetadataItem *tempItem = psMetadataGet(out, PS_LIST_HEAD);
-    ok( out != NULL && nfail == 0,
-    "psMetadataConfigRead:           return correct metadata for valid inputs.");
-    skip_start(  tempItem == NULL, 1,
-    "Skipping 1 tests because metadata container is empty!");
-    ok_str( tempItem->name, "new_S32",
-    "psMetadataConfigRead:           return correct metadataItem from "
-    "returned metadata.");
-    skip_end();
-    skip_end();
-    }
-    */
     //Check for Memory leaks
     {
-        //        psFree(out);
-        //        remove("mdcfg.wrt");
         psFree(md);
         checkMem();
