Index: trunk/psLib/src/astronomy/psMetadata.c
===================================================================
--- trunk/psLib/src/astronomy/psMetadata.c	(revision 2664)
+++ trunk/psLib/src/astronomy/psMetadata.c	(revision 2681)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.42 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-07 23:27:25 $
+*  @version $Revision: 1.43 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-10 02:50:14 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -352,8 +352,6 @@
 {
     psList* mdList = NULL;
-    psList* entryList = NULL;
     psHash* mdTable = NULL;
     psMetadataItem* entry = NULL;
-    psMetadataItem* entryChild = NULL;
 
 
@@ -375,29 +373,4 @@
         }
 
-        if (entry->type == PS_META_LIST) {
-
-            // Table entry has children. Entry and children must be removed from metadata collection's list
-            psListSetIterator(entryList, PS_LIST_HEAD);
-            entryChild = psListGetCurrent(entryList);
-            while(entryChild != NULL) {
-                if (!psListRemove(mdList, PS_LIST_UNKNOWN, entryChild)) {
-                    psError(PS_ERR_UNKNOWN, false, PS_ERRORTEXT_psMetadata_REMOVE_LIST_FAILED, key);
-                    return false;
-                }
-                entryChild = psListGetNext(entryList);
-            }
-        } else {
-
-            // Table entry has no children. Remove entry from metadata collection's list
-            if (!psListRemove(mdList, PS_LIST_UNKNOWN, entry)) {
-                psError(PS_ERR_UNKNOWN, false, PS_ERRORTEXT_psMetadata_REMOVE_LIST_FAILED, key);
-                return false;
-            }
-        }
-        // Remove entry from metadata collection's table
-        if (!psHashRemove(mdTable, key)) {
-            psError(PS_ERR_UNKNOWN, false, PS_ERRORTEXT_psMetadata_REMOVE_TABLE_FAILED, key);
-            return false;
-        }
     } else {
 
@@ -414,6 +387,15 @@
             return false;
         }
-        // Use recursive remove, now that key is known
-        psMetadataRemove(md, PS_LIST_UNKNOWN, key);
+    }
+
+    if (!psListRemoveData(mdList, entry)) {
+        psError(PS_ERR_UNKNOWN, false, PS_ERRORTEXT_psMetadata_REMOVE_LIST_FAILED, key);
+        return false;
+    }
+
+    // Remove entry from metadata collection's table
+    if (!psHashRemove(mdTable, key)) {
+        psError(PS_ERR_UNKNOWN, false, PS_ERRORTEXT_psMetadata_REMOVE_TABLE_FAILED, key);
+        return false;
     }
 
Index: trunk/psLib/src/astronomy/psMetadataIO.c
===================================================================
--- trunk/psLib/src/astronomy/psMetadataIO.c	(revision 2664)
+++ trunk/psLib/src/astronomy/psMetadataIO.c	(revision 2681)
@@ -9,6 +9,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-12-06 19:59:57 $
+*  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-10 02:50:14 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -19,4 +19,5 @@
 #include <string.h>
 #include <ctype.h>
+#include <limits.h>
 
 #include "psAbort.h"
@@ -598,5 +599,5 @@
                 if(metadataItem->type!=PS_META_LIST) {
                     if(overwrite) {
-                        psMetadataRemove(md, PS_LIST_UNKNOWN, strName);
+                        psMetadataRemove(md, INT_MIN, strName);
                     } else {
                         (*nFail)++;
@@ -790,6 +791,5 @@
     PS_PTR_CHECK_NULL_GENERAL(metadataItem, return);
     PS_PTR_CHECK_NULL_GENERAL(metadataItem->data.list, return);
-    psListSetIterator(metadataItem->data.list, PS_LIST_TAIL);
-    metadataItem = (psMetadataItem*)psListGetCurrent(metadataItem->data.list);
+    metadataItem = (psMetadataItem*)psListGet(metadataItem->data.list,PS_LIST_TAIL);
     htAtts = (psHash*)metadataItem->data.list;
     PS_PTR_CHECK_NULL_GENERAL(htAtts, return);
@@ -848,5 +848,5 @@
             if(metadataItem->type != PS_META_LIST) {
                 if(overwrite) {
-                    psMetadataRemove(md, PS_LIST_UNKNOWN, strName);
+                    psMetadataRemove(md, INT_MIN, strName);
                 } else {
                     psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_OVERWRITE_ITEM, strName, lineNumber,
@@ -943,6 +943,5 @@
     PS_PTR_CHECK_NULL_GENERAL(tables, return);
     PS_PTR_CHECK_NULL_GENERAL(tables->data.list, return);
-    psListSetIterator(tables->data.list, PS_LIST_TAIL);
-    table = (psMetadataItem*)psListGetCurrent(tables->data.list);
+    table = (psMetadataItem*)psListGet(tables->data.list,PS_LIST_TAIL);
     htAtts = (psHash*)table->data.list;
     PS_PTR_CHECK_NULL_GENERAL(htAtts, return);
@@ -1002,5 +1001,5 @@
             if(metadataItem->type != PS_META_LIST) {
                 if(overwrite) {
-                    psMetadataRemove(md, PS_LIST_UNKNOWN, strName);
+                    psMetadataRemove(md, INT_MIN, strName);
                 } else {
                     psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_OVERWRITE_ITEM, strName, lineNumber,
@@ -1045,6 +1044,5 @@
     PS_PTR_CHECK_NULL_GENERAL(tables, return);
     PS_PTR_CHECK_NULL_GENERAL(tables->data.list, return);
-    psListSetIterator(tables->data.list, PS_LIST_TAIL);
-    table = (psMetadataItem*)psListGetCurrent(tables->data.list);
+    table = (psMetadataItem*)psListGet(tables->data.list,PS_LIST_TAIL);
     htAtts = (psHash*)table->data.list;
     PS_PTR_CHECK_NULL_GENERAL(htAtts, return);
@@ -1070,5 +1068,5 @@
 
     // Free temporary metadata item and its hash table
-    psListRemove(tables->data.list, PS_LIST_TAIL, table);
+    psListRemove(tables->data.list, PS_LIST_TAIL);
 
     psFree(psEndTagName);
