Index: /trunk/Ohana/src/getstar/include/getstar.h
===================================================================
--- /trunk/Ohana/src/getstar/include/getstar.h	(revision 6238)
+++ /trunk/Ohana/src/getstar/include/getstar.h	(revision 6239)
@@ -2,4 +2,13 @@
 # include <dvo.h>
 # include <signal.h>
+
+enum {
+  BY_NOTHING,
+  BY_REGION,
+  BY_RADIUS,
+  BY_CATALOG,
+  BY_IMAGE,
+  BY_IMMATCH,
+};
 
 typedef struct {
@@ -17,4 +26,5 @@
 
 /* global variables set in parameter file */
+# if (0)
 char   ImageCat[256];
 char   ImageTemplate[256];
@@ -26,9 +36,14 @@
 double DEFAULT_RADIUS, NSIGMA, SNLIMIT;
 double ZeroPt;
-int    VERBOSE;
 int    SKIP_MISSED;
 int    XOVERSCAN, YOVERSCAN;
 int    XMIN, XMAX, YMIN, YMAX;
 int    ACCEPT_ASTROM;
+# endif
+
+int    VERBOSE;
+int    MODE;
+SkyRegion REGION;
+char *IMAGENAME;
 
 PhotCode *thiscode;
Index: /trunk/Ohana/src/getstar/src/args.c
===================================================================
--- /trunk/Ohana/src/getstar/src/args.c	(revision 6238)
+++ /trunk/Ohana/src/getstar/src/args.c	(revision 6239)
@@ -2,5 +2,16 @@
 
 void help () {
-  fprintf (stderr, "USAGE: getstar (file) (output)\n");
+  fprintf (stderr, "USAGE: \n"
+	   "getstar -region ra dec ra dec\n"
+	   "getstar -radius ra dec radius\n"
+	   "getstar -catalog n0000/0000.cpt\n"
+	   "getstar -image name\n"
+	   "getstar -immatch partial-name\n\n"
+	   "other options:\n"
+	   " -smf  (file)    : return smf file (-image only)\n"
+	   " -smp (file)     : return smp file (-image only)\n"
+	   " -meas (file)    : return measurements\n"
+	   " -aves (file)    : return average / secfilt table *default*\n"
+	   " -imtable (file) : return image table\n");
   exit (2);
 }
@@ -26,6 +37,73 @@
   }
 
-  if (argc != 3) help ();
+  /* parse optional entries above. one of the options below is required */
+  MODE = BY_NOTHING;
+  if ((N = get_argument (argc, argv, "-region"))) {
+    double R, D;
+    MODE = BY_REGION;
+    remove_argument (N, &argc, argv);
+    if (argc != 5) help();
+    str_to_radec (&R, &D, argv[N+0], argv[N+1]);
+    REGION.Rmin = R;
+    REGION.Dmin = D;
+    remove_argument (N, &argc, argv);
+    remove_argument (N, &argc, argv);
 
+    str_to_radec (&R, &D, argv[N+0], argv[N+1]);
+    REGION.Rmax = R;
+    REGION.Dmax = D;
+    remove_argument (N, &argc, argv);
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-radius"))) {
+    double R, D, radius;
+    fprintf (stderr, "-radius is not recommended\n");
+    MODE = BY_RADIUS;
+    remove_argument (N, &argc, argv);
+    if (argc != 4) help();
+    str_to_radec (&R, &D, argv[N+0], argv[N+1]);
+    radius = atof(argv[N+2]);
+    REGION.Rmin = R - radius / cos(D*RAD_DEG);
+    REGION.Dmin = D - radius;
+    REGION.Rmax = R + radius / cos(D*RAD_DEG);
+    REGION.Dmax = D + radius;
+    remove_argument (N, &argc, argv);
+    remove_argument (N, &argc, argv);
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-catalog"))) {
+    fprintf (stderr, "-catalog is not implemented\n");
+    exit (2);
+    MODE = BY_CATALOG;
+    remove_argument (N, &argc, argv);
+    if (argc != 2) help();
+  }
+  if ((N = get_argument (argc, argv, "-image"))) {
+    MODE = BY_IMAGE;
+    remove_argument (N, &argc, argv);
+    IMAGENAME = strcreate (argv[N]);
+    if (argc != 2) help();
+  }
+  if ((N = get_argument (argc, argv, "-immatch"))) {
+    MODE = BY_IMMATCH;
+    remove_argument (N, &argc, argv);
+    IMAGENAME = strcreate (argv[N]);
+    if (argc != 2) help();
+  }
+  if (MODE == BY_NOTHING) help ();
 }
 
+
+/* USAGE
+
+getstar -region ra dec ra dec
+getstar -radius ra dec radius
+getstar -catalog n0000/0000.cpt
+getstar -image name [-smp | -smf]
+getstar -immatch partial-name [-smp | -smf]
+   
+* return measurements 
+* return average / secfilt table
+* return a single image (smf/smp format)
+
+*/
Index: /trunk/Ohana/src/getstar/src/getstar.c
===================================================================
--- /trunk/Ohana/src/getstar/src/getstar.c	(revision 6238)
+++ /trunk/Ohana/src/getstar/src/getstar.c	(revision 6239)
@@ -10,4 +10,47 @@
   
   args (argc, argv);
+  set_db (&db);
+
+  Nstars = 0;
+  stars = NULL;
+
+  switch (MODE) {
+
+    case BY_REGION:
+    case BY_RADIUS:
+
+      /* load corresponding sky regions, associated images */
+      status = dvo_image_lock (&db, ImageCat, 60.0, LCK_SOFT);
+      if (!status) Shutdown ("ERROR: failure to lock image catalog %s", db.filename);
+
+      skylist = SkyListByPatch (sky, -1, &REGION);
+      overlap = gimages (&db, &image, MOSAIC, &Noverlap);
+      dvo_image_unlock (&db);
+
+      for (i = 0; i < skylist[0].Nregions; i++) {
+	  
+	  catalog.filename = skylist[0].filename[i];
+	  load_pt_catalog (&catalog, skylist[0].regions[i]);
+	  unlock_catalog (&catalog);
+
+	  /* skip empty catalogs */
+	  if (catalog.Nave_disk == 0) continue;
+
+	  stars = find_matches (&catalog, &image, 0, 0, stars, &Nstars);
+
+      break;
+
+    case BY_CATALOG:
+      /* not implemented */
+      break;
+
+    case BY_IMAGE:
+
+      break;
+
+    case BY_IMLIST:
+
+      break;
+  }
 
   image = gimages (argv[1]);
Index: /trunk/Ohana/src/getstar/src/gimages.c
===================================================================
--- /trunk/Ohana/src/getstar/src/gimages.c	(revision 6238)
+++ /trunk/Ohana/src/getstar/src/gimages.c	(revision 6239)
@@ -1,5 +1,6 @@
 # include "getstar.h"
 
-Image *gimages (char *filename) {
+/* return image or images which match the name */
+Image *gimages (char *filename, int *Nfound, int exact) {
   
   int i, size, Nimage, nimage;
@@ -11,9 +12,12 @@
   
   set_db (&db);
-  lock_image_db (&db, ImageCat);
+  dvo_image_lock (&db, ImageCat);
   if (db[0].dbstate == LCK_EMPTY) Shutdown ("ERROR: No images in catalog %s (1)", db[0].filename);
-  if (!dvo_image_load (db, VERBOSE, FALSE)) Shutdown ("can't read image catalog %s", db[0].filename);
+
+  status = dvo_image_load (db, VERBOSE, FALSE);
+  if (!status) Shutdown ("can't read image catalog %s", db[0].filename);
+
   timage = fits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped);
-  unlock_image_db (&db, ImageCat);
+  dvo_image_unlock (&db, ImageCat);
 
   fits_scan (&header, "ZERO_PT", "%lf", 1, &zeropt);
