Index: /trunk/ippTools/src/pxadmin.c
===================================================================
--- /trunk/ippTools/src/pxadmin.c	(revision 17854)
+++ /trunk/ippTools/src/pxadmin.c	(revision 17855)
@@ -2,5 +2,5 @@
  * pxadmin.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
@@ -29,4 +29,5 @@
 
 bool deleteMode(pxConfig *config);
+static bool runMultipleStatments(pxConfig *config, const char *query);
 
 int main(int argc, char **argv)
@@ -94,7 +95,30 @@
     }
 
+    if (!runMultipleStatments(config, query)) {
+        if (!psDBRollback(config->dbh)) {
+                psError(PS_ERR_UNKNOWN, false, "database error");
+        }
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    // COMMIT
+    if (!psDBCommit(config->dbh)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+
+    return true;
+}
+
+static bool runMultipleStatments(pxConfig *config, const char *query)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+    PS_ASSERT_PTR_NON_NULL(query, false);
+
     // loop over all statements in string
     psList *statements = psStringSplit(query, ";", false);
-    psFree(query);
 
     psString q = NULL;
@@ -102,7 +126,4 @@
     while ((q = psListGetAndIncrement(iter))) {
         if (!p_psDBRunQuery(config->dbh, q)) {
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
             psError(PS_ERR_UNKNOWN, false, "database error");
             psFree(iter);
@@ -114,10 +135,4 @@
     psFree(statements);
 
-    // COMMIT
-    if (!psDBCommit(config->dbh)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
-
     return true;
 }
