Index: /trunk/ippScripts/scripts/inject.pl
===================================================================
--- /trunk/ippScripts/scripts/inject.pl	(revision 11137)
+++ /trunk/ippScripts/scripts/inject.pl	(revision 11138)
@@ -69,5 +69,5 @@
     }
     
-    my $command_exp = "$pxinject -newExp -exp_id $exp -inst $instrument -telescope $telescope -exp_type $type -imfiles 1 -outroot $outroot" ; # Command to run
+    my $command_exp = "$pxinject -newExp -exp_id $exp -inst $instrument -telescope $telescope -exp_type $type -imfiles 1 -workdir $outroot" ; # Command to run
 
     my ( $success_exp, $error_code_exp, $full_buf_exp, $stdout_buf_exp, $stderr_buf_exp ) =
Index: /trunk/ippTools/configure.ac
===================================================================
--- /trunk/ippTools/configure.ac	(revision 11137)
+++ /trunk/ippTools/configure.ac	(revision 11138)
@@ -16,5 +16,5 @@
 PKG_CHECK_MODULES([PSLIB], [pslib >= 0.12.99]) 
 PKG_CHECK_MODULES([PSMODULES], [psmodules >= 0.12.0]) 
-PKG_CHECK_MODULES([IPPDB], [ippdb >= 0.0.74]) 
+PKG_CHECK_MODULES([IPPDB], [ippdb >= 0.0.76]) 
 
 dnl check for PSDB support
Index: /trunk/ippTools/scripts/dettest.sh
===================================================================
--- /trunk/ippTools/scripts/dettest.sh	(revision 11137)
+++ /trunk/ippTools/scripts/dettest.sh	(revision 11138)
@@ -8,5 +8,5 @@
 
 #dettool -definebyquery -det_type flat -exp_type fooflat -filter foo -airmass 10 -exp_time 30.0 -ccd_temp 100 -posang 360 -object iobject || exit 1
-det_id=`dettool -definebyquery -det_type flat -exp_type fooflat -filter foo -airmass 10 -exp_time 30.0 -object iobject -simple | cut -f1 -d" "` || exit 1
+det_id=`dettool -definebyquery -det_type flat -exp_type fooflat -filter foo -airmass 10 -exp_time 30.0 -object iobject -workdir file::///some/path -simple | cut -f1 -d" "` || exit 1
 
 dettool -raw || exit 1
Index: /trunk/ippTools/scripts/regtest.sh
===================================================================
--- /trunk/ippTools/scripts/regtest.sh	(revision 11137)
+++ /trunk/ippTools/scripts/regtest.sh	(revision 11138)
@@ -8,5 +8,5 @@
 echo -e "YES\nipp\n\n" | pxadmin -recreate || exit 1
 
-exp_tag1=`$inject -newExp -exp_id t10 -inst gpc -telescope ps1 -exp_type object -imfiles 4 -simple` || exit 1
+exp_tag1=`$inject -newExp -exp_id t10 -inst gpc -telescope ps1 -exp_type object -imfiles 4 -workdir file::///some/path -simple` || exit 1
 
 for ID in `seq 0 3`; do
@@ -14,5 +14,5 @@
 done;
 
-exp_tag2=`$inject -newExp -exp_id t11 -inst gpc -telescope ps1 -exp_type object -imfiles 4 -simple` || exit 1
+exp_tag2=`$inject -newExp -exp_id t11 -inst gpc -telescope ps1 -exp_type object -imfiles 4 -workdir file::///some/path -simple` || exit 1
 
 for ID in `seq 0 3`; do
@@ -20,9 +20,15 @@
 done;
 
+$p0tool -pendingimfile || exit 1
+
 for ID in `seq 0 3`; do
     $p0tool -addprocessedimfile -exp_tag $exp_tag1 -exp_type object -class OTA -class_id $ID -filter r -airmass 10 -ra 1 -decl 2 -exp_time 0 -bg 1 -bg_stdev 1 -bg_mean_stdev 10 -alt 10 -az 10 -ccd_temp 10 -posang 10 -object dog -dateobs 2006-10-20T10:10:10Z || exit 1
 done;
 
+$p0tool -pendingexp|| exit 1
+
 $p0tool -addprocessedexp -exp_tag $exp_tag1 -filter r -airmass 10 -ra 1 -decl 2 -exp_type bias -exp_time 0 -bg 10 -bg_stdev 1 -bg_mean_stdev 10 -alt 10 -az 10 -ccd_temp 45 -posang 10 -object dog -dateobs "2006-10-20T10:10:10Z" -label foobar $* || exit 1
+
+$p0tool -pendingimfile || exit 1
 
 for ID in `seq 0 3`; do
@@ -30,3 +36,5 @@
 done;
 
+$p0tool -pendingexp|| exit 1
+
 $p0tool -addprocessedexp -exp_tag $exp_tag2 -filter r -airmass 11 -ra 1 -decl 2 -exp_type bias -exp_time 0 -bg 11 -bg_stdev 1 -bg_mean_stdev 11 -alt 11 -az 11 -ccd_temp 45 -posang 11 -object dog -dateobs 2006-10-20T10:10:10Z -label foobar $* || exit 1
Index: /trunk/ippTools/src/camtool.c
===================================================================
--- /trunk/ippTools/src/camtool.c	(revision 11137)
+++ /trunk/ippTools/src/camtool.c	(revision 11138)
@@ -91,5 +91,6 @@
             "SELECT"
             "   p3PendingExp.*,"
-            "   rawExp.camera"
+            "   rawExp.camera,"
+            "   rawExp.workdir"
             " FROM p3PendingExp"
             " JOIN rawExp"
@@ -165,5 +166,6 @@
             "SELECT"
             "   p2ProcessedImfile.*,"
-            "   rawExp.camera"   
+            "   rawExp.camera,"   
+            "   rawExp.workdir"   
             " FROM p3PendingExp"
             " JOIN rawExp"
@@ -467,5 +469,6 @@
             "SELECT"
             "   p3ProcessedExp.*,"
-            "   rawExp.camera"
+            "   rawExp.camera,"
+            "   rawExp.workdir"
             " FROM p3ProcessedExp"
             " JOIN rawExp"
Index: /trunk/ippTools/src/chiptool.c
===================================================================
--- /trunk/ippTools/src/chiptool.c	(revision 11137)
+++ /trunk/ippTools/src/chiptool.c	(revision 11138)
@@ -99,5 +99,6 @@
             "SELECT"
             "   p2PendingImfile.*,"
-            "   rawExp.camera"
+            "   rawExp.camera,"
+            "   rawExp.workdir"
             " FROM p2PendingImfile"
             " JOIN p2PendingExp"
@@ -353,5 +354,6 @@
             "SELECT"
             "   p2ProcessedImfile.*,"
-            "   rawExp.camera"
+            "   rawExp.camera,"
+            "   rawExp.workdir"
             " FROM p2ProcessedImfile"
             " JOIN rawExp"
Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 11137)
+++ /trunk/ippTools/src/dettool.c	(revision 11138)
@@ -234,4 +234,14 @@
     }
 
+    psString workdir = psMetadataLookupStr(&status, config->args, "-workdir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir");
+        return false;
+    }
+    if (!workdir) {
+        psError(PS_ERR_UNKNOWN, true, "-workdir is required");
+        return false;
+    }
+
     // optional
     psString mode = psMetadataLookupStr(&status, config->args, "-mode");
@@ -421,4 +431,5 @@
             "run",
             exp_type,
+            workdir,
             filter,
             airmass,
@@ -551,4 +562,14 @@
     if (!det_type) {
         psError(PS_ERR_UNKNOWN, true, "-det_type is required");
+        return false;
+    }
+
+    psString workdir = psMetadataLookupStr(&status, config->args, "-workdir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir");
+        return false;
+    }
+    if (!workdir) {
+        psError(PS_ERR_UNKNOWN, true, "-workdir is required");
         return false;
     }
@@ -859,4 +880,5 @@
             "run",
             exp_type,
+            workdir,
             filter,
             airmass,
@@ -1493,4 +1515,5 @@
             "   detRun.det_id,"
             "   detRun.det_type,"
+            "   detRun.workdir,"
             "   rawImfile.*,"
             "   rawExp.camera"
@@ -1791,5 +1814,6 @@
         "    det_type,"
         "    exp_tag,"
-        "    camera"
+        "    camera,"
+        "    workdir"
         " FROM"
         " (SELECT DISTINCT"
@@ -1797,4 +1821,5 @@
         "    detRun.iteration,"
         "    detRun.det_type,"
+        "    detRun.workdir,"
         "    detProcessedImfile.exp_tag,"
         "    rawExp.camera,"
@@ -2158,4 +2183,5 @@
         "    detRun.iteration,"
         "    detRun.det_type,"
+        "    detRun.workdir,"
         "    detProcessedImfile.class_id,"
         "    rawExp.camera"
@@ -2619,5 +2645,6 @@
         "   det_type,"
         "   iteration,"
-        "   camera"
+        "   camera,"
+        "   workdir"
         " FROM"
         "(SELECT DISTINCT"
@@ -2625,4 +2652,5 @@
         "   detRun.det_type,"
         "   detRun.iteration,"
+        "   detRun.workdir,"
         "   rawExp.camera,"
         "   rawExp.imfiles,"
@@ -2850,4 +2878,5 @@
         "SELECT DISTINCT"
         "   detRun.det_type,"
+        "   detRun.workdir,"
         "   rawExp.camera,"
         "   detStackedImfile.uri,"
@@ -3180,4 +3209,5 @@
         "    detRun.iteration,"
         "    detRun.det_type,"
+        "    detRun.workdir,"
         "    rawExp.camera,"
         "    rawExp.telescope,"
@@ -3618,4 +3648,5 @@
         "   detRun.det_type,\n"
         "   detRun.mode,\n"
+        "   detRun.workdir,\n"
         "   detProcessedImfile.exp_tag,\n"
         "   detProcessedImfile.class_id,\n"
@@ -3653,4 +3684,5 @@
         "   detRun.det_type,\n"
         "   detRun.mode,\n"
+        "   detRun.workdir,\n"
         "   rawImfile.exp_tag,\n"
         "   rawImfile.class_id,\n"
@@ -4264,4 +4296,5 @@
         "   include,\n"
         "   camera\n"
+        "   workdir\n"
         " FROM\n"
         "   (SELECT DISTINCT\n"
@@ -4270,4 +4303,5 @@
         "       detRun.det_type,\n"
         "       detRun.mode,\n"
+        "       detRun.workdir,\n"
         "       detInputExp.exp_tag,\n"
         "       detInputExp.include,\n"
@@ -5704,4 +5738,14 @@
     }
 
+    psString workdir = psMetadataLookupStr(&status, config->args, "-workdir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir");
+        return false;
+    }
+    if (!workdir) {
+        psError(PS_ERR_UNKNOWN, true, "-workdir is required");
+        return false;
+    }
+
     // everything else is optional
     psString mode = psMetadataLookupStr(&status, config->args, "-mode");
@@ -5833,4 +5877,5 @@
             "reg",
             exp_type,
+            workdir,
             filter,
             airmass,
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 11137)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 11138)
@@ -74,4 +74,6 @@
     psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-exp_type",  0,
             "define exposure type", NULL);
+    psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-workdir",  0,
+            "define workdir (required)", NULL);
     psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-filter",  0,
             "define filter ", NULL);
@@ -103,4 +105,6 @@
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-exp_type",  0,
             "define exposure type", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir",  0,
+            "define workdir (required)", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filter",  0,
             "define filter ", NULL);
@@ -150,4 +154,6 @@
     psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_type",  0,
             "define exposure type", NULL);
+    psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_workdir",  0,
+            "define workdir", NULL);
     psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_filter",  0,
             "define filter ", NULL);
@@ -651,4 +657,6 @@
     psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-exp_type",  0,
             "define exposure type", NULL);
+    psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-workdir",  0,
+            "define workdir (required)", NULL);
     psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-filter",  0,
             "define filter ", NULL);
Index: /trunk/ippTools/src/pxinject.c
===================================================================
--- /trunk/ippTools/src/pxinject.c	(revision 11137)
+++ /trunk/ippTools/src/pxinject.c	(revision 11138)
@@ -116,4 +116,14 @@
     if (!imfiles) {
         psError(PS_ERR_UNKNOWN, true, "-imfiles is required");
+        return false;
+    }
+
+    psString workdir = psMetadataLookupStr(&status, config->args, "-workdir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir");
+        return false;
+    }
+    if (!workdir) {
+        psError(PS_ERR_UNKNOWN, true, "-workdir is required");
         return false;
     }
@@ -148,5 +158,6 @@
                 dateobs,
                 exp_type,
-                imfiles
+                imfiles,
+                workdir
             )
         ) {
Index: /trunk/ippTools/src/pxinjectConfig.c
===================================================================
--- /trunk/ippTools/src/pxinjectConfig.c	(revision 11137)
+++ /trunk/ippTools/src/pxinjectConfig.c	(revision 11138)
@@ -56,4 +56,6 @@
     psMetadataAddS32(newExpArgs, PS_LIST_TAIL, "-imfiles",  0,
         "define the number of imfiles in this exp (required)", 0);
+    psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-workdir",  0,
+        "define workdir (required)", 0);
     psMetadataAddBool(newExpArgs, PS_LIST_TAIL, "-simple",  0,
         "use the simple output format", false);
Index: /trunk/ippTools/src/regtool.c
===================================================================
--- /trunk/ippTools/src/regtool.c	(revision 11137)
+++ /trunk/ippTools/src/regtool.c	(revision 11138)
@@ -113,5 +113,6 @@
     psString query = psStringCopy(
         "SELECT\n"
-        "   newImfile.*\n"
+        "   newImfile.*,\n"
+        "   newExp.workdir\n"
         " FROM newImfile\n"
         " LEFT JOIN newExp\n"
@@ -1014,8 +1015,11 @@
     rawExpRow *raw = rawExpRowAlloc(
         exp->exp_tag,
+        exp->exp_id,
         exp->camera,
         exp->telescope,
+        dateobs,
         exp_type,
         exp->imfiles,
+        exp->workdir,
         filter,
         airmass,
@@ -1031,5 +1035,4 @@
         posang,
         object,
-        dateobs,
         code
     );
Index: /trunk/ippTools/src/warptool.c
===================================================================
--- /trunk/ippTools/src/warptool.c	(revision 11137)
+++ /trunk/ippTools/src/warptool.c	(revision 11138)
@@ -104,4 +104,14 @@
     }
 
+    psString workdir = psMetadataLookupStr(&status, config->args, "-workdir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir");
+        return false;
+    }
+    if (!workdir) {
+        psError(PS_ERR_UNKNOWN, true, "-workdir is required");
+        return false;
+    }
+
     psString filter = psMetadataLookupStr(&status, config->args, "-filter");
     if (!status) {
@@ -188,4 +198,5 @@
             survey_mode,
             "run",
+            workdir,
             filter,
             skycell_id,
@@ -292,5 +303,6 @@
         " SELECT DISTINCT"
         "   p4InputImfile.p4_id,"
-        "   p2ProcessedImfile.*"
+        "   p2ProcessedImfile.*,"
+        "   p4Run.workdir"
         " FROM p4Run"
         " JOIN p4InputImfile"
@@ -507,5 +519,6 @@
     psString query = psStringCopy(
         " SELECT DISTINCT"
-        "   p4WarpedImfile.*"
+        "   p4WarpedImfile.*,"
+        "   p4Run.workdir"
         " FROM p4Run"
         " JOIN p4WarpedImfile"
@@ -695,5 +708,6 @@
         " SELECT DISTINCT"
         "   p4StackedImfile.*,"
-        "   p4WarpedImfile.uri as warped_uri"
+        "   p4WarpedImfile.uri as warped_uri,"
+        "   p4Run.workdir"
         " FROM p4Run"
         " JOIN p4StackedImfile"
Index: /trunk/ippTools/src/warptoolConfig.c
===================================================================
--- /trunk/ippTools/src/warptoolConfig.c	(revision 11137)
+++ /trunk/ippTools/src/warptoolConfig.c	(revision 11138)
@@ -50,4 +50,6 @@
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-survey_mode", 0,
             "define the type of suvery (required)", NULL);
+    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0,
+            "define workdir (required)", NULL);
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-filter",  0,
             "define filter (required)", NULL);
