Index: /branches/end_stage/ippTools/src/chiptool.c
===================================================================
--- /branches/end_stage/ippTools/src/chiptool.c	(revision 16087)
+++ /branches/end_stage/ippTools/src/chiptool.c	(revision 16088)
@@ -140,10 +140,6 @@
     // convert exp_id into a psS64
 {
-    bool status = false;
-    psString var = psMetadataLookupStr(&status, config->args, "-exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(var, config->args, "-exp_id", false, false);
+
     if (var) {
         if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", 0, "==", (psS64)atoll(var))) {
@@ -197,46 +193,11 @@
     }
 
-    bool status = false;
-    psString workdir = psMetadataLookupStr(&status, config->args, "-set_workdir");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_workdir");
-        return false;
-    }
-
-    psString label = psMetadataLookupStr(&status, config->args, "-set_label");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_label");
-        return false;
-    }
-
-    psString reduction = psMetadataLookupStr(&status, config->args, "-set_reduction");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_reduction");
-        return false;
-    }
-
-    psString expgroup = psMetadataLookupStr(&status, config->args, "-set_expgroup");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_expgroup");
-        return false;
-    }
-
-    psString dvodb = psMetadataLookupStr(&status, config->args, "-set_dvodb");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_dvodb");
-        return false;
-    }
-
-    psString tess_id = psMetadataLookupStr(&status, config->args, "-set_tess_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_tess_id");
-        return false;
-    }
-
-    psString end_stage = psMetadataLookupStr(&status, config->args, "-set_end_stage");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_end_stage");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false);
+    PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);
+    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
+    PXOPT_LOOKUP_STR(expgroup, config->args, "-set_expgroup", false, false);
+    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false);
+    PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false);
+    PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false);
 
     // find the exp_id of all the exposures that we want to queue up.
@@ -284,4 +245,5 @@
         psMetadata *md = output->data[i];
 
+        bool status;
         psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id");
         if (!status) {
@@ -316,10 +278,6 @@
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
-    bool status = false;
-    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
-        return false;
-    }
+    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
+    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
 
     // XXX does this need to be constrained so that it won't return any results
@@ -362,14 +320,4 @@
     }
 
-    bool simple = false;
-    {
-        bool status = false;
-        simple = psMetadataLookupBool(&status, config->args, "-simple");
-        if (!status) {
-            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
-            return false;
-        }
-    }
-
     if (!convertIdToStr(output)) {
         psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
@@ -395,163 +343,33 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
     // chip_id, ext_tag, class_id are required
-    psString chip_id = psMetadataLookupStr(&status, config->args, "-chip_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -chip_id");
-        return false;
-    }
-    if (!chip_id) {
-        psError(PS_ERR_UNKNOWN, true, "-chip_id is required");
-        return false;
-    }
-
-    psString exp_id = psMetadataLookupStr(&status, config->args, "-exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id");
-        return false;
-    }
-    if (!exp_id) {
-        psError(PS_ERR_UNKNOWN, true, "-exp_id is required");
-        return false;
-    }
-
-    psString class_id = psMetadataLookupStr(&status, config->args, "-class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id");
-        return false;
-    }
-    if (!class_id) {
-        psError(PS_ERR_UNKNOWN, true, "-class_id is required");
-        return false;
-    }
-
-    psString uri = psMetadataLookupStr(&status, config->args, "-uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri");
-        return false;
-    }
-
-    psF32 bg = psMetadataLookupF32(&status, config->args, "-bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg");
-        return false;
-    }
-
-    psF32 bg_stdev = psMetadataLookupF32(&status, config->args, "-bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_stdev");
-        return false;
-    }
-
-    psF32 bg_mean_stdev = psMetadataLookupF32(&status, config->args, "-bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_mean_stdev");
-        return false;
-    }
-
-    psF32 bias = psMetadataLookupF32(&status, config->args, "-bias");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bias");
-        return false;
-    }
-
-    psF32 bias_stdev = psMetadataLookupF32(&status, config->args, "-bias_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bias_stdev");
-        return false;
-    }
-
-    psF32 fringe_0 = psMetadataLookupF32(&status, config->args, "-fringe_0");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fringe_0");
-        return false;
-    }
-
-    psF32 fringe_1 = psMetadataLookupF32(&status, config->args, "-fringe_1");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fringe_1");
-        return false;
-    }
-
-    psF32 fringe_2 = psMetadataLookupF32(&status, config->args, "-fringe_2");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fringe_2");
-        return false;
-    }
-
-    psF32 sigma_ra = psMetadataLookupF32(&status, config->args, "-sigma_ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -sigma_ra");
-        return false;
-    }
-
-    psF32 sigma_dec = psMetadataLookupF32(&status, config->args, "-sigma_dec");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -sigma_dec");
-        return false;
-    }
-
-    psF32 ap_resid = psMetadataLookupF32(&status, config->args, "-ap_resid");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ap_resid");
-        return false;
-    }
-
-    psF32 ap_resid_stdev = psMetadataLookupF32(&status, config->args, "-ap_resid_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ap_resid_stdev");
-        return false;
-    }
-
-    psF32 fwhm = psMetadataLookupF32(&status, config->args, "-fwhm");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fwhm");
-        return false;
-    }
-
-    psF32 fwhm_range = psMetadataLookupF32(&status, config->args, "-fwhm_range");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fwhm_range");
-        return false;
-    }
-
-    psS32 n_stars = psMetadataLookupS32(&status, config->args, "-n_stars");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -n_stars");
-        return false;
-    }
-
-    psS32 n_extended = psMetadataLookupS32(&status, config->args, "-n_extended");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -n_extended");
-        return false;
-    }
-
-    psS32 n_cr = psMetadataLookupS32(&status, config->args, "-n_cr");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -n_cr");
-        return false;
-    }
-
-    psS32 n_astrom = psMetadataLookupS32(&status, config->args, "-n_astrom");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -n_astrom");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", true, false);
+    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);
 
     // optional
-    psString path_base = psMetadataLookupStr(&status, config->args, "-path_base");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -path_base");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false);
+    PXOPT_LOOKUP_F32(bg, config->args, "-bg", false, false);
+    PXOPT_LOOKUP_F32(bg_stdev, config->args, "-bg_stdev", false, false);
+    PXOPT_LOOKUP_F32(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);
+    PXOPT_LOOKUP_F32(bias, config->args, "-bias", false, false);
+    PXOPT_LOOKUP_F32(bias_stdev, config->args, "-bias_stdev", false, false);
+    PXOPT_LOOKUP_F32(fringe_0, config->args, "-fringe_0", false, false);
+    PXOPT_LOOKUP_F32(fringe_1, config->args, "-fringe_1", false, false);
+    PXOPT_LOOKUP_F32(fringe_2, config->args, "-fringe_2", false, false);
+    PXOPT_LOOKUP_F32(sigma_ra, config->args, "-sigma_ra", false, false);
+    PXOPT_LOOKUP_F32(sigma_dec, config->args, "-sigma_dec", false, false);
+    PXOPT_LOOKUP_F32(ap_resid, config->args, "-ap_resid", false, false);
+    PXOPT_LOOKUP_F32(ap_resid_stdev, config->args, "-ap_resid_stdev", false, false);
+    PXOPT_LOOKUP_F32(fwhm, config->args, "-fwhm", false, false);
+    PXOPT_LOOKUP_F32(fwhm_range, config->args, "-fwhm_range", false, false);
+    PXOPT_LOOKUP_F32(n_stars, config->args, "-n_stars", false, false);
+    PXOPT_LOOKUP_F32(n_extended, config->args, "-n_extended", false, false);
+    PXOPT_LOOKUP_F32(n_cr, config->args, "-n_cr", false, false);
+    PXOPT_LOOKUP_F32(n_astrom, config->args, "-n_astrom", false, false);
+    PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);
 
     // default values
-    psS16 code = psMetadataLookupS16(&status, config->args, "-code");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code");
-        return false;
-    }
+    PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);
 
     if (!psDBTransaction(config->dbh)) {
@@ -633,16 +451,7 @@
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
-    bool status = false;
-    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
-        return false;
-    }
-
-    bool faulted = psMetadataLookupU64(&status, config->args, "-faulted");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -faulted");
-        return false;
-    }
+    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
+    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
+    PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
 
     // XXX does this need to be constrained so that it won't return any results
@@ -693,14 +502,4 @@
     }
 
-    bool simple = false;
-    {
-        bool status = false;
-        simple = psMetadataLookupBool(&status, config->args, "-simple");
-        if (!status) {
-            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
-            return false;
-        }
-    }
-
     if (!convertIdToStr(output)) {
         psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
@@ -756,14 +555,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psS16 code = psMetadataLookupS16(&status, config->args, "-code");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code");
-        return false;
-    }
-    if (code == INT16_MAX) {
-        psError(PS_ERR_UNKNOWN, true, "-code is required");
-        return false;
-    }
+    PXOPT_LOOKUP_S16(code, config->args, "-code", true, false);
 
     if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", config->where, code)) {
@@ -780,14 +570,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psString label = psMetadataLookupStr(&status, config->args, "-label");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label");
-        return false;
-    }
-    if (!label) {
-        psError(PS_ERR_UNKNOWN, true, "-label is required");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(label, config->args, "-label", true, false);
 
     if (!chipMaskInsert(config->dbh, label)) {
@@ -803,4 +584,6 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
 
     psString query = psStringCopy("SELECT * FROM chipMask");
@@ -822,14 +605,4 @@
         psFree(output);
         return true;
-    }
-
-    bool simple = false;
-    {
-        bool status = false;
-        simple = psMetadataLookupBool(&status, config->args, "-simple");
-        if (!status) {
-            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
-            return false;
-        }
     }
 
@@ -857,14 +630,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psString label = psMetadataLookupStr(&status, config->args, "-label");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label");
-        return false;
-    }
-    if (!label) {
-        psError(PS_ERR_UNKNOWN, true, "-label is required");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(label, config->args, "-label", true, false);
 
     char *query = "DELETE FROM chipMask WHERE label = '%s'";
@@ -872,5 +636,4 @@
     if (!p_psDBRunQuery(config->dbh, query, label)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(query);
         return false;
     }
