Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 10385)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 10421)
@@ -210,15 +210,12 @@
         }
 
-        // XXXX this is very ad-hoc
-        // XXXX prepend the value config[WORKDIR] to the filename...
-        char *workdir = psMetadataLookupStr (NULL, config->site, "WORKDIR");
-        if (workdir) {
-            psStringPrepend (&file->filename, "%s/", workdir);
-        }
-
         psTrace ("pmFPAfile", 6, "got detrend file %s\n", file->filename);
         psFree (extra);
     }
-    // if () "neb://" -> get from neb...
+
+    // apply filename mangling rules (file://, path://, neb://, WORKDIR)
+    psString tmpName = pmConfigConvertFilename (file->filename, config);
+    psFree (file->filename);
+    file->filename = tmpName;
 
     switch (file->type) {
@@ -353,10 +350,10 @@
     case PM_FPA_FILE_CMP:
     case PM_FPA_FILE_CMF:
-        pmFPAviewReadObjects (view, file);
+        pmFPAviewReadObjects (view, file, config);
         psTrace ("pmFPAfile", 5, "reading %s (type: %d)\n", file->filename, file->type);
         break;
 
     case PM_FPA_FILE_PSF:
-        pmFPAviewReadPSFmodel (view, file);
+        pmFPAviewReadPSFmodel (view, file, config);
         psTrace ("pmFPAfile", 5, "reading %s (type: %d)\n", file->filename, file->type);
         break;
@@ -508,5 +505,5 @@
     case PM_FPA_FILE_CMF:
         psTrace ("pmFPAfile", 5, "writing object %s (fpa: %p)\n", file->filename, file->fpa);
-        if (!pmFPAviewWriteObjects (view, file)) {
+        if (!pmFPAviewWriteObjects (view, file, config)) {
             psError(PS_ERR_IO, false, "Failed to write object %s", file->filename);
             return false;
@@ -516,15 +513,15 @@
 
     case PM_FPA_FILE_PSF:
-        pmFPAviewWritePSFmodel (view, file);
+        pmFPAviewWritePSFmodel (view, file, config);
         psTrace ("pmFPAfile", 5, "wrote PSF %s (fpa: %p)\n", file->filename, file->fpa);
         break;
 
     case PM_FPA_FILE_JPEG:
-        pmFPAviewWriteJPEG (view, file);
+        pmFPAviewWriteJPEG (view, file, config);
         psTrace ("pmFPAfile", 5, "wrote JPEG %s (fpa: %p)\n", file->filename, file->fpa);
         break;
 
     case PM_FPA_FILE_MANAPLOT:
-        pmFPAviewWriteMANAPLOT (view, file);
+        pmFPAviewWriteMANAPLOT (view, file, config);
         psTrace ("pmFPAfile", 5, "wrote MANAPLOT %s (fpa: %p)\n", file->filename, file->fpa);
         break;
