Index: /trunk/Ohana/src/dvomerge/include/dvomerge.h
===================================================================
--- /trunk/Ohana/src/dvomerge/include/dvomerge.h	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/include/dvomerge.h	(revision 35590)
@@ -25,4 +25,5 @@
 
 int    VERBOSE;
+int    VERIFY;
 char   CATDIR[256];
 char   GSCFILE[256];
Index: /trunk/Ohana/src/dvomerge/src/args.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/args.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/args.c	(revision 35590)
@@ -12,4 +12,17 @@
     remove_argument (N, argc, argv);
   }
+
+  /* verify merge status of output tables, but do not modify */
+  VERIFY = FALSE;
+  if ((N = get_argument (*argc, argv, "-verify"))) {
+    VERIFY = TRUE;
+    remove_argument (N, argc, argv);
+  }
+  if ((N = get_argument (*argc, argv, "-check-only"))) {
+    VERIFY = TRUE;
+    remove_argument (N, argc, argv);
+  }
+
+  /* use a different photcode file to define mean values */
   if ((N = get_argument (*argc, argv, "-photcode-file"))) {
     remove_argument (N, argc, argv);
@@ -113,4 +126,15 @@
   }
 
+  /* verify merge status of output tables, but do not modify */
+  VERIFY = FALSE;
+  if ((N = get_argument (*argc, argv, "-verify"))) {
+    VERIFY = TRUE;
+    remove_argument (N, argc, argv);
+  }
+  if ((N = get_argument (*argc, argv, "-check-only"))) {
+    VERIFY = TRUE;
+    remove_argument (N, argc, argv);
+  }
+
   /* replace measurement, don't duplicate */
   REPLACE_BY_PHOTCODE = FALSE;
Index: /trunk/Ohana/src/dvomerge/src/dvomerge.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/dvomerge.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/dvomerge.c	(revision 35590)
@@ -10,6 +10,14 @@
   if (argc == 6) {
     if (!strcasecmp (argv[2], "and")) {
+      if (VERIFY) {
+	fprintf (stderr, "WARNING / ERROR : dvomerge (input1) and (input2) into (output) : VERIFY mode not implemented\n");
+	exit (3);
+      }
       dvomergeCreate (argc, argv);
     } else {
+      if (VERIFY) {
+	fprintf (stderr, "WARNING / ERROR : dvomerge (input) into (output) from (list) : VERIFY mode not implemented\n");
+	exit (3);
+      }
       dvomergeFromList (argc, argv);
     }
@@ -26,9 +34,13 @@
 }
 
-/* we have two possible modes of operation:
+/* we have two major modes of operation:
 
-   Create   : dvomerge (in1) and (in2) to (out) -- create a new db from two input dbs
-   Update   : dvomerge (in) into (out)          -- merge a new db into an existing db
-   Continue : dvomerge (in) into (out) continue -- merge a new db into an existing db
+   Create    : dvomerge (in1) and (in2) to (out) -- create a new db from two input dbs
+   Update    : dvomerge (in) into (out)          -- merge a new db into an existing db
 
+   we also have varients on Update:
+   Continue  : dvomerge (in) into (out) continue -- merge only unmerged tables into the existing db
+   From List : dvomerge (in) into (out) from (list) -- merge only specified tables into the existing db
+
+   neither of the 2 above modes update the image table
 */
Index: /trunk/Ohana/src/dvomerge/src/dvomergeFromList.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 35590)
@@ -108,4 +108,6 @@
     dmhObjectStats *inStats = dmhObjectStatsRead (inputfile);
 
+    // XXX : we are not checking for already-merged entries
+
     LoadCatalog (&incatalog, NULL, inputfile, "r", NsecfiltInput);
 
Index: /trunk/Ohana/src/dvomerge/src/dvomergeUpdate.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/dvomergeUpdate.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/dvomergeUpdate.c	(revision 35590)
@@ -23,4 +23,5 @@
     CONTINUE = TRUE;
   }
+  if (VERIFY) CONTINUE = TRUE;
 
   input  = argv[1];
Index: /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 35590)
@@ -76,8 +76,12 @@
     }
     if (!missed) {
-      if (VERBOSE) fprintf (stderr, "skipping %s, empty or already merged\n", inlist[0].filename[i]);
+      if (VERBOSE || VERIFY) fprintf (stderr, "skipping %s, already merged\n", inlist[0].filename[i]);
       OutputStatusFree (outstat, outlist->Nregions);
       dmhObjectStatsFree (inStats);
       SkyListFree (outlist); 
+      continue;
+    }
+    if (VERIFY) { 
+      fprintf (stderr, "%s NOT merged\n", inlist[0].filename[i]);
       continue;
     }
@@ -193,4 +197,5 @@
     char tmpline[DVO_MAX_PATH];
     if (VERBOSE)             { snprintf (tmpline, DVO_MAX_PATH, "%s -v",       command); strcpy (command, tmpline); }
+    if (VERIFY)              { snprintf (tmpline, DVO_MAX_PATH, "%s -verify",  command); strcpy (command, tmpline); }
     if (REPLACE_BY_PHOTCODE) { snprintf (tmpline, DVO_MAX_PATH, "%s -replace", command); strcpy (command, tmpline); }
 
Index: /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/dvomergeUpdate_threaded.c	(revision 35590)
@@ -129,4 +129,7 @@
   output = argv[3];
 
+  fprintf (stderr, "WARNING / ERROR : multi-threaded dvomerge does not handle merge tracking yet\n");
+  exit (2);
+
   if (ALTERNATE_PHOTCODE_FILE) {
     fprintf (stderr, "cannot specify photcodes when merging into an existing catdir\n");
Index: /trunk/Ohana/src/dvomerge/src/help.c
===================================================================
--- /trunk/Ohana/src/dvomerge/src/help.c	(revision 35589)
+++ /trunk/Ohana/src/dvomerge/src/help.c	(revision 35590)
@@ -59,4 +59,6 @@
   fprintf (stderr, "  optional flags:\n");
   fprintf (stderr, "  -v                    	  : verbose mode\n");
+  fprintf (stderr, "  -verify                  	  : verify merge status of output tables, but do not modify\n");
+  fprintf (stderr, "  -check-only              	  : verify merge status of output tables, but do not modify [same as -verify]\n");
   fprintf (stderr, "  -help                 	  : this list\n");
   fprintf (stderr, "  -h                    	  : this list\n\n");
@@ -81,4 +83,6 @@
   fprintf (stderr, "  optional flags:\n");
   fprintf (stderr, "  -v                    	  : verbose mode\n");
+  fprintf (stderr, "  -verify                  	  : verify merge status of output tables, but do not modify\n");
+  fprintf (stderr, "  -check-only              	  : verify merge status of output tables, but do not modify [same as -verify]\n");
   fprintf (stderr, "  -help                 	  : this list\n");
   fprintf (stderr, "  -h                    	  : this list\n\n");
