Index: /trunk/Ohana/src/addstar/Makefile
===================================================================
--- /trunk/Ohana/src/addstar/Makefile	(revision 6992)
+++ /trunk/Ohana/src/addstar/Makefile	(revision 6993)
@@ -56,4 +56,5 @@
 $(SRC)/parse_time.$(ARCH).o \
 $(SRC)/replace_match.$(ARCH).o \
+$(SRC)/resort_catalog.$(ARCH).o \
 $(SRC)/SetSignals.$(ARCH).o \
 $(SRC)/sort_lists.$(ARCH).o \
Index: /trunk/Ohana/src/addstar/include/addstar.h
===================================================================
--- /trunk/Ohana/src/addstar/include/addstar.h	(revision 6992)
+++ /trunk/Ohana/src/addstar/include/addstar.h	(revision 6993)
@@ -33,5 +33,5 @@
 typedef struct sockaddr_in SockAddress;
 
-enum {M_IMAGE, M_REFLIST, M_REFCAT, M_FAKEIMAGE};
+enum {M_IMAGE, M_REFLIST, M_REFCAT, M_FAKEIMAGE, M_RESORT};
 
 /* global which define database info / data sources (KEEP) */
@@ -151,4 +151,5 @@
 Stars     *rd_gsc                 PROTO((char *filename, int *nstars));
 int        replace_match          PROTO((Average *average, Measure *measure, Stars *star));
+void       resort_catalog         PROTO((Catalog *catalog));
 Stars     *rfits                  PROTO((FILE *f, unsigned int *nstars));
 Stars     *rtext                  PROTO((FILE *f, unsigned int *nstars));
Index: /trunk/Ohana/src/addstar/src/addstar.c
===================================================================
--- /trunk/Ohana/src/addstar/src/addstar.c	(revision 6992)
+++ /trunk/Ohana/src/addstar/src/addstar.c	(revision 6993)
@@ -51,4 +51,5 @@
       skylist = SkyListForStars (sky, -1, stars, Nstars);
       break;
+    case M_RESORT:
     case M_REFCAT:
       skylist = SkyListByPatch (sky, -1, &UserPatch);
@@ -124,4 +125,9 @@
 	if (Nsubset) free (subset);
 	break;
+      case M_RESORT:
+	if (options.nosort == 3) catalog.sorted = FALSE;
+	resort_catalog (&catalog);
+	Nsubset = 1;
+	break;
     }
 
Index: /trunk/Ohana/src/addstar/src/args.c
===================================================================
--- /trunk/Ohana/src/addstar/src/args.c	(revision 6992)
+++ /trunk/Ohana/src/addstar/src/args.c	(revision 6993)
@@ -4,5 +4,5 @@
 AddstarClientOptions args (int argc, char **argv, AddstarClientOptions options) {
   
-  int N;
+  int i, N;
   int QUALITY_AIRMASS;
 
@@ -33,4 +33,8 @@
     remove_argument (N, &argc, argv);
     FAKE_THETA = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-resort"))) {
+    options.mode = M_RESORT;
     remove_argument (N, &argc, argv);
   }
@@ -52,5 +56,22 @@
     UserPatch.Dmax = atof (argv[N]);
     remove_argument (N, &argc, argv);
-  }
+  } else {
+      if (options.mode == M_IMAGE) goto allow;
+      if (options.mode == M_FAKEIMAGE) goto allow;
+      if (options.mode == M_REFLIST) goto allow;
+      if (options.mode == M_REFCAT) {
+	  fprintf (stderr, "you have requested uploading from a catalog to the entire sky in one pass\n");
+      }
+      if (options.mode == M_RESORT) {
+	  fprintf (stderr, "you have requested resorting the entire sky in one pass\n");
+      }
+      fprintf (stderr, "this could be a time consuming operation.  type Ctrl-C within 5 seconds to cancel\n");
+      for (i = 5; i > 0; i--) {
+	  fprintf (stderr, "%d.. ", i);
+	  usleep (1000000);
+      }
+      fprintf (stderr, "\n");
+  }
+allow:
   /* override any header PHOTCODE values */
   options.photcode = 0;
@@ -147,4 +168,8 @@
     remove_argument (N, &argc, argv);
   }
+  if ((N = get_argument (argc, argv, "-force-sort"))) {
+    options.nosort = 3;  // temporary mode to mean 'force-sort'
+    remove_argument (N, &argc, argv);
+  }
 
   /* only add image potion to image table */
@@ -242,4 +267,7 @@
   }
 
+  if ((options.mode == M_RESORT) && (argc == 1)) return (options);
+  if (argc == 2) return (options);
+
   if ((options.mode == M_REFLIST) && (options.photcode == 0)) {
     fprintf (stderr, "photcode must be specified for -ref\n");
@@ -247,12 +275,10 @@
   }
 
-  if (argc != 2) {
-    fprintf (stderr, "USAGE: addstar (filename)\n");
-    fprintf (stderr, "USAGE: addstar -cat (catalog)\n");
-    fprintf (stderr, "USAGE: addstar -ref (filename)\n");
-    fprintf (stderr, "USAGE: addstar -fakeimage (ra) (dec) (theta) (name)\n");
-    exit (2);
-  }
-  return (options);
+  fprintf (stderr, "USAGE: addstar (filename)\n");
+  fprintf (stderr, "USAGE: addstar -cat (catalog)\n");
+  fprintf (stderr, "USAGE: addstar -ref (filename)\n");
+  fprintf (stderr, "USAGE: addstar -fakeimage (ra) (dec) (theta) (name)\n");
+  fprintf (stderr, "USAGE: addstar -resort (SkyRegion)\n");
+  exit (2);
 }
 
@@ -266,4 +292,6 @@
   fprintf (stderr, "  addstar -cat (catalog)");
   fprintf (stderr, "     add data from catalog (USNO/2MASS/GSC) to database\n\n");
+  fprintf (stderr, "  addstar -resort (SkyRegion)");
+  fprintf (stderr, "     perform measure sorting for the specified catalog\n\n");
 
   fprintf (stderr, "  optional flags:\n");
