Index: /trunk/Ohana/src/delstar/Makefile
===================================================================
--- /trunk/Ohana/src/delstar/Makefile	(revision 35106)
+++ /trunk/Ohana/src/delstar/Makefile	(revision 35107)
@@ -31,4 +31,5 @@
 $(SRC)/delete_image_photcodes.$(ARCH).o \
 $(SRC)/delete_photcodes.$(ARCH).o \
+$(SRC)/delete_photcodes_single.$(ARCH).o \
 $(SRC)/delete_times.$(ARCH).o 	  \
 $(SRC)/gimages.$(ARCH).o   	  \
@@ -45,4 +46,5 @@
 $(SRC)/args.$(ARCH).o	          \
 $(SRC)/delete_photcodes.$(ARCH).o \
+$(SRC)/delete_photcodes_single.$(ARCH).o \
 $(SRC)/Shutdown.$(ARCH).o          
 
Index: /trunk/Ohana/src/delstar/include/delstar.h
===================================================================
--- /trunk/Ohana/src/delstar/include/delstar.h	(revision 35106)
+++ /trunk/Ohana/src/delstar/include/delstar.h	(revision 35107)
@@ -100,2 +100,3 @@
 int delete_photcodes_catalog (Catalog *catalog, PhotCode **photcodes, int Nphotcodes);
 int delete_image_photcodes (FITS_DB *db);
+int delete_photcodes_single (char *cptname);
Index: /trunk/Ohana/src/delstar/src/args.c
===================================================================
--- /trunk/Ohana/src/delstar/src/args.c	(revision 35106)
+++ /trunk/Ohana/src/delstar/src/args.c	(revision 35107)
@@ -169,11 +169,37 @@
 goodtime:
 
+  if ((N = get_argument (argc, argv, "-cpt"))) {
+    remove_argument (N, &argc, argv);
+    char *filename = strcreate (argv[N]);
+    remove_argument (N, &argc, argv);
+
+    switch (MODE) {
+      case MODE_IMAGEFILE:
+      case MODE_IMAGENAME:
+      case MODE_TIME:
+      case MODE_ORPHAN:
+      case MODE_MISSED:
+	fprintf (stderr, "mode not available for single cpt deletion\n");
+	break;
+      case MODE_PHOTCODES: {
+	if (!delete_photcodes_single (filename)) {
+	  fprintf (stderr, "failure deleting measurements\n");
+	  exit (1);
+	}
+	exit (0);
+      }
+      default:
+	usage ();
+    }
+    exit (0);
+  }
+
   /* restrict to a single photcode (not compatible with -image) 
-  PHOTCODE = NULL;
-  if ((N = get_argument (argc, argv, "-photcode"))) {
-    remove_argument (N, &argc, argv);
-    PHOTCODE = GetPhotcodebyName (argv[N]);
-    remove_argument (N, &argc, argv);
-  }*/
+     PHOTCODE = NULL;
+     if ((N = get_argument (argc, argv, "-photcode"))) {
+     remove_argument (N, &argc, argv);
+     PHOTCODE = GetPhotcodebyName (argv[N]);
+     remove_argument (N, &argc, argv);
+     }*/
 
   if (argc != 1) usage ();
Index: /trunk/Ohana/src/delstar/src/delete_photcodes_single.c
===================================================================
--- /trunk/Ohana/src/delstar/src/delete_photcodes_single.c	(revision 35107)
+++ /trunk/Ohana/src/delstar/src/delete_photcodes_single.c	(revision 35107)
@@ -0,0 +1,33 @@
+# include "delstar.h"
+
+int delete_photcodes_single (char *cptname) {
+
+  Catalog catalog;
+
+  int Nphotcodes = 0;
+  PhotCode **photcodes = ParsePhotcodeList (PHOTCODE_LIST, &Nphotcodes, FALSE);
+
+  catalog.filename  = cptname;
+  catalog.Nsecfilt  = GetPhotcodeNsecfilt ();
+  catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF;
+
+  if (VERBOSE) fprintf (stderr, "deleting from %s\n", catalog.filename);
+
+  // an error exit status here is a significant error
+  if (!dvo_catalog_open (&catalog, NULL, VERBOSE2, "a")) {
+    fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
+    return FALSE;
+  }
+  if (!catalog.Naves_disk) {
+    if (VERBOSE2) fprintf (stderr, "no data in %s, skipping\n", catalog.filename);
+    dvo_catalog_unlock (&catalog);
+    dvo_catalog_free (&catalog);
+    return FALSE;
+  }
+
+  delete_photcodes_catalog (&catalog, photcodes, Nphotcodes);
+  dvo_catalog_save_complete (&catalog, VERBOSE2);
+  dvo_catalog_unlock (&catalog);
+  dvo_catalog_free (&catalog);
+  return TRUE;
+}
