Index: trunk/psModules/src/camera/pmFPAfile.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfile.c	(revision 7408)
+++ trunk/psModules/src/camera/pmFPAfile.c	(revision 7433)
@@ -21,5 +21,4 @@
 #include "pmPSF_IO.h"
 #include "pmFPA_JPEG.h"
-#define WERROR 0                        // if true, warnings in this file are treated as errors
 
 static void pmFPAfileFree(pmFPAfile *file)
@@ -29,4 +28,5 @@
     }
 
+    psTrace ("pmFPAfileFree", 5, "freeing %s\n", file->name);
     psFree (file->fpa);
     psFree (file->readout);
@@ -178,10 +178,12 @@
     file->fileDepth = depthNameToEnum(psMetadataLookupStr(&status, data, "FILE.DEPTH"));
     if (file->fileDepth == PM_FPA_DEPTH_NONE) {
-        psLogMsg (__func__, 3, "warning: FILE.DEPTH is not set for %s\n", name);
+        psError(PS_ERR_IO, true, "FILE.DEPTH is not set for %s\n", name);
+        return NULL;
     }
 
     file->dataDepth = depthNameToEnum(psMetadataLookupStr (&status, data, "DATA.DEPTH"));
     if (file->dataDepth == PM_FPA_DEPTH_NONE) {
-        psLogMsg (__func__, 3, "warning: DATA.DEPTH is not set for %s\n", name);
+        psError(PS_ERR_IO, true, "DATA.DEPTH is not set for %s\n", name);
+        return NULL;
     }
 
@@ -215,5 +217,6 @@
     }
     if (file->type == PM_FPA_FILE_NONE) {
-        psLogMsg (__func__, 3, "warning: FILE.TYPE is not defined for %s\n", name);
+        psError(PS_ERR_IO, true, "FILE.TYPE is not defined for %s\n", name);
+        return NULL;
     }
 
@@ -229,5 +232,6 @@
     }
     if (file->mode == PM_FPA_MODE_NONE) {
-        psLogMsg (__func__, 3, "warning: FILE.MODE is not defined for %s\n", name);
+        psError(PS_ERR_IO, true, "FILE.MODE is not defined for %s\n", name);
+        return NULL;
     }
 
@@ -242,4 +246,9 @@
         psMetadata *formats = psMetadataLookupMD(&status, camera, "FORMATS"); // List of formats
         char *formatFile = psMetadataLookupStr (&status, formats, formatName);
+        if (!formatFile) {
+            psError(PS_ERR_IO, false, "format %s for %s not defined", formatName, name);
+            psFree (file);
+            return NULL;
+        }
         readConfig (&file->format, formatFile, formatName);
     }
@@ -281,6 +290,6 @@
 
     if (file->state & PM_FPA_STATE_INACTIVE) {
-        psError(PS_ERR_IO, true, "Atempted to read an inactive file");
-        return false;
+        psTrace("pmFPAfile", 5, "skip open for %s, files is inactive", file->name);
+        return true;
     }
 
@@ -372,11 +381,11 @@
 
     if (file->state & PM_FPA_STATE_INACTIVE) {
-        psError(PS_ERR_IO, true, "Atempted to read an inactive file");
-        return false;
+        psTrace("pmFPAfile", 5, "skip read for %s, files is inactive", file->name);
+        return true;
     }
 
     if (file->mode != PM_FPA_MODE_READ) {
-        psError(PS_ERR_IO, true, "File isn't mode PM_FPA_MODE_READ");
-        return false;
+        psTrace("pmFPAfile", 5, "skip read for %s, mode is not READ", file->name);
+        return true;
     }
 
@@ -387,5 +396,5 @@
     if (depth == file->fileDepth) {
         if (!pmFPAfileOpen (file, view)) {
-            psError(PS_ERR_IO, false, "Opening file");
+            psError(PS_ERR_IO, false, "failed to open file %s", file->name);
             return false;
         }
@@ -394,13 +403,7 @@
     // do we need to read this file?
     if (depth != file->dataDepth) {
-        #if WERROR
-        psError(PS_ERR_IO, true, "Desired depth %s doesn't match dataDepth %s",
-                depthEnumToName(depth), depthEnumToName(file->dataDepth));
-        return false;
-        #else
-
-        return true;
-        #endif
-
+        psTrace("pmFPAfile", 5, "skip reading of %s at this depth %s: dataDepth is %s",
+                file->name, depthEnumToName(depth), depthEnumToName(file->dataDepth));
+        return true;
     }
 
@@ -445,11 +448,11 @@
 
     if (file->state & PM_FPA_STATE_INACTIVE) {
-        psError(PS_ERR_IO, true, "Atempted to write an inactive file");
-        return false;
+        psTrace("pmFPAfile", 5, "skip write for %s, files is inactive", file->name);
+        return true;
     }
 
     if (file->mode != PM_FPA_MODE_WRITE) {
-        psError(PS_ERR_IO, true, "File isn't mode PM_FPA_MODE_WRITE");
-        return false;
+        psTrace("pmFPAfile", 5, "skip write for %s, mode is not WRITE", file->name);
+        return true;
     }
 
@@ -459,13 +462,7 @@
     // do we need to write this file?
     if (depth != file->dataDepth) {
-        #if WERROR
-        psError(PS_ERR_IO, true, "Desired depth %s doesn't match dataDepth %s",
-                depthEnumToName(depth), depthEnumToName(file->dataDepth));
-        return false;
-        #else
-
-        return true;
-        #endif
-
+        psTrace("pmFPAfile", 5, "skip writing of %s at this depth %s: dataDepth is %s",
+                file->name, depthEnumToName(depth), depthEnumToName(file->dataDepth));
+        return true;
     }
 
@@ -520,11 +517,12 @@
     PS_ASSERT_PTR_NON_NULL(view, false);
 
+    // these are not error conditions; these are state tests
     if (file->state & PM_FPA_STATE_INACTIVE) {
-        psError(PS_ERR_IO, true, "Atempted to create an inactive file");
-        return false;
+        psTrace("pmFPAfile", 5, "skip create for inactive file %s", file->name);
+        return true;
     }
     if (file->mode != PM_FPA_MODE_WRITE) {
-        psError(PS_ERR_IO, true, "File isn't mode PM_FPA_MODE_WRITE");
-        return false;
+        psTrace("pmFPAfile", 5, "skip create for non-write file %s", file->name);
+        return true;
     }
 
@@ -532,21 +530,15 @@
     pmFPAdepth depth = pmFPAviewDepth (view);
 
-    // XXX is this a sufficient check to avoid creating elements?
+    // don't create the file if the src FPA is not defined
     if (file->src == NULL) {
-        #if WERROR
-        psError(PS_ERR_IO, true, "file->src is NULL");
-        return false;
-        #else
-
-        return true;
-        #endif
-
+        psTrace("pmFPAfile", 5, "skip create for FPA without src FPA for %s", file->name);
+        return true;
     }
 
     // do we need to write this file?
     if (depth != file->dataDepth) {
-        psError(PS_ERR_IO, true, "Desired depth %s doesn't match dataDepth %s",
-                depthEnumToName(depth), depthEnumToName(file->dataDepth));
-        return false;
+        psTrace("pmFPAfile", 5, "skip creation of %s at this depth %s: dataDepth is %s",
+                file->name, depthEnumToName(depth), depthEnumToName(file->dataDepth));
+        return true;
     }
 
@@ -555,5 +547,5 @@
         /* create a PHU for thie file, if it does not exist */
         pmFPAfileCopyStructureView (file->fpa, file->src, file->format, file->xBin, file->yBin, view);
-        psTrace ("pmFPAfile", 5, "created fpa data elements for %s (fpa: %p)\n", file->filename, file->fpa);
+        psTrace ("pmFPAfile", 5, "created fpa data elements for %s (fpa: %p)\n", file->name, file->fpa);
         break;
 
@@ -568,5 +560,5 @@
 
     default:
-        psError(PS_ERR_IO, true, "Unsupported type: %d", file->type);
+        psError(PS_ERR_IO, true, "Unsupported type for %s: %d", file->name, file->type);
         return false;
     }
@@ -580,6 +572,6 @@
 
     if (file->state & PM_FPA_STATE_INACTIVE) {
-        psError(PS_ERR_IO, true, "Atempted to close an inactive file");
-        return false;
+        psTrace("pmFPAfile", 5, "skip close for %s, files is inactive", file->name);
+        return true;
     }
     if (file->state == PM_FPA_STATE_CLOSED) {
@@ -590,13 +582,7 @@
     pmFPAdepth depth = pmFPAviewDepth (view);
     if (file->fileDepth != depth) {
-        #if WERROR
-        psError(PS_ERR_IO, true, "Desired depth %s doesn't match fileDepth %s",
-                depthEnumToName(depth), depthEnumToName(file->fileDepth));
-        return false;
-        #else
-
-        return true;
-        #endif
-
+        psTrace("pmFPAfile", 5, "skip closing of %s at this depth %s: dataDepth is %s",
+                file->name, depthEnumToName(depth), depthEnumToName(file->dataDepth));
+        return true;
     }
 
@@ -683,11 +669,11 @@
         switch (place) {
         case PM_FPA_BEFORE:
-            if (file->mode == PM_FPA_MODE_READ && !pmFPAfileRead (file, view)) {
-                psError(PS_ERR_IO, false, "failed in FPA_BEFORE block for %s", file->name);
+            if (!pmFPAfileRead (file, view)) {
+                psError(PS_ERR_IO, false, "failed READ in FPA_BEFORE block for %s", file->name);
                 psFree(iter);
                 return false;
             }
-            if (file->mode == PM_FPA_MODE_WRITE && !pmFPAfileCreate(file, view)) {
-                psError(PS_ERR_IO, false, "failed in FPA_BEFORE block for %s", file->name);
+            if (!pmFPAfileCreate(file, view)) {
+                psError(PS_ERR_IO, false, "failed CREATE in FPA_BEFORE block for %s", file->name);
                 psFree(iter);
                 return false;
@@ -695,11 +681,11 @@
             break;
         case PM_FPA_AFTER:
-            if (file->mode == PM_FPA_MODE_WRITE && !pmFPAfileWrite (file, view)) {
-                psError(PS_ERR_IO, false, "failed in FPA_AFTER block for %s", file->name);
+            if (!pmFPAfileWrite (file, view)) {
+                psError(PS_ERR_IO, false, "failed WRITE in FPA_AFTER block for %s", file->name);
                 psFree(iter);
                 return false;
             }
             if (!pmFPAfileClose(file, view)) {
-                psError(PS_ERR_IO, false, "failed in FPA_AFTER block for %s", file->name);
+                psError(PS_ERR_IO, false, "failed CLOSE in FPA_AFTER block for %s", file->name);
                 psFree(iter);
                 return false;
