Index: /trunk/Ohana/src/opihi/cmd.data/uniq.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/uniq.c	(revision 39296)
+++ /trunk/Ohana/src/opihi/cmd.data/uniq.c	(revision 39297)
@@ -8,4 +8,10 @@
   int Nnew, i, N;
   Vector *ivec, *ovec;
+
+  int VERBOSE = FALSE;
+  if ((N = get_argument (argc, argv, "-v"))) {
+    remove_argument (N, &argc, argv);
+    VERBOSE = TRUE;
+  }
 
   Vector *cvec = NULL;
@@ -48,5 +54,9 @@
     opihi_flt *vsrc = indata;
 
-    for (i = 0; i < ivec->Nelements; Nnew++) {
+    int onePercent = ivec->Nelements / 100;
+
+    void *Signal = signal (SIGINT, handle_interrupt);
+    interrupt = FALSE;
+    for (i = 0; (i < ivec->Nelements) && !interrupt; Nnew++) {
       vtgt[Nnew] = *vsrc;
       int Ndup = 0;
@@ -56,4 +66,5 @@
 	vsrc ++;
 	Ndup ++;
+	if (VERBOSE && (i % onePercent == 0)) gprint (GP_ERR, ".");
       }
       if (cvec) {
@@ -61,4 +72,6 @@
       }
     }
+    signal (SIGINT, Signal);
+    if (VERBOSE) gprint (GP_ERR, "\n");
     free (indata);
   } else {
@@ -75,5 +88,9 @@
     opihi_int *vsrc = indata;
 
-    for (i = 0; i < ivec->Nelements; Nnew++) {
+    int onePercent = ivec->Nelements / 100;
+
+    void *Signal = signal (SIGINT, handle_interrupt);
+    interrupt = FALSE;
+    for (i = 0; (i < ivec->Nelements) && !interrupt; Nnew++) {
       vtgt[Nnew] = *vsrc;
       int Ndup = 0;
@@ -83,4 +100,5 @@
 	vsrc ++;
 	Ndup ++;
+	if (VERBOSE && (i % onePercent == 0)) gprint (GP_ERR, ".");
       }
       if (cvec) {
@@ -88,4 +106,6 @@
       }
     }
+    signal (SIGINT, Signal);
+    if (VERBOSE) gprint (GP_ERR, "\n");
     free (indata);
   }
