Index: trunk/ippTools/scripts/regtest.sh
===================================================================
--- trunk/ippTools/scripts/regtest.sh	(revision 18328)
+++ trunk/ippTools/scripts/regtest.sh	(revision 18336)
@@ -9,4 +9,6 @@
 
 exp_id1=`$inject -newExp -tmp_exp_name t10 -tmp_inst gpc -tmp_telescope ps1 -workdir file::///some/path -reduction batman -simple` || exit 1
+
+echo $exp_id1
 
 for ID in `seq 0 3`; do
Index: trunk/ippTools/src/Makefile.am
===================================================================
--- trunk/ippTools/src/Makefile.am	(revision 18328)
+++ trunk/ippTools/src/Makefile.am	(revision 18336)
@@ -30,5 +30,4 @@
 	pxdata.h \
 	pxfake.h \
-	pxio.h \
 	pxregister.h \
 	pxtag.h \
@@ -70,5 +69,4 @@
 	pxfake.c \
 	pxfault.c \
-	pxio.c \
 	pxregister.c \
 	pxtag.c \
Index: trunk/ippTools/src/caltool.c
===================================================================
--- trunk/ippTools/src/caltool.c	(revision 18328)
+++ trunk/ippTools/src/caltool.c	(revision 18336)
@@ -152,10 +152,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "calDB", !simple)) {
@@ -247,10 +241,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "calRun", !simple)) {
Index: trunk/ippTools/src/camtool.c
===================================================================
--- trunk/ippTools/src/camtool.c	(revision 18328)
+++ trunk/ippTools/src/camtool.c	(revision 18336)
@@ -97,26 +97,7 @@
     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
-    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);
-            return false;
-        }
-    }
-
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -268,36 +249,8 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(cam_id, config->args, "-cam_id", false, false);
-    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 cam_id into a psS64
-    if (cam_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", (psS64)atoll(cam_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert chip_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -421,10 +374,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negate simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "camPendingExp", !simple)) {
@@ -475,10 +422,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negate simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipProcessedImfile", !simple)) {
@@ -498,5 +439,5 @@
 
     // required
-    PXOPT_LOOKUP_STR(cam_id, config->args, "-cam_id", true, false);
+    PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", true, false);
     PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);
 
@@ -554,5 +495,5 @@
         psMetadata *where = psMetadataAlloc();
         if (cam_id) {
-            if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", (psS64)atoll(cam_id))) {
+            if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", cam_id)) {
                 psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
                 psFree(where);
@@ -746,10 +687,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negate simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "camProcessedExp", !simple)) {
@@ -769,36 +704,8 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(cam_id, config->args, "-cam_id", false, false);
-    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 cam_id into a psS64
-    if (cam_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", (psS64)atoll(cam_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert chip_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -977,10 +884,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "camMask", !simple)) {
Index: trunk/ippTools/src/camtoolConfig.c
===================================================================
--- trunk/ippTools/src/camtoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/camtoolConfig.c	(revision 18336)
@@ -49,9 +49,9 @@
     psMetadata *definebydefinebyqueryArgs = psMetadataAlloc();
     // XXX need to allow multiple chip_ids
-    psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chip_id", NULL);
+    psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chip_id", 0);
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -148,12 +148,12 @@
     psMetadata *updaterunArgs = psMetadataAlloc();
     // XXX need to allow multiple cam_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-cam_id",  0,
-            "search by cam_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id",  0,
+            "search by cam_id", 0);
     // XXX need to allow multiple chip_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chip_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chip_id", 0);
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -241,8 +241,8 @@
     // -pendingexp
     psMetadata *pendingexpArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "search by camtool ID", NULL);
-    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0,
-            "search by chiptool ID", NULL);
+    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID", 0);
+    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0,
+            "search by chiptool ID", 0);
     psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -253,8 +253,8 @@
     // -pendingimfile
     psMetadata *pendingimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "search by camtool ID", NULL);
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-chip_id", 0,
-            "search by chiptool ID", NULL);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID", 0);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-chip_id", 0,
+            "search by chiptool ID", 0);
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class", 0,
             "search by class", NULL);
@@ -267,6 +267,6 @@
     // -addprocessedexp
     psMetadata *addprocessedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "define camtool ID (required)", NULL);
+    psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "define camtool ID (required)", 0);
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-uri", 0,
             "define URI (required)", NULL);
@@ -328,8 +328,8 @@
     // -processedexp
     psMetadata *processedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "search by camtool ID", NULL);
-    psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-chip_id", 0,
-            "search by chiptool ID", NULL);
+    psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID", 0);
+    psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-chip_id", 0,
+            "search by chiptool ID", 0);
     psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -342,12 +342,12 @@
     psMetadata *revertprocessedexpArgs = psMetadataAlloc();
     // XXX need to allow multiple cam_ids
-    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id",  0,
-            "search by cam_id", NULL);
+    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id",  0,
+            "search by cam_id", 0);
     // XXX need to allow multiple chip_ids
-    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chip_id", NULL);
+    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chip_id", 0);
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -433,8 +433,8 @@
     // -updateprocessedexp
     psMetadata *updateprocessedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "search by camtool ID", NULL);
-    psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chiptool ID", NULL);
+    psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID", 0);
+    psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chiptool ID", 0);
     psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class",  0,
             "search by class", NULL);
Index: trunk/ippTools/src/chiptool.c
===================================================================
--- trunk/ippTools/src/chiptool.c	(revision 18328)
+++ trunk/ippTools/src/chiptool.c	(revision 18336)
@@ -106,16 +106,8 @@
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
+    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false);
 
     psMetadata *where = psMetadataAlloc();
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -263,26 +255,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", false, false);
-    // convert chip_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    PXOPT_COPY_STR(config->args,  where, "-chip_id", "chip_id", "==");
-    PXOPT_COPY_STR(config->args,  where, "-exp_id", "exp_id", "==");
+    PXOPT_COPY_S64(config->args,  where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args,  where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args,  where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args,  where, "-inst", "camera", "==");
@@ -371,24 +343,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", false, false);
-    // convert chip_id into a psS64
-    if (chip_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "chipRun.chip_id", 0, "==", (psS64)atoll(chip_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    if (exp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "rawExp.exp_id", 0, "==", (psS64)atoll(exp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.telescope", "==");
@@ -433,10 +387,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipPendingImfile", !simple)) {
@@ -457,6 +405,6 @@
 
     // chip_id, ext_tag, class_id are required
-    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", true, false);
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false);
+    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);
     PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);
 
@@ -498,6 +446,6 @@
 
     if (!chipProcessedImfileInsert(config->dbh,
-                                   (psS64)atoll(chip_id),
-                                   (psS64)atoll(exp_id),
+                                   chip_id,
+                                   exp_id,
                                    class_id,
                                    uri,
@@ -569,24 +517,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", false, false);
-    // convert chip_id into a psS64
-    if (chip_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "chipRun.chip_id", 0, "==", (psS64)atoll(chip_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    if (exp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "rawExp.exp_id", 0, "==", (psS64)atoll(exp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.chip_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.telescope", "==");
@@ -639,10 +569,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipProcessedImfile", !simple)) {
@@ -662,24 +586,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(chip_id, config->args, "-chip_id", false, false);
-    // convert chip_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -832,10 +738,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipMask", !simple)) {
@@ -905,10 +805,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipUnmask", !simple)) {
@@ -989,10 +883,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "chipPendingCleanup", !simple)) {
@@ -1054,10 +942,4 @@
         psFree(output);
         return true;
-    }
-
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
     }
 
Index: trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- trunk/ippTools/src/chiptoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/chiptoolConfig.c	(revision 18336)
@@ -2,5 +2,5 @@
  * chiptoolConfig.c
  *
- * Copyright (C) 2006  Joshua Hoblitt
+ * Copyright (C) 2006-2008  Joshua Hoblitt
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -47,5 +47,5 @@
     psMetadata *queueArgs = psMetadataAlloc();
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exp_id", NULL);
+    psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exp_id", 0);
     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_name",  0,            "search by exp_name", NULL);
     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-inst",  0,            "search for camera", NULL);
@@ -100,6 +100,6 @@
     // -updaterun
     psMetadata *updaterunArgs = psMetadataAlloc();
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-chip_id",              0,            "search by chip ID", NULL);
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_id",                 0,            "search by exp_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id",              0,            "search by chip ID", 0);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id",                 0,            "search by exp_id", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name",             0,            "search by exp_name", NULL);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst",                 0,            "search for camera", NULL);
@@ -148,6 +148,6 @@
     // -pendingimfile
     psMetadata *pendingimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID", NULL);
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", NULL);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID", 0);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst",  0,            "search by camera of interest", NULL);
@@ -158,6 +158,6 @@
     // -addprocessedimfile
     psMetadata *addprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "define chip ID (required)", NULL);
-    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "define exposure ID (required)", NULL);
+    psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "define chip ID (required)", 0);
+    psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "define exposure ID (required)", 0);
     psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "define class ID (required)", NULL);
     psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri",  0,            "define URL", NULL);
@@ -192,6 +192,6 @@
     // -processedimfile
     psMetadata *processedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "define chip ID", NULL);
-    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "define exposure ID", NULL);
+    psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "define chip ID", 0);
+    psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "define exposure ID", 0);
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "define class ID", NULL);
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-inst",  0,            "define camera of interest", NULL);
@@ -203,6 +203,6 @@
     // -updateprocessedimfile
     psMetadata *updateprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID", NULL);
-    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", NULL);
+    psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID", 0);
+    psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
     psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
     psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,            "set fault code (required)", 0);
@@ -210,6 +210,6 @@
     // -revertprocessedimfile
     psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-chip_id", 0,            "search by chip ID", NULL);
-    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exp_id", NULL);
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-chip_id", 0,            "search by chip ID", 0);
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exp_id", 0);
     psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_name",  0,            "search by exp_name", NULL);
     psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-inst",  0,            "search for camera", NULL);
Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 18328)
+++ trunk/ippTools/src/dettool.c	(revision 18336)
@@ -459,10 +459,4 @@
     }
 
-    if (!convertIdToStr(detRuns)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(detRuns);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, detRuns, "detRun", !simple)) {
@@ -722,11 +716,4 @@
     }
 
-    // convert det_id to a string externaly
-    if (!convertIdToStr(detRuns)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert det_id to a string");
-        psFree(detRuns);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, detRuns, "detRun", !simple)) {
@@ -1015,11 +1002,4 @@
     }
 
-    // convert det_id to a string externaly
-    if (!convertIdToStr(detRuns)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(detRuns);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, newDetRuns, "detRun", !simple)) {
@@ -1114,11 +1094,4 @@
         psFree(runs);
         return true;
-    }
-
-    // convert det_id to a string externaly
-    if (!convertIdToStr(runs)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(runs);
-        return false;
     }
 
@@ -1183,11 +1156,4 @@
         psFree(output);
         return true;
-    }
-
-    // convert det_id to a string externaly
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
     }
 
@@ -4285,10 +4251,4 @@
     }
 
-    if (!convertIdToStr(detRuns)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(detRuns);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, detRuns, "detRun", !simple)) {
Index: trunk/ippTools/src/dettool_correction.c
===================================================================
--- trunk/ippTools/src/dettool_correction.c	(revision 18328)
+++ trunk/ippTools/src/dettool_correction.c	(revision 18336)
@@ -120,10 +120,4 @@
     }
 
-    if (!convertIdToStr(detRuns)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(detRuns);
-        return false;
-    }
-
     bool simple = false;
     {
Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 18328)
+++ trunk/ippTools/src/difftool.c	(revision 18336)
@@ -42,5 +42,5 @@
 static bool definebyqueryMode(pxConfig *config);
 
-static bool setdiffRunState(pxConfig *config, const char *diff_id, const char *state);
+static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state);
 
 # define MODECASE(caseName, func) \
@@ -146,5 +146,5 @@
 
     // required options
-    PXOPT_LOOKUP_STR(diff_id, config->args, "-diff_id", true, false);
+    PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false);
     PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
 
@@ -163,9 +163,9 @@
 
     // required options
-    PXOPT_LOOKUP_STR(diff_id, config->args, "-diff_id", true, false);
+    PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false);
 
     // optional
-    PXOPT_LOOKUP_STR(stack_id, config->args, "-stack_id", false, false);
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", false, false);
+    PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false);
+    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", false, false);
     PXOPT_LOOKUP_STR(kind, config->args, "-kind", false, false);
 
@@ -188,5 +188,5 @@
     psString tess_id = NULL;
     if (warp_id) {
-        if (!p_psDBRunQuery(config->dbh, "SELECT * from diffRun WHERE diff_id = %" PRId64, (psS64)atoll(diff_id))) {
+        if (!p_psDBRunQuery(config->dbh, "SELECT * from diffRun WHERE diff_id = %" PRId64, diff_id)) {
             psError(PS_ERR_UNKNOWN, false, "database error");
             return false;
@@ -199,5 +199,5 @@
         }
         if (!psArrayLength(output)) {
-            psError(PS_ERR_UNKNOWN, false, "diff_id %" PRId64 " not found", (psS64)atoll(diff_id));
+            psError(PS_ERR_UNKNOWN, false, "diff_id %" PRId64 " not found", diff_id);
             psFree(output);
             return false;
@@ -215,8 +215,8 @@
 
     if (!diffInputSkyfileInsert(config->dbh,
-            (psS64)atoll(diff_id),
+            diff_id,
             template,
-            stack_id ? (psS64)atoll(stack_id) : PS_MAX_S64, // defined or NULL
-            warp_id ? (psS64)atoll(warp_id) : PS_MAX_S64, // defined or NULL
+            stack_id ? stack_id : PS_MAX_S64, // defined or NULL
+            warp_id ? warp_id : PS_MAX_S64, // defined or NULL
             skycell_id,
             tess_id,
@@ -230,5 +230,5 @@
     }
 
-    if (!p_psDBRunQuery(config->dbh, "SELECT count(diff_id) FROM diffRun JOIN diffInputSkyfile USING(diff_id) WHERE diff_id = %" PRId64, (psS64)atoll(diff_id))) {
+    if (!p_psDBRunQuery(config->dbh, "SELECT count(diff_id) FROM diffRun JOIN diffInputSkyfile USING(diff_id) WHERE diff_id = %" PRId64, diff_id)) {
         if (!psDBRollback(config->dbh)) {
             psError(PS_ERR_UNKNOWN, false, "database error");
@@ -250,5 +250,5 @@
             psError(PS_ERR_UNKNOWN, false, "database error");
         }
-        psError(PS_ERR_UNKNOWN, false, "diff_id %" PRId64 " not found", (psS64)atoll(diff_id));
+        psError(PS_ERR_UNKNOWN, false, "diff_id %" PRId64 " not found", diff_id);
         psFree(output);
         return false;
@@ -333,10 +333,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "diffInputSkyfile", !simple)) {
@@ -407,10 +401,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "diffSkyfile", !simple)) {
@@ -432,5 +420,5 @@
 
     // required
-    PXOPT_LOOKUP_STR(diff_id, config->args, "-diff_id", true, false);
+    PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false);
 
     // default to 0
@@ -465,5 +453,5 @@
 
     if (!diffSkyfileInsert(config->dbh,
-                           (psS64)atoll(diff_id),
+                           diff_id,
                            uri,
                            path_base,
@@ -557,10 +545,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "diffSkyfile", !simple)) {
@@ -609,7 +591,6 @@
 
 
-static bool setdiffRunState(pxConfig *config, const char *diff_id, const char *state)
-{
-    PS_ASSERT_PTR_NON_NULL(diff_id, false);
+static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state)
+{
     PS_ASSERT_PTR_NON_NULL(state, false);
 
@@ -626,8 +607,8 @@
     }
 
-    char *query = "UPDATE diffRun SET state = '%s' WHERE diff_id = '%s'";
+    char *query = "UPDATE diffRun SET state = '%s' WHERE diff_id = %"PRId64;
     if (!p_psDBRunQuery(config->dbh, query, state, diff_id)) {
         psError(PS_ERR_UNKNOWN, false,
-                "failed to change state for diff_id %s", diff_id);
+                "failed to change state for diff_id %"PRId64, diff_id);
         return false;
     }
@@ -766,6 +747,6 @@
 
     // optional
-    PXOPT_LOOKUP_STR(template_stack_id, config->args, "-template_stack_id", false, false);
-    PXOPT_LOOKUP_STR(template_warp_id, config->args, "-template_warp_id", false, false);
+    PXOPT_LOOKUP_S64(template_stack_id, config->args, "-template_stack_id", false, false);
+    PXOPT_LOOKUP_S64(template_warp_id, config->args, "-template_warp_id", false, false);
 
     if (template_stack_id && template_warp_id) {
@@ -779,6 +760,6 @@
     }
 
-    PXOPT_LOOKUP_STR(input_stack_id, config->args, "-input_stack_id", false, false);
-    PXOPT_LOOKUP_STR(input_warp_id, config->args, "-input_warp_id", false, false);
+    PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false);
+    PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false);
     if (input_stack_id && input_warp_id) {
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Only one input can be defined.");
@@ -792,8 +773,8 @@
 
     return populatedrun(workdir, skycell_id, tess_id,
-                        input_warp_id ? (psS64)atoll(input_warp_id) : PS_MAX_S64,
-                        input_stack_id ? (psS64)atoll(input_stack_id) : PS_MAX_S64,
-                        template_warp_id ? (psS64)atoll(template_warp_id) : PS_MAX_S64,
-                        template_stack_id ? (psS64)atoll(template_stack_id) : PS_MAX_S64,
+                        input_warp_id ? input_warp_id : PS_MAX_S64,
+                        input_stack_id ? input_stack_id : PS_MAX_S64,
+                        template_warp_id ? template_warp_id : PS_MAX_S64,
+                        template_stack_id ? template_stack_id : PS_MAX_S64,
                         config);
 
Index: trunk/ippTools/src/difftoolConfig.c
===================================================================
--- trunk/ippTools/src/difftoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/difftoolConfig.c	(revision 18336)
@@ -60,6 +60,6 @@
     // -updaterun
     psMetadata *updaterunArgs = psMetadataAlloc();
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "define diff ID (required)", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "define diff ID (required)", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0,
             "set state (required)", NULL);
@@ -73,10 +73,10 @@
     // -addinputskyfile
     psMetadata *addinputskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "define diff ID (required)", NULL);
-    psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "define warp ID", NULL);
-    psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "define stack ID", NULL);
+    psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "define diff ID (required)", 0);
+    psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "define warp ID", 0);
+    psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "define stack ID", 0);
     psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-kind", 0,
             "define kind", NULL);
@@ -86,8 +86,8 @@
     // -inputskyfile
     psMetadata *inputskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "search by diff ID", NULL);
-    psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "search by diff ID", 0);
+    psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warp ID", 0);
     psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0,
             "search by skycell ID", NULL);
@@ -105,6 +105,6 @@
     // -todiffskyfile
     psMetadata *todiffskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(todiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "search by diff ID", NULL);
+    psMetadataAddS64(todiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "search by diff ID", 0);
     psMetadataAddU64(todiffskyfileArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -114,6 +114,6 @@
     // -adddiffskyfile
     psMetadata *adddiffskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "define warp ID (required)", NULL);
+    psMetadataAddS64(adddiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "define warp ID (required)", 0);
     psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-uri", 0,
             "define URI of file", 0);
@@ -141,6 +141,6 @@
     // -diffskyfile
     psMetadata *diffskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "search by warp ID", 0);
     psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-skycell_id",  0,
             "define skycell ID", NULL);
@@ -154,6 +154,6 @@
     // -revertdiffskyfile
     psMetadata *revertdiffskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(revertdiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
-            "define warp ID (required)", NULL);
+    psMetadataAddS64(revertdiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,
+            "define warp ID (required)", 0);
     psMetadataAddS16(revertdiffskyfileArgs, PS_LIST_TAIL, "-code",  0,
             "search by fault code", 0);
@@ -171,12 +171,12 @@
     psMetadataAddBool(definepoprunArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
-    psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0,
-            "define warp ID for template", NULL);
-    psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0,
-            "define stack ID for template", NULL);
-    psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-input_warp_id", 0,
-            "define warp ID for input", NULL);
-    psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0,
-            "define stack ID for input", NULL);
+    psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0,
+            "define warp ID for template", 0);
+    psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0,
+            "define stack ID for template", 0);
+    psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_warp_id", 0,
+            "define warp ID for input", 0);
+    psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0,
+            "define stack ID for input", 0);
 
     // -definebyquery
Index: trunk/ippTools/src/faketool.c
===================================================================
--- trunk/ippTools/src/faketool.c	(revision 18328)
+++ trunk/ippTools/src/faketool.c	(revision 18336)
@@ -103,16 +103,6 @@
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-
     psMetadata *where = psMetadataAlloc();
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -259,24 +249,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -406,10 +378,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negate simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "fakePendingExp", !simple)) {
@@ -433,24 +399,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fakeRun.fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    if (exp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "rawExp.exp_id", 0, "==", (psS64)atoll(exp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.telescope", "==");
@@ -495,10 +443,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "fakePendingImfile", !simple)) {
@@ -519,6 +461,6 @@
 
     // fake_id, ext_tag, class_id are required
-    PXOPT_LOOKUP_STR(fake_id, config->args,     "-fake_id", true, false);
-    PXOPT_LOOKUP_STR(exp_id, config->args,      "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(fake_id, config->args,     "-fake_id", true, false);
+    PXOPT_LOOKUP_S64(exp_id, config->args,      "-exp_id", true, false);
     PXOPT_LOOKUP_STR(class_id, config->args,    "-class_id", true, false);
 
@@ -539,6 +481,6 @@
 
     if (!fakeProcessedImfileInsert(config->dbh,
-                                   (psS64)atoll(fake_id),
-                                   (psS64)atoll(exp_id),
+                                   fake_id,
+                                   exp_id,
                                    class_id,
                                    uri,
@@ -589,24 +531,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fakeRun.fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    if (exp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "rawExp.exp_id", 0, "==", (psS64)atoll(exp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.telescope", "==");
@@ -659,10 +583,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "fakeProcessedImfile", !simple)) {
@@ -682,24 +600,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -778,13 +678,5 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
 
@@ -866,10 +758,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "fakeMask", !simple)) {
@@ -937,10 +823,4 @@
         psFree(output);
         return true;
-    }
-
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
     }
 
Index: trunk/ippTools/src/faketoolConfig.c
===================================================================
--- trunk/ippTools/src/faketoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/faketoolConfig.c	(revision 18336)
@@ -47,6 +47,6 @@
     psMetadata *queueArgs = psMetadataAlloc();
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -145,8 +145,8 @@
     // -updaterun
     psMetadata *updaterunArgs = psMetadataAlloc();
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "search by fake ID", NULL);
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "search by fake ID", 0);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -234,8 +234,8 @@
     // -pendingexp
     psMetadata *pendingexpArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0,
-            "search by camtool ID", NULL);
-    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0,
-            "search by chiptool ID", NULL);
+    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID", 0);
+    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0,
+            "search by chiptool ID", 0);
     psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -245,8 +245,8 @@
     // -pendingimfile
     psMetadata *pendingimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "search by fake ID", NULL);
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exposure ID", NULL);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "search by fake ID", 0);
+    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exposure ID", 0);
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search by class ID", NULL);
@@ -262,8 +262,8 @@
     // -addprocessedimfile
     psMetadata *addprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "define fake ID (required)", NULL);
-    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "define exposure ID (required)", NULL);
+    psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "define fake ID (required)", 0);
+    psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "define exposure ID (required)", 0);
     psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "define class ID (required)", NULL);
@@ -281,8 +281,8 @@
     // -processedimfile
     psMetadata *processedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "define fake ID", NULL);
-    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "define exposure ID", NULL);
+    psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "define fake ID", 0);
+    psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "define exposure ID", 0);
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "define class ID", NULL);
@@ -300,8 +300,8 @@
     // -updateprocessedimfile
     psMetadata *updateprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "search by fake ID", NULL);
-    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exposure ID", NULL);
+    psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "search by fake ID", 0);
+    psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exposure ID", 0);
     psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search by class ID", NULL);
@@ -311,8 +311,8 @@
     // -revertprocessedimfile
     psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "search by fake ID", NULL);
-    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "search by fake ID", 0);
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
Index: trunk/ippTools/src/flatcorr.c
===================================================================
--- trunk/ippTools/src/flatcorr.c	(revision 18328)
+++ trunk/ippTools/src/flatcorr.c	(revision 18336)
@@ -463,10 +463,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "chipProcessedImfile", !simple)) {
Index: trunk/ippTools/src/magictool.c
===================================================================
--- trunk/ippTools/src/magictool.c	(revision 18328)
+++ trunk/ippTools/src/magictool.c	(revision 18336)
@@ -399,10 +399,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "magicInputSkyfile", !simple)) {
@@ -627,10 +621,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "magicMe", !simple)) {
@@ -718,10 +706,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "toprocess", !simple)) {
@@ -806,10 +788,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "toskyfilemask", !simple)) {
Index: trunk/ippTools/src/pxinject.c
===================================================================
--- trunk/ippTools/src/pxinject.c	(revision 18328)
+++ trunk/ippTools/src/pxinject.c	(revision 18336)
@@ -91,5 +91,5 @@
 
     if (!newExpInsert(config->dbh,
-                0x0,    // exp_id
+                0,    // exp_id
                 tmp_exp_name,
                 tmp_camera,
@@ -110,14 +110,11 @@
     }
 
-    psS64 lastInsertID = psDBLastInsertID(config->dbh);
-    psString exp_id = psDBIntToString(lastInsertID);
+    psS64 exp_id = psDBLastInsertID(config->dbh);
 
     psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
+    if (!psMetadataAddS64(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
         psFree(md);
-        psFree(exp_id);
     }
-    psFree(exp_id);
 
     // negate simple so the default is true
@@ -137,10 +134,10 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);
     PXOPT_LOOKUP_STR(tmp_class_id, config->args, "-tmp_class_id", true, false);
     PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);
 
     // insert with error flag state set to 0 (no errors)
-    if (!newImfileInsert(config->dbh, (psS64)atoll(exp_id), tmp_class_id, uri, NULL)) {
+    if (!newImfileInsert(config->dbh, exp_id, tmp_class_id, uri, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         return false;
@@ -155,5 +152,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);
     PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
 
Index: trunk/ippTools/src/pxinjectConfig.c
===================================================================
--- trunk/ippTools/src/pxinjectConfig.c	(revision 18328)
+++ trunk/ippTools/src/pxinjectConfig.c	(revision 18336)
@@ -68,6 +68,6 @@
     // -newImfile
     psMetadata *newImfileArgs = psMetadataAlloc();
-    psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "define the exp_id (required)", NULL);
+    psMetadataAddS64(newImfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "define the exp_id (required)", 0);
     psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-tmp_class_id",  0,
             "define the class ID (required)", NULL);
@@ -77,6 +77,6 @@
     // -updatenewExp
     psMetadata *updatenewExpArgs = psMetadataAlloc();
-    psMetadataAddStr(updatenewExpArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "define the exp_id (required)", NULL);
+    psMetadataAddS64(updatenewExpArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "define the exp_id (required)", 0);
     psMetadataAddStr(updatenewExpArgs, PS_LIST_TAIL, "-state", 0,
             "set state (required)", NULL);
Index: trunk/ippTools/src/pxio.c
===================================================================
--- trunk/ippTools/src/pxio.c	(revision 18328)
+++ 	(revision )
@@ -1,59 +1,0 @@
-/*
- * pxio.c
- *
- * Copyright (C) 2007  Joshua Hoblitt
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * program; see the file COPYING. If not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVB_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdbool.h>
-
-#include <pslib.h>
-
-#include "pxtools.h"
-#include "pxio.h"
-
-bool convertIdToStr(psArray *mds)
-{
-    PS_ASSERT_PTR_NON_NULL(mds, false);
-
-    char *ids[] = {"guide_id", "chip_id", "cam_id", "det_id", "warp_id", "diff_id", "stack_id", "magic_id", NULL};
-
-    // loop over array of metadatas
-    for (long i = 0; i < psArrayLength(mds); i++) {
-        psMetadata *md = mds->data[i];
-        // loop over array of ID fields
-        for (int j = 0; ids[j] != NULL; j++) {
-            char *name = ids[j];
-            bool status = false;
-            psS64 numeric_id = psMetadataLookupS64(&status, md, name);
-            if (!status) {
-                continue;
-//                psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s",
-//                        name);
- //               return false;
-            }
-            psMetadataRemoveKey(md, name);
-            psString string_id = psDBIntToString((psU64)numeric_id);
-            psMetadataAddStr(md, PS_LIST_HEAD, name, 0, NULL, string_id);
-            psFree(string_id);
-        }
-    }
-
-    return true;
-}
Index: trunk/ippTools/src/pxio.h
===================================================================
--- trunk/ippTools/src/pxio.h	(revision 18328)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/*
- * pxio.h
- *
- * Copyright (C) 2007  Joshua Hoblitt
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * program; see the file COPYING. If not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef PXIO_H
-#define PXIO_H 1
-
-#include <pslib.h>
-
-bool convertIdToStr(psArray *mds);
-
-#endif // PXIO_H
Index: trunk/ippTools/src/pxregister.c
===================================================================
--- trunk/ippTools/src/pxregister.c	(revision 18328)
+++ trunk/ippTools/src/pxregister.c	(revision 18336)
@@ -29,7 +29,10 @@
 #include "pxregister.h"
 
-bool pxnewExpSetState(pxConfig *config, const char *exp_id, const char *state)
+bool pxnewExpSetState(pxConfig *config, psS64 exp_id, const char *state)
 {
-    PS_ASSERT_PTR_NON_NULL(exp_id, false);
+    if (!exp_id) {
+        psError(PS_ERR_UNKNOWN, true, "0 is not a valid exp_id");
+        return false;
+    }
     PS_ASSERT_PTR_NON_NULL(state, false);
 
@@ -46,8 +49,8 @@
     }
 
-    char *query = "UPDATE newExp SET state = '%s' WHERE exp_id = '%s'";
+    char *query = "UPDATE newExp SET state = '%s' WHERE exp_id = %"PRId64;
     if (!p_psDBRunQuery(config->dbh, query, state, exp_id)) {
         psError(PS_ERR_UNKNOWN, false,
-                "failed to change state for exp_id %s", exp_id);
+                "failed to change state for exp_id %"PRId64, exp_id);
         return false;
     }
Index: trunk/ippTools/src/pxregister.h
===================================================================
--- trunk/ippTools/src/pxregister.h	(revision 18328)
+++ trunk/ippTools/src/pxregister.h	(revision 18336)
@@ -25,5 +25,5 @@
 #include "pxtools.h"
 
-bool pxnewExpSetState(pxConfig *config, const char *exp_id, const char *state);
+bool pxnewExpSetState(pxConfig *config, psS64 exp_id, const char *state);
 
 #endif // PXREGISTER_H
Index: trunk/ippTools/src/pxtools.h
===================================================================
--- trunk/ippTools/src/pxtools.h	(revision 18328)
+++ trunk/ippTools/src/pxtools.h	(revision 18336)
@@ -36,5 +36,4 @@
 #include "pxfake.h"
 #include "pxwarp.h"
-#include "pxio.h"
 #include "pxregister.h"
 #include "pxtag.h"
@@ -109,16 +108,17 @@
 type var; \
 { \
-    bool status; \
- \
-    var = psMetadataLookup##suffix(&status, md, key); \
-    if (!status) { \
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \
-        return ret; \
-    } \
- \
-    if (required && (var == max)) { \
-        psError(PS_ERR_UNKNOWN, true, "%s is required", key); \
-        return ret; \
-    } \
+    psMetadataItem *item = psMetadataLookup(md, key); \
+    if (!item) { \
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \
+        return ret; \
+    } \
+    psAssert(item->comment, "metadata item comment should be defined"); \
+    if (required && (!psStrcasestr(item->comment, "(found)"))) { \
+        psError(PS_ERR_UNKNOWN, true, "%s is required", key); \
+        return ret; \
+    } \
+ \
+    var = item->data.suffix; \
+ \
 }
 
@@ -172,16 +172,19 @@
 // XXX the PXOPT_COPY_* macros free 'to' on error
 
-#define PXOPT_COPY_PRIMITIVE(from, to, type, suffix, oldname, newname, comment) \
-{ \
-    bool status = false; \
-    type var = psMetadataLookup##suffix(&status, from, oldname); \
-    if (!status) { \
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for " oldname); \
+#define PXOPT_COPY_PRIMITIVE(from, to, type, suffix, oldname, newname, newcomment) \
+{ \
+    psMetadataItem *item = psMetadataLookup(from, oldname); \
+    if (!item) { \
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", oldname); \
         return false; \
     } \
-    if (!psMetadataAdd##suffix(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, comment, var)) { \
-        psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \
-        psFree(to); \
-        return false; \
+    psAssert(item->comment, "metadata item comment should be defined"); \
+\
+    if (psStrcasestr(item->comment, "(found)")) { \
+        if (!psMetadataAdd##suffix(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, newcomment, item->data.suffix)) { \
+            psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \
+            psFree(to); \
+            return false; \
+        } \
     } \
 }
Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 18328)
+++ trunk/ippTools/src/regtool.c	(revision 18336)
@@ -170,5 +170,5 @@
 
     // required
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(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);
@@ -230,5 +230,5 @@
     if (!rawImfileInsert(
         config->dbh,
-        (psS64)atoll(exp_id),
+        exp_id,
         exp_name,
         camera,
@@ -496,5 +496,5 @@
 
     // required
-    PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_S64(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);
@@ -569,5 +569,5 @@
         // build a query to search by exp_id
         psMetadata *where = psMetadataAlloc();
-        if (!psMetadataAddStr(where, PS_LIST_TAIL, "newExp.exp_id", 0, "==", exp_id)) {
+        if (!psMetadataAddS64(where, PS_LIST_TAIL, "newExp.exp_id", 0, "==", exp_id)) {
             psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
             psFree(where);
@@ -652,5 +652,5 @@
 
     if (!rawExpInsert(config->dbh,
-        (psS64)atoll(exp_id),
+        exp_id,
         exp_name,
         camera,
@@ -726,5 +726,5 @@
             psError(PS_ERR_UNKNOWN, false, "database error");
         }
-        psError(PS_ERR_UNKNOWN, false, "failed to change newExp.state for exp_id: %s", exp_id);
+        psError(PS_ERR_UNKNOWN, false, "failed to change newExp.state for exp_id: %"PRId64, exp_id);
     psFree(newExp);
         return false;
@@ -749,5 +749,5 @@
     // this can only be run as the newExp's state has been set to stop
     if (!pxchipQueueByExpTag(config,
-                (psS64)atoll(exp_id),
+                exp_id,
                 workdir,
             label,
@@ -797,5 +797,5 @@
 
     // XX test this out; need to make this consistent with the list in regtoolConfig.c
-    PXOPT_COPY_STR(config->args, config->where,  "-exp_id", "exp_id", "==");
+    PXOPT_COPY_S64(config->args, config->where,  "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, config->where,  "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, config->where,  "-inst", "camera", "==");
Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 18336)
@@ -61,5 +61,5 @@
     // -addprocessedimfile
     psMetadata *addprocessedimfileArgs = psMetadataAlloc();
-    ADD_OPT(Str,  addprocessedimfileArgs, "-exp_id",         "define exposure ID (required)",        NULL);
+    ADD_OPT(S64,  addprocessedimfileArgs, "-exp_id",         "define exposure ID (required)",        0);
     ADD_OPT(Str,  addprocessedimfileArgs, "-exp_name",       "define the exp_name (required)",         NULL);
     ADD_OPT(Str,  addprocessedimfileArgs, "-inst",           "define the camera name (required)",     NULL);
@@ -117,5 +117,5 @@
     // -processedimfile
     psMetadata *processedimfileArgs = psMetadataAlloc();
-   ADD_OPT(Str,  processedimfileArgs, "-exp_id",    "search by exposure ID",                 NULL);
+   ADD_OPT(S64,  processedimfileArgs, "-exp_id",    "search by exposure ID",                 0);
    ADD_OPT(Str,  processedimfileArgs, "-exp_name",  "search by exposure name",               NULL);
    ADD_OPT(Str,  processedimfileArgs, "-class_id",  "search by class ID",                    NULL);
@@ -126,5 +126,5 @@
     // -revertprocessedimfile
     psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
-    ADD_OPT(Str, revertprocessedimfileArgs, "-exp_id",        "search by exposure ID (required)", NULL);
+    ADD_OPT(S64, revertprocessedimfileArgs, "-exp_id",        "search by exposure ID (required)", 0);
     ADD_OPT(Str, revertprocessedimfileArgs, "-tmp_class_id",  "searcy by temp. class ID", NULL);
     ADD_OPT(Str, revertprocessedimfileArgs, "-class_id",      "search by class ID", NULL);
@@ -133,5 +133,5 @@
     // -updateprocessedimfile
     psMetadata *updateprocessedimfileArgs = psMetadataAlloc();
-    ADD_OPT(Str, updateprocessedimfileArgs, "-exp_id",        "search by exposure ID", NULL);
+    ADD_OPT(S64, updateprocessedimfileArgs, "-exp_id",        "search by exposure ID", 0);
     ADD_OPT(Str, updateprocessedimfileArgs, "-class_id",      "search by class ID", NULL);
     ADD_OPT(S16, updateprocessedimfileArgs, "-code",          "set fault code (required)", INT16_MAX);
@@ -151,5 +151,5 @@
     // -addprocessedexp
     psMetadata *addprocessedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id",           0,        "exp_id to operate on (required)", NULL);
+    psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id",           0,        "exp_id to operate on (required)", 0);
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_name",         0,        "define the exp_name (required)", NULL);
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-inst",             0,        "define the camera name (required)", NULL);
@@ -215,5 +215,5 @@
     // -processedexp
     psMetadata *processedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-exp_id",        0,            "search by exposure ID", NULL);
+    psMetadataAddS64(processedexpArgs,  PS_LIST_TAIL, "-exp_id",        0,            "search by exposure ID", 0);
     psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-exp_name",      0,            "search by exp_name", NULL);
     psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-inst",          0,            "search for camera", NULL);
@@ -260,10 +260,10 @@
     // -revertprocessedexp
     psMetadata *revertprocessedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id",   0,            "search by exposure ID (required)", NULL);
+    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id",   0,            "search by exposure ID (required)", 0);
     psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code",     0,            "search by fault code", 0);
 
     // -updatedprocessedexp
     psMetadata *updatedprocessedexpArgs = psMetadataAlloc();
-    psMetadataAddStr(updatedprocessedexpArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", NULL);
+    psMetadataAddS64(updatedprocessedexpArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
     psMetadataAddS16(updatedprocessedexpArgs, PS_LIST_TAIL, "-code",    0,            "set fault code (required)", INT16_MAX);
 
Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 18328)
+++ trunk/ippTools/src/stacktool.c	(revision 18336)
@@ -41,5 +41,5 @@
 static bool revertsumskyfileMode(pxConfig *config);
 
-static bool setstackRunState(pxConfig *config, const char *stack_id, const char *state);
+static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state);
 
 # define MODECASE(caseName, func) \
@@ -486,5 +486,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(stack_id, config->args, "-stack_id", true, false);
+    PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", true, false);
     PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
 
@@ -502,6 +502,6 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(stack_id, config->args, "-stack_id", true, false);
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", true, false);
+    PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", true, false);
+    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false);
 
     // XXX need to validate the warp_id here
@@ -509,6 +509,6 @@
     // constrants
     if (!stackInputSkyfileInsert(config->dbh,
-            (psS64)atoll(stack_id),
-            (psS64)atoll(warp_id)
+            stack_id,
+            warp_id
         )) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -574,10 +574,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "stackInputSkyfile", !simple)) {
@@ -648,10 +642,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "stackSumSkyfile", !simple)) {
@@ -673,5 +661,5 @@
 
     // required
-    PXOPT_LOOKUP_STR(stack_id, config->args, "-stack_id", true, false);
+    PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", true, false);
 
     // optional
@@ -696,5 +684,5 @@
     // constrants
     if (!stackSumSkyfileInsert(config->dbh,
-                               (psS64)atoll(stack_id),
+                               stack_id,
                                uri,
                                path_base,
@@ -785,10 +773,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         if (!ippdbPrintMetadatas(stdout, output, "stackSumSkyfile", !simple)) {
             psError(PS_ERR_UNKNOWN, false, "failed to print array");
@@ -836,7 +818,6 @@
 
 
-static bool setstackRunState(pxConfig *config, const char *stack_id, const char *state)
-{
-    PS_ASSERT_PTR_NON_NULL(stack_id, false);
+static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state)
+{
     PS_ASSERT_PTR_NON_NULL(state, false);
 
@@ -853,11 +834,11 @@
     }
 
-    char *query = "UPDATE stackRun SET state = '%s' WHERE stack_id = '%s'";
+    char *query = "UPDATE stackRun SET state = '%s' WHERE stack_id = %"PRId64;
     if (!p_psDBRunQuery(config->dbh, query, state, stack_id)) {
         psError(PS_ERR_UNKNOWN, false,
-                "failed to change state for stack_id %s", stack_id);
-        return false;
-    }
-
-    return true;
-}
+                "failed to change state for stack_id %"PRId64, stack_id);
+        return false;
+    }
+
+    return true;
+}
Index: trunk/ippTools/src/stacktoolConfig.c
===================================================================
--- trunk/ippTools/src/stacktoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/stacktoolConfig.c	(revision 18336)
@@ -111,7 +111,7 @@
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id",  0,
             "define tessellation ID (required)", NULL);
-    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-warp_id",
+    psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-warp_id",
              PS_META_DUPLICATE_OK,
-             "include this warp ID (multiple OK, required)", NULL);
+             "include this warp ID (multiple OK, required)", 0);
 
     psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple",  0,
@@ -120,6 +120,6 @@
     // -updaterun
     psMetadata *updaterunArgs = psMetadataAlloc();
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "define stack ID (required)", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "define stack ID (required)", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0,
             "set state (required)", NULL);
@@ -133,15 +133,15 @@
     // -addinputskyfile
     psMetadata *addinputskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "define stack ID (required)", NULL);
-    psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "define warp ID (required)", NULL);
+    psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "define stack ID (required)", 0);
+    psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "define warp ID (required)", 0);
 
     // -inputskyfile
     psMetadata *inputskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "search by stack ID", NULL);
-    psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "search by stack ID", 0);
+    psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warp ID", 0);
     psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -151,8 +151,8 @@
     // -tosum
     psMetadata *tosumArgs = psMetadataAlloc();
-    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "search by stack ID", NULL);
-    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "search by stack ID", 0);
+    psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warp ID", 0);
     psMetadataAddU64(tosumArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -162,6 +162,6 @@
     // -addsumskyfile
     psMetadata *addsumskyfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "define stack ID (required)", NULL);
+    psMetadataAddS64(addsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "define stack ID (required)", 0);
     psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-uri", 0,
             "define URI of file", 0);
@@ -183,8 +183,8 @@
     // -sumskyfile
     psMetadata *sumskyfileArgs= psMetadataAlloc();
-    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "search by stack ID", NULL);
-    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "search by stack ID", 0);
+    psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warp ID", 0);
     psMetadataAddU64(sumskyfileArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -194,6 +194,6 @@
     // -revertsumskyfile
     psMetadata *revertsumskyfileArgs= psMetadataAlloc();
-    psMetadataAddStr(revertsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
-            "search by stack ID (required)", NULL);
+    psMetadataAddS64(revertsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,
+            "search by stack ID (required)", 0);
     psMetadataAddS16(revertsumskyfileArgs, PS_LIST_TAIL, "-code",  0,
             "search by fault code", 0);
Index: trunk/ippTools/src/warptool.c
===================================================================
--- trunk/ippTools/src/warptool.c	(revision 18328)
+++ trunk/ippTools/src/warptool.c	(revision 18336)
@@ -111,5 +111,5 @@
 
     // required options
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", true, false);
+    PXOPT_LOOKUP_S64(fake_id, config->args, "-fake_id", true, false);
     PXOPT_LOOKUP_STR(mode, config->args, "-mode", true, false);
     // check mode
@@ -133,5 +133,5 @@
     warpRunRow *warpRun = warpRunRowAlloc(
             0,          // ID
-            (psS64)atoll(fake_id),
+            fake_id,
             mode,
             "run",      // state
@@ -175,46 +175,9 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", false, false);
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    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 warp_id into a psS64
-    if (warp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "warp_id", 0, "==", (psS64)atoll(warp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert chip_id into a psS64
-    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);
-            return false;
-        }
-    }
-
-    // convert exp_id into a psS64
-    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);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
@@ -350,10 +313,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpRun", !simple)) {
@@ -425,10 +382,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpInputImfile", !simple)) {
@@ -500,10 +451,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpRun", !simple)) {
@@ -525,5 +470,5 @@
 
     PXOPT_LOOKUP_STR(mapfile, config->args, "-mapfile", false, false);
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", false, false);
+    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", false, false);
     PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);
 
@@ -544,5 +489,5 @@
     } else {
         warpSkyCellMapInsert(config->dbh,
-            (psS64)atoll(warp_id),
+            warp_id,
             NULL,   // skycell_id
             NULL,   // tess_id
@@ -677,10 +622,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpSkyCellMap", !simple)) {
@@ -752,10 +691,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpPendingSkyCell", !simple)) {
@@ -776,5 +709,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", true, false);
+    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false);
     PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false);
     PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false);
@@ -806,5 +739,5 @@
     // XXX need to validate that this coresponds to an warpInputImfile
     if (!warpSkyfileInsert(config->dbh,
-                           (psS64)atoll(warp_id),
+                           warp_id,
                            skycell_id,
                            tess_id,
@@ -1009,10 +942,4 @@
 
     if (psArrayLength(output)) {
-        if (!convertIdToStr(output)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-            psFree(output);
-            return false;
-        }
-
         // negative simple so the default is true
         if (!ippdbPrintMetadatas(stdout, output, "warpSkyfile", !simple)) {
@@ -1033,48 +960,11 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    PXOPT_LOOKUP_STR(warp_id, config->args, "-warp_id", false, false);
-    PXOPT_LOOKUP_STR(fake_id, config->args, "-fake_id", false, false);
-    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 warp_id into a psS64
-    if (warp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "warpRun.warp_id", 0, "==", (psS64)atoll(warp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");
-            psFree(where);
-            return false;
-        }
-    }
-
+    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
     PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "==");
-
-    // convert fake_id into a psS64
-    if (fake_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "fakeRun.fake_id", 0, "==", (psS64)atoll(fake_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item fake_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert chip_id into a psS64
-    if (chip_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "chipRun.chip_id", 0, "==", (psS64)atoll(chip_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");
-            psFree(where);
-            return false;
-        }
-    }
-
-    // convert exp_id into a psS64
-    if (exp_id) {
-        if (!psMetadataAddS64(where, PS_LIST_TAIL, "rawExp.exp_id", 0, "==", (psS64)atoll(exp_id))) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
-            psFree(where);
-            return false;
-        }
-    }
 
     // XXX These may need to be updated with the table name?
@@ -1193,10 +1083,4 @@
     }
 
-    if (!convertIdToStr(output)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
-        psFree(output);
-        return false;
-    }
-
     // negative simple so the default is true
     if (!ippdbPrintMetadatas(stdout, output, "warpMask", !simple)) {
Index: trunk/ippTools/src/warptoolConfig.c
===================================================================
--- trunk/ippTools/src/warptoolConfig.c	(revision 18328)
+++ trunk/ippTools/src/warptoolConfig.c	(revision 18336)
@@ -49,6 +49,6 @@
     // -definerun
     psMetadata *definerunArgs = psMetadataAlloc();
-    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "define camtool ID (required)", NULL);
+    psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "define camtool ID (required)", 0);
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-mode", 0,
             "define mode (required)", NULL);
@@ -73,15 +73,15 @@
     psMetadata *updaterunArgs = psMetadataAlloc();
     // XXX need to allow multiple fake_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
     // XXX need to allow multiple fake_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "search by fake_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "search by fake_id", 0);
     // XXX need to allow multiple chip_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chip_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chip_id", 0);
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
@@ -174,8 +174,8 @@
     // -exp
     psMetadata *expArgs = psMetadataAlloc();
-    psMetadataAddStr(expArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
-    psMetadataAddStr(expArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "search by camtool ID", NULL);
+    psMetadataAddS64(expArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
+    psMetadataAddS64(expArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "search by camtool ID", 0);
     psMetadataAddU64(expArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -185,8 +185,8 @@
     // -imfile
     psMetadata *imfileArgs = psMetadataAlloc();
-    psMetadataAddStr(imfileArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
-    psMetadataAddStr(imfileArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "search by camtool ID", NULL);
+    psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
+    psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "search by camtool ID", 0);
     psMetadataAddU64(imfileArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -196,6 +196,6 @@
     // -tooverlap
     psMetadata *tooverlapArgs = psMetadataAlloc();
-    psMetadataAddStr(tooverlapArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warp ID", NULL);
+    psMetadataAddS64(tooverlapArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warp ID", 0);
     psMetadataAddU64(tooverlapArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -207,6 +207,6 @@
     psMetadataAddStr(addoverlapArgs, PS_LIST_TAIL, "-mapfile", 0,
             "path to skycell <-> imfile mapping file", NULL);
-    psMetadataAddStr(addoverlapArgs, PS_LIST_TAIL, "-warp_id",  0,
-            "set warp ID", NULL);
+    psMetadataAddS64(addoverlapArgs, PS_LIST_TAIL, "-warp_id",  0,
+            "set warp ID", 0);
     psMetadataAddS16(addoverlapArgs, PS_LIST_TAIL, "-code",  0,
             "set fault code", 0);
@@ -214,6 +214,6 @@
     // -scmap
     psMetadata *scmapArgs = psMetadataAlloc();
-    psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
+    psMetadataAddS64(scmapArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
     psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-skycell_id", 0,
             "search by skycell ID", NULL);
@@ -227,6 +227,6 @@
     // -towarped
     psMetadata *towarpedArgs = psMetadataAlloc();
-    psMetadataAddStr(towarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
+    psMetadataAddS64(towarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
     psMetadataAddU64(towarpedArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -236,6 +236,6 @@
     // -addwarped
     psMetadata *addwarpedArgs = psMetadataAlloc();
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "define warptool ID (required)", NULL);
+    psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "define warptool ID (required)", 0);
     psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
             "define skycell ID (required)", NULL);
@@ -271,14 +271,14 @@
     // -warped
     psMetadata *warpedArgs = psMetadataAlloc();
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
     psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
             "define skycell ID", NULL);
     psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id",  0,
             "define tessellation ID", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-exp_id", 0,
-            "define exposure tag", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-fake_id", 0,
-            "define phase 3 version of exposure tag", NULL);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-exp_id", 0,
+            "define exposure tag", 0);
+    psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0,
+            "define phase 3 version of exposure tag", 0);
     psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
@@ -289,6 +289,6 @@
     psMetadata *revertwarpedArgs = psMetadataAlloc();
     // XXX need to allow multiple fake_ids
-    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
-            "search by warptool ID", NULL);
+    psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID", 0);
     psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
             "search by skycell ID", NULL);
@@ -296,12 +296,12 @@
             "searcy by tessellation ID", NULL);
     // XXX need to allow multiple fake_ids
-    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-fake_id",  0,
-            "search by fake_id", NULL);
+    psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-fake_id",  0,
+            "search by fake_id", 0);
     // XXX need to allow multiple chip_ids
-    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-chip_id",  0,
-            "search by chip_id", NULL);
+    psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "search by chip_id", 0);
     // XXX need to allow multiple exp_ids
-    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_id",  0,
-            "search by exp_id", NULL);
+    psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exp_id", 0);
     psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_name",  0,
             "search by exp_name", NULL);
