Index: trunk/ippTasks/detrend.correct.pro
===================================================================
--- trunk/ippTasks/detrend.correct.pro	(revision 16531)
+++ trunk/ippTasks/detrend.correct.pro	(revision 17624)
@@ -134,5 +134,5 @@
     book getword detPendingCorrectedImfile $pageName corr_id   -var CORR_ID
     book getword detPendingCorrectedImfile $pageName corr_type -var CORR_TYPE
-    book getword detPendingCorrectedImfile $pageName workdir   -var WORKDIR
+    book getword detPendingCorrectedImfile $pageName workdir   -var WORKDIR_TEMPLATE
     book getword detPendingCorrectedImfile $pageName dbname    -var DBNAME
 
@@ -140,20 +140,22 @@
     set.host.for.camera $CAMERA $CLASS_ID
 
-    ## output log filename
-    if ("$WORKDIR" == "NULL")
-      $outpath = `pwd`
-    else
-      $outpath = `ipp_datapath.pl $WORKDIR`
-    end
-    sprintf outpath "%s/%s.%s.%s/%s" $outpath $CAMERA $DET_TYPE $DET_ID $EXP_TAG
-    sprintf outroot "%s/%s.detcorr.%s" $outpath $EXP_TAG $DET_ID
+    # set the WORKDIR variable
+    set.workdir.by.camera $CAMERA $CLASS_ID $WORKDIR_TEMPLATE $default_host WORKDIR
+
+    ## generate outroot specific to this exposure (& chip)
+    sprintf outroot "%s/%s.%s.%s/%s/%s.detcorr.%s" $WORKDIR $CAMERA $DET_TYPE $DET_ID $EXP_TAG $EXP_TAG $DET_ID
+
     $logfile = `ipp_filename.pl --filerule LOG.IMFILE --camera $CAMERA --class_id $CLASS_ID --basename $outroot`
     if ("$logfile" == "") 
-      sprintf logfile "%s.%s.log" $outroot $CLASS_ID
+      echo "WARNING: logfile not defined in detrend.correct.pro:150"
+      break
     end
 
     stdout $logfile
     stderr $logfile
-    exec mkdir -p $outpath
+    dirname $logfile -var outpath
+
+    # XXX I need to report the error if this fails...
+    mkdir $outpath
 
     $run = detrend_correct_imfile.pl --det_id $DET_ID --exp_id $EXP_ID --class_id $CLASS_ID --exp_tag $EXP_TAG --input_uri $URI --corr_id $CORR_ID --corr_type $CORR_TYPE --camera $CAMERA
@@ -261,5 +263,5 @@
     book getword detPendingCorrectedExp $pageName corr_id   -var CORR_ID
     book getword detPendingCorrectedExp $pageName corr_type -var CORR_TYPE
-    book getword detPendingCorrectedExp $pageName workdir   -var WORKDIR
+    book getword detPendingCorrectedExp $pageName workdir   -var WORKDIR_TEMPLATE
     book getword detPendingCorrectedExp $pageName dbname    -var DBNAME
 
@@ -267,12 +269,11 @@
     set.host.for.camera $camera FPA
 
-    # XXX push this into the filerules?
-    if ("$WORKDIR" == "NULL")
-      $outpath = `pwd`
-    else
-      $outpath = `ipp_datapath.pl $WORKDIR`
-    end
-    sprintf outpath "%s/%s.%s.%s/%s" $outpath $CAMERA $DET_TYPE $DET_ID $EXP_TAG
-    sprintf outroot "%s/%s.detcorr.%s" $outpath $EXP_TAG $DET_ID
+    # set workdir (interpolate host; see camera.pro for examples)
+    set.workdir.by.camera $CAMERA FPA $WORKDIR_TEMPLATE $default_host WORKDIR
+
+    ## generate outroot specific to this exposure (& chip)
+    sprintf outroot "%s/%s.%s.%s/%s/%s.detcorr.%s" $WORKDIR $CAMERA $DET_TYPE $DET_ID $EXP_TAG $EXP_TAG $DET_ID
+
+    ## generate output log based on filerule (convert the URI to a PATH)
     $logfile = `ipp_filename.pl --filerule LOG.EXP --camera $CAMERA --class_id NONE --basename $outroot`
     if ("$logfile" == "") 
@@ -282,5 +283,6 @@
     stdout $logfile
     stderr $logfile
-    exec mkdir -p $outpath
+    dirname $logfile -var outpath
+    mkdir $outpath
 
     $run = detrend_correct_exp.pl --det_id $DET_ID --exp_id $EXP_ID --exp_tag $EXP_TAG --det_type $DET_TYPE --camera $CAMERA --corr_id $CORR_ID --corr_type $CORR_TYPE --camera $CAMERA
