Index: /branches/end_stage/ippTools/src/regtool.c
===================================================================
--- /branches/end_stage/ippTools/src/regtool.c	(revision 16085)
+++ /branches/end_stage/ippTools/src/regtool.c	(revision 16086)
@@ -100,10 +100,6 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
-    if (!status) {
-        psError(PXTOOLS_ERR_PROG, 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);
 
     // select newImfiles that:
@@ -154,11 +150,4 @@
     }
 
-    bool simple = false;
-    simple = psMetadataLookupBool(&status, config->args, "-simple");
-    if (!status) {
-        psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -simple");
-        return false;
-    }
-
     // negate simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "regPendingImfile", !simple)) {
@@ -180,311 +169,58 @@
     bool status = false;
     // required
-    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 exp_name = psMetadataLookupStr(&status, config->args, "-exp_name");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_name");
-        return false;
-    }
-    if (!exp_name) {
-        psError(PS_ERR_UNKNOWN, true, "-exp_name is required");
-        return false;
-    }
-
-    psString camera = psMetadataLookupStr(&status, config->args, "-inst");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -inst");
-        return false;
-    }
-    if (!camera) {
-        psError(PS_ERR_UNKNOWN, true, "-inst is required");
-        return false;
-    }
-
-    psString telescope = psMetadataLookupStr(&status, config->args, "-telescope");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -telescope");
-        return false;
-    }
-    if (!telescope) {
-        psError(PS_ERR_UNKNOWN, true, "-telescope is required");
-        return false;
-    }
-
-    psString tmp_class_id = psMetadataLookupStr(&status, config->args, "-tmp_class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -tmp_class_id");
-        return false;
-    }
-    if (!tmp_class_id) {
-        psError(PS_ERR_UNKNOWN, true, "-tmp_class_id is required");
-    }
-
-    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;
-    }
-    if (!uri) {
-        psError(PS_ERR_UNKNOWN, true, "-uri is required");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_STR(exp_name, config->args, "-exp_name", true, false);
+    PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false);
+    PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", true, false);
+    PXOPT_LOOKUP_STR(tmp_class_id, config->args, "-tmp_class_id", true, false);
+    PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);
+    PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);
 
     // optional
-    psString exp_type = psMetadataLookupStr(&status, config->args, "-exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_type");
-        return false;
-    }
-
-    psString filelevel = psMetadataLookupStr(&status, config->args, "-filelevel");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filelevel");
-        return false;
-    }
-
-    psString filter = psMetadataLookupStr(&status, config->args, "-filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter");
-        return false;
-    }
-
-    psString comment = psMetadataLookupStr(&status, config->args, "-comment");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -comment");
-        return false;
-    }
-
-    psF32 airmass = psMetadataLookupF32(&status, config->args, "-airmass");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -airmass");
-        return false;
-    }
-
-    psF64 ra = psMetadataLookupF64(&status, config->args, "-ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ra");
-        return false;
-    }
-
-    psF64 decl = psMetadataLookupF64(&status, config->args, "-decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -decl");
-        return false;
-    }
-
-    psF32 exp_time = psMetadataLookupF32(&status, config->args, "-exp_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_time");
-        return false;
-    }
-
-    psF32 sat_pixel_frac = psMetadataLookupF32(&status, config->args, "-sat_pixel_frac");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -sat_pixel_frac");
-        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;
-    }
-
-    psF64 alt = psMetadataLookupF64(&status, config->args, "-alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -alt");
-        return false;
-    }
-
-    psF64 az = psMetadataLookupF64(&status, config->args, "-az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -az");
-        return false;
-    }
-
-    psF32 ccd_temp = psMetadataLookupF32(&status, config->args, "-ccd_temp");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ccd_temp");
-        return false;
-    }
-
-    psF64 posang = psMetadataLookupF32(&status, config->args, "-posang");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -posang");
-        return false;
-    }
-
-    psF32 m1_x = psMetadataLookupF32(&status, config->args, "-m1_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_x");
-        return false;
-    }
-    psF32 m1_y = psMetadataLookupF32(&status, config->args, "-m1_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_y");
-        return false;
-    }
-    psF32 m1_z = psMetadataLookupF32(&status, config->args, "-m1_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_z");
-        return false;
-    }
-    psF32 m1_tip = psMetadataLookupF32(&status, config->args, "-m1_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tip");
-        return false;
-    }
-    psF32 m1_tilt = psMetadataLookupF32(&status, config->args, "-m1_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tilt");
-        return false;
-    }
-
-    psF32 m2_x = psMetadataLookupF32(&status, config->args, "-m2_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_x");
-        return false;
-    }
-    psF32 m2_y = psMetadataLookupF32(&status, config->args, "-m2_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_y");
-        return false;
-    }
-    psF32 m2_z = psMetadataLookupF32(&status, config->args, "-m2_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_z");
-        return false;
-    }
-    psF32 m2_tip = psMetadataLookupF32(&status, config->args, "-m2_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tip");
-        return false;
-    }
-    psF32 m2_tilt = psMetadataLookupF32(&status, config->args, "-m2_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tilt");
-        return false;
-    }
-
-    psF32 env_temp = psMetadataLookupF32(&status, config->args, "-env_temperature");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_temperature");
-        return false;
-    }
-    psF32 env_humid = psMetadataLookupF32(&status, config->args, "-env_humidity");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_humidity");
-        return false;
-    }
-    psF32 env_wind = psMetadataLookupF32(&status, config->args, "-env_wind_speed");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_speed");
-        return false;
-    }
-    psF32 env_dir = psMetadataLookupF32(&status, config->args, "-env_wind_dir");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_dir");
-        return false;
-    }
-
-    psF32 teltemp_m1 = psMetadataLookupF32(&status, config->args, "-teltemp_m1");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1");
-        return false;
-    }
-    psF32 teltemp_m1cell = psMetadataLookupF32(&status, config->args, "-teltemp_m1cell");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1cell");
-        return false;
-    }
-    psF32 teltemp_m2 = psMetadataLookupF32(&status, config->args, "-teltemp_m2");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m2");
-        return false;
-    }
-    psF32 teltemp_spider = psMetadataLookupF32(&status, config->args, "-teltemp_spider");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_spider");
-        return false;
-    }
-    psF32 teltemp_truss = psMetadataLookupF32(&status, config->args, "-teltemp_truss");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_truss");
-        return false;
-    }
-    psF32 teltemp_extra = psMetadataLookupF32(&status, config->args, "-teltemp_extra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_extra");
-        return false;
-    }
-
-    psF32 pon_time = psMetadataLookupF32(&status, config->args, "-pon_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -pon_time");
-        return false;
-    }
-
-    psF64 user_1 = psMetadataLookupF64(&status, config->args, "-user_1");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_1");
-        return false;
-    }
-    psF64 user_2 = psMetadataLookupF64(&status, config->args, "-user_2");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_2");
-        return false;
-    }
-    psF64 user_3 = psMetadataLookupF64(&status, config->args, "-user_3");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_3");
-        return false;
-    }
-    psF64 user_4 = psMetadataLookupF64(&status, config->args, "-user_4");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_4");
-        return false;
-    }
-    psF64 user_5 = psMetadataLookupF64(&status, config->args, "-user_5");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_5");
-        return false;
-    }
-
-    psString object = psMetadataLookupStr(&status, config->args, "-object");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -object");
-        return false;
-    }
+    PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false);
+    PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", false, false);
+    PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false);
+    PXOPT_LOOKUP_STR(comment, config->args, "-comment", false, false);
+
+    PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false);
+    PXOPT_LOOKUP_F64(ra, config->args, "-ra", false, false);
+    PXOPT_LOOKUP_F64(decl, config->args, "-decl", false, false);
+    PXOPT_LOOKUP_F32(exp_time, config->args, "-exp_time", false, false);
+    PXOPT_LOOKUP_F32(sat_pixel_frac, config->args, "-sat_pixel_frac", false, false);
+    PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);
+    PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);
+    PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);
+    PXOPT_LOOKUP_F64(alt, config->args, "-alt", false, false);
+    PXOPT_LOOKUP_F64(az, config->args, "-az", false, false);
+    PXOPT_LOOKUP_F32(ccd_temp, config->args, "-ccd_temp", false, false);
+    PXOPT_LOOKUP_F64(posang, config->args, "-posang", false, false);
+    PXOPT_LOOKUP_F32(m1_x, config->args, "-m1_x", false, false);
+    PXOPT_LOOKUP_F32(m1_y, config->args, "-m1_y", false, false);
+    PXOPT_LOOKUP_F32(m1_z, config->args, "-m1_z", false, false);
+    PXOPT_LOOKUP_F32(m1_tip, config->args, "-m1_tip", false, false);
+    PXOPT_LOOKUP_F32(m1_tilt, config->args, "-m1_tilt", false, false);
+    PXOPT_LOOKUP_F32(m2_x, config->args, "-m2_x", false, false);
+    PXOPT_LOOKUP_F32(m2_y, config->args, "-m2_y", false, false);
+    PXOPT_LOOKUP_F32(m2_z, config->args, "-m2_z", false, false);
+    PXOPT_LOOKUP_F32(m2_tip, config->args, "-m2_tip", false, false);
+    PXOPT_LOOKUP_F32(m2_tilt, config->args, "-m2_tilt", false, false);
+
+    PXOPT_LOOKUP_F32(env_temp, config->args, "-env_temperature", false, false);
+    PXOPT_LOOKUP_F32(env_humid, config->args, "-env_humidity", false, false);
+    PXOPT_LOOKUP_F32(env_wind, config->args, "-env_wind_speed", false, false);
+    PXOPT_LOOKUP_F32(env_dir, config->args, "-env_wind_dir", false, false);
+    PXOPT_LOOKUP_F32(teltemp_m1, config->args, "-teltemp_m1", false, false);
+    PXOPT_LOOKUP_F32(teltemp_m1cell, config->args, "-teltemp_m1cell", false, false);
+    PXOPT_LOOKUP_F32(teltemp_m2, config->args, "-teltemp_m2", false, false);
+    PXOPT_LOOKUP_F32(teltemp_spider, config->args, "-teltemp_spider", false, false);
+    PXOPT_LOOKUP_F32(teltemp_truss, config->args, "-teltemp_truss", false, false);
+    PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false);
+    PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false);
+    PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);
+    PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);
+    PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);
+    PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);
+    PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);
+    PXOPT_LOOKUP_STR(object, config->args, "-object", false, false);
 
     psTime *dateobs = NULL;
@@ -503,9 +239,5 @@
     }
 
-    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 (!rawImfileInsert(
@@ -579,16 +311,7 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    bool status = false;
-    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
-    if (!status) {
-        psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit");
-        return false;
-    }
-
-    bool faulted = psMetadataLookupU64(&status, config->args, "-faulted");
-    if (!status) {
-        psError(PXTOOLS_ERR_PROG, 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("regtool_processedimfile.sql");
@@ -646,14 +369,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 (psArrayLength(output)) {
         // negative simple so the default is true
@@ -707,14 +420,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, "rawImfile", config->where, code)) {
