Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/Makefile
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/Makefile	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/Makefile	(revision 38622)
@@ -40,6 +40,6 @@
 $(SRC)/dvo_image_merge_dbs.$(ARCH).o \
 $(SRC)/IDmapIO.$(ARCH).o \
+$(SRC)/ConfigInit.$(ARCH).o \
 $(SRC)/SetSignals.$(ARCH).o \
-$(SRC)/ConfigInit.$(ARCH).o \
 $(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/help.$(ARCH).o \
@@ -131,4 +131,6 @@
 $(SRC)/ReadDeleteList.$(ARCH).o \
 $(SRC)/ReadDeleteListExternID.$(ARCH).o \
+$(SRC)/SetSignals.$(ARCH).o \
+$(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/myIndex.$(ARCH).o \
 $(SRC)/match_image.$(ARCH).o \
@@ -140,4 +142,6 @@
 
 DVOVERIFY = \
+$(SRC)/SetSignals.$(ARCH).o \
+$(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/dvoverify.$(ARCH).o \
 $(SRC)/dvoverify_args.$(ARCH).o \
@@ -149,4 +153,6 @@
 
 DVOVERIFY_CLIENT = \
+$(SRC)/SetSignals.$(ARCH).o \
+$(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/dvoverify_client.$(ARCH).o \
 $(SRC)/dvoverify_args.$(ARCH).o \
@@ -158,4 +164,6 @@
 
 DVOUTILS = \
+$(SRC)/SetSignals.$(ARCH).o \
+$(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/dvoutils.$(ARCH).o \
 $(SRC)/dvoutils_args.$(ARCH).o \
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoutils.h
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoutils.h	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoutils.h	(revision 38622)
@@ -33,2 +33,8 @@
 
 Image *dvoutils_load_image_table (char *filename, int *nimage);
+
+int        SetSignals             PROTO((void));
+void       SetProtect             PROTO((int mode));
+void       TrapSignal             PROTO((int sig));
+int        Shutdown               PROTO((char *format, ...)) OHANA_FORMAT(printf, 1, 2);
+
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoverify.h
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoverify.h	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/include/dvoverify.h	(revision 38622)
@@ -62,2 +62,8 @@
 
 void FreeImageIDs (void);
+
+int        SetSignals             PROTO((void));
+void       SetProtect             PROTO((int mode));
+void       TrapSignal             PROTO((int sig));
+int        Shutdown               PROTO((char *format, ...)) OHANA_FORMAT(printf, 1, 2);
+
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoconvert.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoconvert.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoconvert.c	(revision 38622)
@@ -94,4 +94,10 @@
 
     outcatalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT;
+
+    SetProtect (TRUE);
+    if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", outcatalog.filename); exit (1); }
+    if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", outcatalog.filename); exit (1); }
+    SetProtect (FALSE);
+
     dvo_catalog_save (&outcatalog, VERBOSE);
     dvo_catalog_unlock (&outcatalog);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue.c	(revision 38622)
@@ -133,11 +133,8 @@
       // if we receive a signal which would cause us to exit, wait until the full catalog is written
       SetProtect (TRUE);
-      if (!dvo_catalog_save (&outcatalog, VERBOSE)) {
-	fprintf (stderr, "ERROR: failed to save catalog %s\n", outlist[0].filename[j]);
-	exit (1);
-      }
+      if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", outcatalog.filename); exit (1); }
+      if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", outcatalog.filename); exit (1); }
       SetProtect (FALSE);
 
-      dvo_catalog_unlock (&outcatalog);
       dvo_catalog_free (&outcatalog);
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue_threaded.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue_threaded.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeContinue_threaded.c	(revision 38622)
@@ -77,5 +77,10 @@
       SetProtect (TRUE);
       if (!dvo_catalog_save (&outcatalog, VERBOSE)) {
-	fprintf (stderr, "ERROR: failed to save catalog %s\n", outlist[0].filename[j]);
+	fprintf (stderr, "ERROR: failed to save catalog %s\n", outcatalog.filename);
+	threadData->state = TS_FAIL;
+	continue;
+      }
+      if (!dvo_catalog_unlock (&outcatalog)) {
+	fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outcatalog.filename);
 	threadData->state = TS_FAIL;
 	continue;
@@ -83,5 +88,4 @@
       SetProtect (FALSE);
 
-      dvo_catalog_unlock (&outcatalog);
       dvo_catalog_free (&outcatalog);
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeCreate.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeCreate.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeCreate.c	(revision 38622)
@@ -178,6 +178,9 @@
     SkyListFree (inlist);
 
-    dvo_catalog_save (&outcatalog, VERBOSE);
-    dvo_catalog_unlock (&outcatalog);
+    SetProtect (TRUE);
+    if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", outcatalog.filename); exit (1); }
+    if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", outcatalog.filename); exit (1); }
+    SetProtect (FALSE);
+
     dvo_catalog_free (&outcatalog);
   }
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeFromList.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 38622)
@@ -147,8 +147,6 @@
     // if we receive a signal which would cause us to exit, wait until the full catalog is written
     SetProtect (TRUE);
-    if (!dvo_catalog_save (&outcatalog, VERBOSE)) {
-      fprintf (stderr, "ERROR: failed to save catalog %s\n", outputfile);
-      exit (1);
-    }
+    if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save catalog %s\n", outcatalog.filename); exit (1); }
+    if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outcatalog.filename); exit (1); }
     SetProtect (FALSE);
     
@@ -158,5 +156,4 @@
     OutputStatusFree (outstat, 1);
 
-    dvo_catalog_unlock (&outcatalog);
     dvo_catalog_free (&outcatalog);
     
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 38622)
@@ -208,14 +208,7 @@
       // if we receive a signal which would cause us to exit, wait until the full catalog is written
       SetProtect (TRUE);
-      if (!dvo_catalog_save (&outcatalog, VERBOSE)) {
-	fprintf (stderr, "ERROR: failed to save catalog %s\n", outlist[0].filename[j]);
-	exit (1);
-      }
+      if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save catalog %s\n", outcatalog.filename); exit (1); }
+      if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outcatalog.filename); exit (1); }
       SetProtect (FALSE);
-
-      if (!dvo_catalog_unlock (&outcatalog)) {
-	fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outlist[0].filename[j]);
-	exit (1);
-      }
 
       if (!dvo_catalog_unlink_backup (&outcatalog, TRUE)) {
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c	(revision 38622)
@@ -75,5 +75,10 @@
       SetProtect (TRUE);
       if (!dvo_catalog_save (&outcatalog, VERBOSE)) {
-	fprintf (stderr, "ERROR: failed to save catalog %s\n", outlist[0].filename[j]);
+	fprintf (stderr, "ERROR: failed to save catalog %s\n", outcatalog.filename);
+	threadData->state = TS_FAIL;
+	continue;
+      }
+      if (!dvo_catalog_unlock (&outcatalog)) {
+	fprintf (stderr, "ERROR: failed to save catalog %s\n", outcatalog.filename);
 	threadData->state = TS_FAIL;
 	continue;
@@ -81,5 +86,4 @@
       SetProtect (FALSE);
 
-      dvo_catalog_unlock (&outcatalog);
       dvo_catalog_free (&outcatalog);
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomerge_client.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomerge_client.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvomerge_client.c	(revision 38622)
@@ -3,4 +3,5 @@
 int main (int argc, char **argv) {
 
+  SetSignals ();
   dvomerge_client_help (argc, argv);
   ConfigInit (&argc, argv);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepair.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepair.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepair.c	(revision 38622)
@@ -7,4 +7,5 @@
   // exit (2);
 
+  SetSignals ();
   dvorepair_help(argc, argv);
   
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairCPT.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairCPT.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairCPT.c	(revision 38622)
@@ -39,4 +39,6 @@
     exit (2);
   }
+
+  SetSignals ();
 
   imageFilename  = argv[1];
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairImageVsMeasure.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairImageVsMeasure.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvorepairImageVsMeasure.c	(revision 38622)
@@ -39,4 +39,5 @@
   }
 
+  SetSignals ();
   catdir = argv[1];
   Ntol = atoi(argv[2]);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvosecfilt_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvosecfilt_catalogs.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvosecfilt_catalogs.c	(revision 38622)
@@ -82,6 +82,9 @@
     catalog.Nsecfilt_disk = Nsecfilt * catalog.Naverage_disk;
 
-    dvo_catalog_save (&catalog, VERBOSE);
-    dvo_catalog_unlock (&catalog);
+    SetProtect (TRUE);
+    if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); }
+    if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); }
+    SetProtect (FALSE);
+
     dvo_catalog_free (&catalog);
   }
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoutils.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoutils.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoutils.c	(revision 38622)
@@ -4,4 +4,5 @@
 
   // check various options
+  SetSignals ();
   dvoutils_args (&argc, argv);
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify.c	(revision 38622)
@@ -14,4 +14,5 @@
 
   // check various options
+  SetSignals ();
   dvoverify_args (&argc, argv);
   CATDIR = argv[1];
Index: /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify_client.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify_client.c	(revision 38621)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/dvomerge/src/dvoverify_client.c	(revision 38622)
@@ -8,4 +8,5 @@
 
   // check various options
+  SetSignals ();
   dvoverify_client_args (&argc, argv);
   CATDIR = argv[1];
