Index: trunk/ippTools/src/pzgetimfiles.c
===================================================================
--- trunk/ippTools/src/pzgetimfiles.c	(revision 11857)
+++ trunk/ippTools/src/pzgetimfiles.c	(revision 11859)
@@ -40,4 +40,8 @@
 
     pxConfig *config = pzgetimfilesConfig(NULL, argc, argv);
+    if (!config) {
+        psError(PXTOOLS_ERR_CONFIG, false, "failed to configure");
+        goto FAIL;
+    }
 
     if (!go(config)) {
@@ -53,4 +57,5 @@
 FAIL:
     psErrorStackPrint(stderr, "\n");
+    int exit_status = pxerrorGetExitStatus();
 
     psFree(config);
@@ -58,5 +63,5 @@
     psLibFinalize();
 
-    exit(EXIT_FAILURE);
+    exit(exit_status);
 }
 
Index: trunk/ippTools/src/pzgetimfilesConfig.c
===================================================================
--- trunk/ippTools/src/pzgetimfilesConfig.c	(revision 11857)
+++ trunk/ippTools/src/pzgetimfilesConfig.c	(revision 11859)
@@ -29,5 +29,6 @@
 #include "pxtools.h"
 
-pxConfig *pzgetimfilesConfig(pxConfig *config, int argc, char **argv) {
+pxConfig *pzgetimfilesConfig(pxConfig *config, int argc, char **argv)
+{
     if (!config) {
         config = pxConfigAlloc();
@@ -39,5 +40,6 @@
     if (! config->modules) {
         psError(PS_ERR_UNKNOWN, false, "Can't find site configuration!\n");
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
@@ -64,5 +66,6 @@
         psArgumentHelp(args);
         psFree(args);
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
@@ -75,13 +78,8 @@
     if(!config->dbh) {
         psError(PS_ERR_UNKNOWN, false, "Can't connect to db\n");
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
     return config;
-
-FAIL:
-    psFree(config);
-    pmConfigDone();
-    psLibFinalize();
-    exit(EXIT_FAILURE);
 }
