Index: /trunk/ippTools/src/Makefile.am
===================================================================
--- /trunk/ippTools/src/Makefile.am	(revision 6977)
+++ /trunk/ippTools/src/Makefile.am	(revision 6978)
@@ -2,5 +2,13 @@
 
 include_HEADERS = pxtools.h
-noinst_HEADERS = pzgetexp.h pzgetimfiles.h slurp.h
+noinst_HEADERS = \
+	pzgetexp.h \
+	pzgetimfiles.h \
+	slurp.h \
+	pxadmin.h \
+	pzsearch.h \
+	p0search.h \
+	p2search.h
+
 lib_LTLIBRARIES = libpxtools.la
 libpxtools_la_CFLAGS	= $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(METADATADB_CFLAGS) $(pxtools_CFLAGS)
Index: /trunk/ippTools/src/chiptool.c
===================================================================
--- /trunk/ippTools/src/chiptool.c	(revision 6977)
+++ /trunk/ippTools/src/chiptool.c	(revision 6978)
@@ -1,5 +1,10 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdlib.h>
 
 #include "pxtools.h"
+#include "p2search.h"
 
 static bool quickMode(pxConfig *config);
@@ -9,21 +14,19 @@
 
 int main(int argc, char **argv) {
-    pxConfig        config; 
-
-    p2searchConfig(&config, argc, argv);
-
-    switch (config.mode) {
+    pxConfig *config = p2searchConfig(NULL, argc, argv);
+
+    switch (config->mode) {
         case PX_MODE_QUICK:
-            if (!quickMode(&config)) {
+            if (!quickMode(config)) {
                 exit(EXIT_FAILURE);
             }
             break;
         case PX_MODE_DEFINE:
-            if (!defineMode(&config)) {
+            if (!defineMode(config)) {
                 exit(EXIT_FAILURE);
             }
             break;
         case PX_MODE_PENDING:
-            if (!pendingMode(&config)) {
+            if (!pendingMode(config)) {
                 exit(EXIT_FAILURE);
             }
@@ -38,5 +41,5 @@
     */
         case PX_MODE_DONE:
-            if (!doneMode(&config)) {
+            if (!doneMode(config)) {
                 exit(EXIT_FAILURE);
             }
Index: /trunk/ippTools/src/chiptool.h
===================================================================
--- /trunk/ippTools/src/chiptool.h	(revision 6978)
+++ /trunk/ippTools/src/chiptool.h	(revision 6978)
@@ -0,0 +1,8 @@
+#ifndef P2SEARCH_H
+#define P2SEARCH_H 1
+
+#include "pxtools.h"
+
+pxConfig *p2searchConfig(pxConfig *config, int argc, char **argv);
+
+#endif // P2SEARCH_H
Index: /trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- /trunk/ippTools/src/chiptoolConfig.c	(revision 6977)
+++ /trunk/ippTools/src/chiptoolConfig.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 
@@ -4,5 +8,7 @@
 
 bool p2searchConfig(pxConfig *config, int argc, char **argv) {
-    PS_ASSERT_PTR_NON_NULL(config, false);
+    if (!config) {
+        config = pxConfigAlloc();
+    }
 
     if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) {
Index: /trunk/ippTools/src/p2insertPendingFrames.c
===================================================================
--- /trunk/ippTools/src/p2insertPendingFrames.c	(revision 6977)
+++ /trunk/ippTools/src/p2insertPendingFrames.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/p2pendingToDone.c
===================================================================
--- /trunk/ippTools/src/p2pendingToDone.c	(revision 6977)
+++ /trunk/ippTools/src/p2pendingToDone.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/p2rawToPending.c
===================================================================
--- /trunk/ippTools/src/p2rawToPending.c	(revision 6977)
+++ /trunk/ippTools/src/p2rawToPending.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/p2searchDoneFrames.c
===================================================================
--- /trunk/ippTools/src/p2searchDoneFrames.c	(revision 6977)
+++ /trunk/ippTools/src/p2searchDoneFrames.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/p2searchPendingFrames.c
===================================================================
--- /trunk/ippTools/src/p2searchPendingFrames.c	(revision 6977)
+++ /trunk/ippTools/src/p2searchPendingFrames.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/p2updatePending.c
===================================================================
--- /trunk/ippTools/src/p2updatePending.c	(revision 6977)
+++ /trunk/ippTools/src/p2updatePending.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/pxadmin.c
===================================================================
--- /trunk/ippTools/src/pxadmin.c	(revision 6977)
+++ /trunk/ippTools/src/pxadmin.c	(revision 6978)
@@ -1,15 +1,18 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdlib.h>
 
 #include "pxtools.h"
+#include "pxadmin.h"
 
 int main(int argc, char **argv)
 {
-    pxConfig        config;
+    pxConfig *config = pxAdminConfig(NULL, argc, argv);
 
-    pxAdminConfig(&config, argc, argv);
-
-    switch (config.mode) {
+    switch (config->mode) {
         case PX_MODE_RECREATE:
-            if (!pxDeleteTables(&config)) {
+            if (!pxDeleteTables(config)) {
                 psError(PS_ERR_UNKNOWN, false, "table deletion failed");
                 exit(EXIT_FAILURE);
@@ -17,5 +20,5 @@
             // fall through
         case PX_MODE_CREATE:
-            if (!pxCreateTables(&config)) {
+            if (!pxCreateTables(config)) {
                 psError(PS_ERR_UNKNOWN, false, "table creation failed");
                 exit(EXIT_FAILURE);
@@ -23,5 +26,5 @@
             break;
         case PX_MODE_DELETE:
-            if (!pxDeleteTables(&config)) {
+            if (!pxDeleteTables(config)) {
                 psError(PS_ERR_UNKNOWN, false, "table deletion failed");
                 exit(EXIT_FAILURE);
Index: /trunk/ippTools/src/pxadmin.h
===================================================================
--- /trunk/ippTools/src/pxadmin.h	(revision 6978)
+++ /trunk/ippTools/src/pxadmin.h	(revision 6978)
@@ -0,0 +1,8 @@
+#ifndef PXADMIN_H
+#define PXADMIN_H 1
+
+#include "pxtools.h"
+
+pxConfig *pxAdminConfig (pxConfig *config, int argc, char **argv);
+
+#endif // PXADMIN_H
Index: /trunk/ippTools/src/pxadminConfig.c
===================================================================
--- /trunk/ippTools/src/pxadminConfig.c	(revision 6977)
+++ /trunk/ippTools/src/pxadminConfig.c	(revision 6978)
@@ -1,8 +1,14 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 #include "pxtools.h"
 
-bool pxAdminConfig(pxConfig *config, int argc, char **argv)
+pxConfig *pxAdminConfig(pxConfig *config, int argc, char **argv)
 {
-    PS_ASSERT_PTR_NON_NULL(config, false);
+    if (!config) {
+        config = pxConfigAlloc();
+    }
 
     if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) {
@@ -70,5 +76,5 @@
     // define Database handle, if used
     config->dbh = pmConfigDB(config->site);
-    return true;
+    return config;
 } 
 
Index: /trunk/ippTools/src/pxconfig.c
===================================================================
--- /trunk/ippTools/src/pxconfig.c	(revision 6977)
+++ /trunk/ippTools/src/pxconfig.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/pxframes.c
===================================================================
--- /trunk/ippTools/src/pxframes.c	(revision 6977)
+++ /trunk/ippTools/src/pxframes.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdio.h>
 
Index: /trunk/ippTools/src/pxtables.c
===================================================================
--- /trunk/ippTools/src/pxtables.c	(revision 6977)
+++ /trunk/ippTools/src/pxtables.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include "pxtools.h"
 
Index: /trunk/ippTools/src/pxtools.h
===================================================================
--- /trunk/ippTools/src/pxtools.h	(revision 6977)
+++ /trunk/ippTools/src/pxtools.h	(revision 6978)
@@ -120,6 +120,4 @@
 bool pxCreateTables (pxConfig *config);
 bool pxDeleteTables (pxConfig *config);
-bool pxAdminConfig (pxConfig *config, int argc, char **argv);
-bool p2searchConfig (pxConfig *config, int argc, char **argv);
 
 psArray *p2rawToPending (pxConfig *config, psArray *rawFrames);
@@ -149,6 +147,4 @@
 psArray *newFrameSearch(pxConfig *config);
 
-bool p0searchConfig(pxConfig *config, int argc, char **argv);
-
 rawScienceFrame *newToRawScienceFrame(newFrame *newFrame);
 bool rawScienceFrameInsert(pxConfig *config, rawScienceFrame *frame);
@@ -156,6 +152,4 @@
 bool rawDetrendFrameInsert(pxConfig *config, rawDetrendFrame *frame);
 
-bool pzsearchConfig(pxConfig *config, int argc, char **argv);
-
 #endif // PXTOOLS_H
 
Index: /trunk/ippTools/src/pzgetexpConfig.c
===================================================================
--- /trunk/ippTools/src/pzgetexpConfig.c	(revision 6977)
+++ /trunk/ippTools/src/pzgetexpConfig.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 
Index: /trunk/ippTools/src/pzgetimfilesConfig.c
===================================================================
--- /trunk/ippTools/src/pzgetimfilesConfig.c	(revision 6977)
+++ /trunk/ippTools/src/pzgetimfilesConfig.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 
Index: /trunk/ippTools/src/pztool.c
===================================================================
--- /trunk/ippTools/src/pztool.c	(revision 6977)
+++ /trunk/ippTools/src/pztool.c	(revision 6978)
@@ -1,5 +1,10 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdlib.h>
 
 #include "pxtools.h"
+#include "pzsearch.h"
 
 static bool seenMode(pxConfig *config);
@@ -13,7 +18,5 @@
 int main(int argc, char **argv)
 {
-    pxConfig *config = pxConfigAlloc();
-
-    pzsearchConfig(config, argc, argv);
+    pxConfig *config = pzsearchConfig(NULL, argc, argv);
 
     switch (config->mode) {
Index: /trunk/ippTools/src/pztool.h
===================================================================
--- /trunk/ippTools/src/pztool.h	(revision 6978)
+++ /trunk/ippTools/src/pztool.h	(revision 6978)
@@ -0,0 +1,8 @@
+#ifndef PZSEARCH_H
+#define PZSEARCH_H 1
+
+#include "pxtools.h"
+
+pxConfig *pzsearchConfig(pxConfig *config, int argc, char **argv);
+
+#endif // PZSEARCH_H
Index: /trunk/ippTools/src/pztoolConfig.c
===================================================================
--- /trunk/ippTools/src/pztoolConfig.c	(revision 6977)
+++ /trunk/ippTools/src/pztoolConfig.c	(revision 6978)
@@ -1,8 +1,14 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 
 #include "pxtools.h"
 
-bool pzsearchConfig(pxConfig *config, int argc, char **argv) {
-    PS_ASSERT_PTR_NON_NULL(config, false);
+pxConfig *pzsearchConfig(pxConfig *config, int argc, char **argv) {
+    if (!config) {
+        config = pxConfigAlloc();
+    }
 
     if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) {
@@ -95,5 +101,5 @@
             psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
             psFree(where);
-            return NULL;
+            exit(EXIT_FAILURE);
         }
     }
@@ -102,5 +108,5 @@
             psError(PS_ERR_UNKNOWN, false, "failed to add item class");
             psFree(where);
-            return NULL;
+            exit(EXIT_FAILURE);
         }
     }
@@ -109,5 +115,5 @@
             psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
             psFree(where);
-            return NULL;
+            exit(EXIT_FAILURE);
         }
     }
@@ -123,4 +129,4 @@
     config->dbh = pmConfigDB(config->site);
 
-    return true;
+    return config;
 } 
Index: /trunk/ippTools/src/regtool.c
===================================================================
--- /trunk/ippTools/src/regtool.c	(revision 6977)
+++ /trunk/ippTools/src/regtool.c	(revision 6978)
@@ -1,5 +1,10 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdlib.h>
 
 #include "pxtools.h"
+#include "p0search.h"
 
 static bool pendingMode(pxConfig *config);
@@ -11,7 +16,5 @@
 int main(int argc, char **argv)
 {
-    pxConfig *config = pxConfigAlloc();
-
-    p0searchConfig(config, argc, argv);
+    pxConfig *config = p0searchConfig(NULL, argc, argv);
 
     switch (config->mode) {
Index: /trunk/ippTools/src/regtool.h
===================================================================
--- /trunk/ippTools/src/regtool.h	(revision 6978)
+++ /trunk/ippTools/src/regtool.h	(revision 6978)
@@ -0,0 +1,8 @@
+#ifndef P0SEARCH_H
+#define P0SEARCH_H 1
+
+#include "pxtools.h"
+
+pxConfig *p0searchConfig(pxConfig *config, int argc, char **argv);
+
+#endif // P0SEARCH_H
Index: /trunk/ippTools/src/regtoolConfig.c
===================================================================
--- /trunk/ippTools/src/regtoolConfig.c	(revision 6977)
+++ /trunk/ippTools/src/regtoolConfig.c	(revision 6978)
@@ -1,2 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <pmConfig.h>
 
@@ -4,5 +8,7 @@
 
 bool p0searchConfig(pxConfig *config, int argc, char **argv) {
-    PS_ASSERT_PTR_NON_NULL(config, false);
+    if (!config) {
+        config = pxConfigAlloc();
+    }
 
     if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) {
