? psMetadataConfig_endian.patch
Index: src/types/psMetadataConfig.c
===================================================================
RCS file: /data/panstarrs/cvsroot/psLib/src/types/psMetadataConfig.c,v
retrieving revision 1.137
diff -u -p -r1.137 psMetadataConfig.c
--- src/types/psMetadataConfig.c	6 Jul 2007 02:07:57 -0000	1.137
+++ src/types/psMetadataConfig.c	6 Aug 2007 23:49:32 -0000
@@ -677,17 +677,9 @@ bool parseMetadataItem(char* keyName,
     char*                strComment    = NULL;
     psS32                status        = 0;
     psMetadata*          md            = NULL;
-    psF64                tempDbl       = 0.0;
-    bool               tempBool      = false;
-    psS64                tempInt       = 0;
-    psU64                tempUint      = 0;
-    psVector*            tempVec       = NULL;
-    char*                tempStr       = NULL;
     psArray*             nonUniqueKeys = NULL;
     psMetadata*          tempMeta      = NULL;
     p_psParseLevelInfo*  nextLevelInfo = NULL;
-    psTime *mTime;
-    psTimeType timeType = PS_TIME_TAI;
 
     long level = psArrayLength(levelArray) - 1;
 
@@ -844,177 +836,80 @@ bool parseMetadataItem(char* keyName,
         }
     }
 
+#define PARSE_ADD_CASE(NAME, TYPE, PARSEFUNC) \
+  case PS_DATA_##NAME: { \
+      ps##TYPE value = PARSEFUNC(strValue, &status); \
+      if (!status) { \
+          addStatus = psMetadataAdd##TYPE(md, PS_LIST_TAIL, keyName, flags, strComment, value); \
+      } else { \
+          psError(PS_ERR_IO, true, \
+                  _("Failed to parse the value '%s' of metadata item %s, type %s."), \
+                  strValue, keyName, strType); \
+          returnValue = false; \
+      } \
+      break; \
+  }
+
     // Need to add item to metadata so get pointer to metadata
     status = 0;
     md = ((p_psParseLevelInfo*)(levelArray->data[level]))->metadata;
     nonUniqueKeys = ((p_psParseLevelInfo*)(levelArray->data[level]))->nonUniqueKeyArray;
     switch(mdType) {
-    case PS_DATA_STRING:
-        addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                  mdType | flags,
-                                  strComment, strValue);
-        break;
-    case PS_DATA_BOOL:
-        tempBool = parseBool(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, tempBool);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
+        PARSE_ADD_CASE(BOOL,   Bool,   parseBool);
+        PARSE_ADD_CASE(F32,    F32,    parseDouble);
+        PARSE_ADD_CASE(F64,    F64,    parseDouble);
+        PARSE_ADD_CASE(S8,     S8,     parseSignedInt);
+        PARSE_ADD_CASE(S16,    S16,    parseSignedInt);
+        PARSE_ADD_CASE(S32,    S32,    parseSignedInt);
+        PARSE_ADD_CASE(S64,    S64,    parseSignedInt);
+        PARSE_ADD_CASE(U8,     U8,     parseUnsignedInt);
+        PARSE_ADD_CASE(U16,    U16,    parseUnsignedInt);
+        PARSE_ADD_CASE(U32,    U32,    parseUnsignedInt);
+        PARSE_ADD_CASE(U64,    U64,    parseUnsignedInt);
+      case PS_DATA_STRING:
+        addStatus = psMetadataAddStr(md, PS_LIST_TAIL, keyName, flags, strComment, strValue);
+        break;
+      case PS_DATA_TIME: {
+          psTimeType timeType = PS_TIME_TAI;
+          if(!strncmp(strType, "UTC", 3)) {
+              timeType = PS_TIME_UTC;
+          } else if(!strncmp(strType, "TAI", 3)) {
+              timeType = PS_TIME_TAI;
+          } else if(!strncmp(strType, "UT1", 3)) {
+              timeType = PS_TIME_UT1;
+          } else if(!strncmp(strType, "TT", 3)) {
+              timeType = PS_TIME_TT;
+          }
+
+          psTime *mTime = parseTime(strValue, timeType, &status);
+          if(!status) {
+              addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
+                                        mdType | flags,
+                                        strComment, mTime);
+          } else {
+              psError(PS_ERR_IO, true,
+                      _("Failed to parse the value '%s' of metadata item %s, type %s."),
                       strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_F32:
-    case PS_DATA_F64:
-        tempDbl = parseDouble(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, tempDbl);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
+              returnValue = false;
+          }
+          psFree(mTime);
+          break;
+      }
+      case PS_DATA_VECTOR: {
+          psVector *tempVec = parseVector(strValue, vectorType, &status);
+          if(!status) {
+              addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName+1,
+                                        mdType | flags,
+                                        strComment, tempVec);
+          } else {
+              psError(PS_ERR_IO, true,
+                      _("Failed to parse the value '%s' of metadata item %s, type %s."),
                       strValue, keyName, strType);
-            returnValue = false;
-        }
-        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,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            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,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S32:
-        tempInt = (psS32) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S64:
-        tempInt = (psS64) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            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,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            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,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            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,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_U64:
-        tempUint = (psU64)parseUnsignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempUint);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_TIME:
-        if(!strncmp(strType, "UTC", 3)) {
-            timeType = PS_TIME_UTC;
-        } else if(!strncmp(strType, "TAI", 3)) {
-            timeType = PS_TIME_TAI;
-        } else if(!strncmp(strType, "UT1", 3)) {
-            timeType = PS_TIME_UT1;
-        } else if(!strncmp(strType, "TT", 3)) {
-            timeType = PS_TIME_TT;
-        }
-
-        mTime = parseTime(strValue, timeType, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, mTime);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        psFree(mTime);
-        break;
-    case PS_DATA_VECTOR:
-        tempVec = parseVector(strValue, vectorType, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName+1,
-                                      mdType | flags,
-                                      strComment, tempVec);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        psFree(tempVec);
-        break;
+              returnValue = false;
+          }
+          psFree(tempVec);
+          break;
+      }
     case PS_DATA_METADATA_MULTI:
         // Add key to non-unique array of keys
         // Check for duplicate MULTI lines
@@ -1026,7 +921,7 @@ bool parseMetadataItem(char* keyName,
                 return false;
             }
         }
-        tempStr = psStringCopy(keyName);
+        psString tempStr = psStringCopy(keyName);
         nonUniqueKeys = psArrayAdd(nonUniqueKeys,0,tempStr);
         addStatus = true;
         psFree(tempStr);
@@ -1546,24 +1441,24 @@ static psString formatMetadataItem(psMet
         FORMAT_PRIMITIVE_METADATAITEM(F64, ".15g");
         break;
       case PS_DATA_STRING: {
-	  bool valid = false;
-	  if (item->data.str && strlen(item->data.str) > 0) {
-	      char *p = item->data.str;
-	      while (*p && isblank(*p)) p++;
-	      if (*p) valid = true;
-	  }
-	  if (valid) {
-	      psStringAppend(&content, "%-15s  %-8s  %-15s",
-			     item->name, "STR", item->data.str);
-	  } else {
-	      psStringAppend(&content, "%-15s  %-8s  %-15s",
-			     item->name, "STR", "NULL");
-	  }
-	  if (item->comment && strncmp(item->comment,"",2)) {
-	      psStringAppend(&content, "  # %s", item->comment);
-	  }
-	  psStringAppend(&content, " \n");
-	  break;
+          bool valid = false;
+          if (item->data.str && strlen(item->data.str) > 0) {
+              char *p = item->data.str;
+              while (*p && isblank(*p)) p++;
+              if (*p) valid = true;
+          }
+          if (valid) {
+              psStringAppend(&content, "%-15s  %-8s  %-15s",
+                             item->name, "STR", item->data.str);
+          } else {
+              psStringAppend(&content, "%-15s  %-8s  %-15s",
+                             item->name, "STR", "NULL");
+          }
+          if (item->comment && strncmp(item->comment,"",2)) {
+              psStringAppend(&content, "  # %s", item->comment);
+          }
+          psStringAppend(&content, " \n");
+          break;
       }
     case PS_DATA_METADATA: {
             if (item->comment && strncmp(item->comment,"",2)) {
