Index: /trunk/Ohana/src/delstar/src/find_image_db.c
===================================================================
--- /trunk/Ohana/src/delstar/src/find_image_db.c	(revision 4682)
+++ /trunk/Ohana/src/delstar/src/find_image_db.c	(revision 4682)
@@ -0,0 +1,94 @@
+# include "delstar.h"
+
+int *find_images_name (char *filename, int *nlist) {
+
+  int i, Nimage, Nlist, NLIST;
+  int *list;
+  char *p, *name;
+  Image *image;
+
+  /* strip off all but the filename */
+  p = strrchr (filename, '/');
+  if (p == NULL) {
+    name = filename;
+  } else {
+    name = p + 1;
+  }
+
+  image = GetImages (&Nimage);
+
+  Nlist = 0;
+  NLIST = 100;
+  ALLOCATE (list, int, NLIST);
+
+  for (i = 0; i < Nimage; i++) {
+    if (strcmp (image[i].name, name)) continue;
+    list[Nlist] = i;
+    Nlist ++;
+    CHECK_REALLOCATE (list, int, NLIST, Nlist, 100);
+  }
+
+  *nlist = Nlist;
+  return (list);
+}
+
+/* find images in db by image data (time/photcode) */
+int *find_images_data (Image *timage, int *nlist) {
+
+  int i, Nimage, Nlist, NLIST; 
+  int *list;
+  Image *image;
+  time_t start, stop;
+  int code;
+
+  start = timage[0].tzero - MAX(0.05*timage[0].trate*timage[0].NY, 1);
+  stop  = timage[0].tzero + MAX(1.05*timage[0].trate*timage[0].NY, 1);
+  code  = timage[0].source;
+
+  image = GetImages (&Nimage);
+
+  Nlist = 0;
+  NLIST = 100;
+  ALLOCATE (list, int, NLIST);
+
+  for (i = 0; i < Nimage; i++) {
+    if (image[i].tzero < start) continue;
+    if (image[i].tzero > stop) continue;
+    if (image[i].source != code) continue;
+    list[Nlist] = i;
+    Nlist ++;
+    CHECK_REALLOCATE (list, int, NLIST, Nlist, 100);
+  }
+
+  *nlist = Nlist;
+  return (list);
+}
+
+/* find images in db by image data (time/photcode) */
+int *find_images_time (time_t start, time_t end, PhotCode *code, int *nlist) {
+
+  int i, Nimage, Nlist, NLIST;
+  int *list;
+  Image *image;
+
+  image = GetImages (&Nimage);
+
+  Nlist = 0;
+  NLIST = 100;
+  ALLOCATE (list, int, NLIST);
+
+  for (i = 0; i < Nimage; i++) {
+    if (image[i].tzero < START) continue;
+    if (image[i].tzero > END) continue;
+    if (code != NULL) {
+      if (image[i].source != code[0].code) continue;
+    }
+    list[Nlist] = i;
+    Nlist ++;
+    CHECK_REALLOCATE (list, int, NLIST, Nlist, 100);
+  }
+
+  *nlist = Nlist;
+  return (list);
+}
+
