Index: trunk/ippTools/src/pztool.c
===================================================================
--- trunk/ippTools/src/pztool.c	(revision 6978)
+++ trunk/ippTools/src/pztool.c	(revision 7921)
@@ -16,32 +16,38 @@
 static bool pzsearchFlushPendingExp(pxConfig *config);
 
+# define MODECASE(caseName, func) \
+    case caseName: \
+    if (!func(config)) { \
+                goto FAIL; \
+            } \
+    break;
+
+
 int main(int argc, char **argv)
 {
+    psLibInit(NULL);
+
     pxConfig *config = pzsearchConfig(NULL, argc, argv);
 
     switch (config->mode) {
-        case PX_MODE_SEEN:
-            if (!seenMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case PX_MODE_PENDING:
-            if (!pendingMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case PX_MODE_COPYDONE:
-            if (!copydoneMode(config)) {
-                goto FAIL;
-            }
-            break;
+        MODECASE(PZSEARCH_MODE_SEEN, seenMode);
+        MODECASE(PZSEARCH_MODE_PENDING, pendingMode);
+        MODECASE(PZSEARCH_MODE_COPYDONE, copydoneMode);
         default:
             psAbort(argv[0], "invalid option (this should not happen)");
     }
 
+    psFree(config);
+    pmConfigDone();
+    psLibFinalize();
+
+
     exit(EXIT_SUCCESS);
 
 FAIL:
     psFree(config);
+    pmConfigDone();
+    psLibFinalize();
+
     exit(EXIT_FAILURE);
 }
