Index: /branches/end_stage/ippTools/src/camtool.c
===================================================================
--- /branches/end_stage/ippTools/src/camtool.c	(revision 16090)
+++ /branches/end_stage/ippTools/src/camtool.c	(revision 16091)
@@ -133,15 +133,11 @@
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
+    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", false, false);
+    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
+
     psMetadata *where = psMetadataAlloc();
     // convert chip_id into a psS64
-{
-    bool status = false;
-    psString var = psMetadataLookupStr(&status, config->args, "-chip_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -chip_id");
-        return false;
-    }
-    if (var) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "chip_id", 0, "==", (psS64)atoll(var))) {
+    if (chip_id) {
+        if (!psMetadataAddS64(where, PS_LIST_TAIL, "chip_id", 0, "==", (psS64)atoll(chip_id))) {
             psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
             psFree(where);
@@ -149,15 +145,8 @@
         }
     }
-}
+ 
     // 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;
-    }
-    if (var) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", 0, "==", (psS64)atoll(var))) {
+    if (exp_id) {
+        if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", 0, "==", (psS64)atoll(exp_id))) {
             psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
             psFree(where);
@@ -165,5 +154,5 @@
         }
     }
-}
+
     ADDPARAMSTR(config->args, where, "exp_name");
     ADDRENAMEPARAMSTR(config->args, where, "inst", "camera", "==");
@@ -209,46 +198,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", true, false);
+    PXOPT_LOOKUP_STR(label, config->args, "-set_label", true, false);
+    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", true, false);
+    PXOPT_LOOKUP_STR(expgroup, config->args, "-set_expgroup", true, false);
+    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", true, false);
+    PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", true, false);
+    PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", true, false);
 
     // find the exp_id of all the exposures that we want to queue up.
@@ -344,10 +298,6 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    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);
 
     psString query = pxDataGet("camtool_find_pendingexp.sql");
@@ -388,14 +338,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");
@@ -419,4 +359,6 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
 
     psString query = pxDataGet("camtool_find_pendingimfile.sql");
@@ -450,14 +392,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");
@@ -482,138 +414,30 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psString cam_id = psMetadataLookupStr(&status, config->args, "-cam_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -cam_id");
-        return false;
-    }
-    if (!cam_id) {
-        psError(PS_ERR_UNKNOWN, true, "-cam_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;
-    }
-    if (!uri) {
-        psError(PS_ERR_UNKNOWN, true, "-uri is required");
-        return false;
-    }
-
-    psF64 bg = psMetadataLookupF64(&status, config->args, "-bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg");
-        return false;
-    }
-
-    psF64 bg_stdev = psMetadataLookupF64(&status, config->args, "-bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_stdev");
-        return false;
-    }
-
-    psF64 bg_mean_stdev = psMetadataLookupF64(&status, config->args, "-bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_mean_stdev");
-        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;
-    }
-    //if (isnan(sigma_ra)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-sigma_ra is required");
-    //  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;
-    }
-    //if (isnan(sigma_dec)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-sigma_dec is required");
-    //  return false;
-    //}
-
-    psF32 zp_mean = psMetadataLookupF32(&status, config->args, "-zp_mean");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -zp_mean");
-        return false;
-    }
-    //if (isnan(zp_mean)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-zp_mean is required");
-    //  return false;
-    //}
-
-    psF32 zp_stdev = psMetadataLookupF32(&status, config->args, "-zp_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -zp_stdev");
-        return false;
-    }
-    //if (isnan(zp_stdev)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-zp_stdev is required");
-    //  return false;
-    //}
-
-    psF32 fwhm = psMetadataLookupF32(&status, config->args, "-fwhm");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fwhm");
-        return false;
-    }
-    //if (isnan(fwhm)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-fwhm is required");
-    //  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;
-    }
-    //if (isnan(fwhm_range)) {
-    //  psError(PS_ERR_UNKNOWN, true, "-fwhm_range is required");
-    //  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;
-    }
-    if (n_stars < 0) {
-        psError(PS_ERR_UNKNOWN, true, "-n_stars is required");
-        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;
-    }
+    // required
+    PXOPT_LOOKUP_STR(cam_id, config->args, "-cam_id", true, false);
+    PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);
+
+    // optional
+    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(sigma_ra, config->args, "-sigma_ra", false, false);
+    PXOPT_LOOKUP_F32(sigma_dec, config->args, "-sigma_dec", false, false);
+    PXOPT_LOOKUP_F32(zp_mean, config->args, "-zp_mean", false, false);
+    PXOPT_LOOKUP_F32(zp_stdev, config->args, "-zp_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);
     if (n_extended < 0) {
         psError(PS_ERR_UNKNOWN, true, "-n_extended is required");
         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;
-    }
+    PXOPT_LOOKUP_F32(n_cr, config->args, "-n_cr", false, false);
     if (n_cr < 0) {
         psError(PS_ERR_UNKNOWN, true, "-n_cr is required");
         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_F32(n_astrom, config->args, "-n_astrom", false, false);
     if (n_astrom < 0) {
         psError(PS_ERR_UNKNOWN, true, "-n_astrom is required");
@@ -621,17 +445,8 @@
     }
 
-    // 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(path_base, config->args, "-path_base", false, false);
 
     // default
-    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);
 
     psString query = pxDataGet("camtool_find_pendingexp.sql");
@@ -742,16 +557,7 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    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);
 
     psString query = pxDataGet("camtool_find_processedexp.sql");
@@ -800,14 +606,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");
@@ -865,14 +661,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, "camProcessedExp", config->where, code)) {
@@ -889,14 +676,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 (!camMaskInsert(config->dbh, label)) {
@@ -912,4 +690,6 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
 
     psString query = psStringCopy("SELECT * FROM camMask");
@@ -931,14 +711,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;
-        }
     }
 
@@ -966,14 +736,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 camMask WHERE label = '%s'";
@@ -981,8 +742,7 @@
     if (!p_psDBRunQuery(config->dbh, query, label)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(query);
-        return false;
-    }
-
-    return true;
-}
+        return false;
+    }
+
+    return true;
+}
