Index: /trunk/Ohana/src/imregister/Makefile
===================================================================
--- /trunk/Ohana/src/imregister/Makefile	(revision 3533)
+++ /trunk/Ohana/src/imregister/Makefile	(revision 3534)
@@ -63,18 +63,12 @@
 
 SPOBJ  = \
-$(SPREG)/delete.$(ARCH).o \
-$(SPREG)/define.$(ARCH).o \
-$(SPREG)/match.$(ARCH).o  \
-$(SPREG)/modify.$(ARCH).o \
-$(SPREG)/output.$(ARCH).o \
-$(SPREG)/unique.$(ARCH).o \
-$(SPREG)/ConfigInit.$(ARCH).o    \
-$(SPREG)/spinfo.$(ARCH).o \
-$(SPREG)/fits_scan_nchar.$(ARCH).o \
-$(SPREG)/showinfo.$(ARCH).o  \
-$(BASEDIR)/misc.$(ARCH).o        \
-$(BASEDIR)/version.$(ARCH).o        \
-$(BASEDIR)/parse_time.$(ARCH).o  \
-$(BASEDIR)/sort.$(ARCH).o
+$(SPREG)/delete.$(ARCH).o   \
+$(SPREG)/match.$(ARCH).o    \
+$(SPREG)/modify.$(ARCH).o   \
+$(SPREG)/output.$(ARCH).o   \
+$(SPREG)/unique.$(ARCH).o   \
+$(SPREG)/spinfo.$(ARCH).o   \
+$(SPREG)/showinfo.$(ARCH).o \
+$(SPREG)/ConfigInit.$(ARCH).o
 
 PHOTOBJ  = \
@@ -114,4 +108,5 @@
 $(BASEDIR)/version.$(ARCH).o      \
 $(BASEDIR)/parse_time.$(ARCH).o   \
+$(BASEDIR)/fits_scan_nchar.$(ARCH).o \
 $(BASEDIR)/sort.$(ARCH).o
 
@@ -124,6 +119,6 @@
 PS = $(PHOTREG)/args.photsearch.$(ARCH).o  $(PHOTOBJ) $(BASEOBJ)
 PR = $(PHOTREG)/args.photreg.$(ARCH).o     $(PHOTOBJ) $(BASEOBJ)
-SR = $(SPREG)/args.spregister.$(ARCH).o    $(SPOBJ)   
-SS = $(SPREG)/args.spsearch.$(ARCH).o      $(SPOBJ)  
+SR = $(SPREG)/args.spregister.$(ARCH).o    $(SPOBJ)   $(BASEOBJ)
+SS = $(SPREG)/args.spsearch.$(ARCH).o      $(SPOBJ)   $(BASEOBJ)
 
 $(SR) : $(INC)/spreg.h $(INC)/imregister.h
Index: /trunk/Ohana/src/imregister/base/fits_scan_nchar.c
===================================================================
--- /trunk/Ohana/src/imregister/base/fits_scan_nchar.c	(revision 3534)
+++ /trunk/Ohana/src/imregister/base/fits_scan_nchar.c	(revision 3534)
@@ -0,0 +1,33 @@
+# include "imregister.h"
+# include "imreg.h"
+
+/* scan and give a warning for missing entries */
+void warn_scan (Header *header, char *field, char *format, int N, void *var) {
+  if (!fits_scan (header, field, format, N, var)) {
+    fprintf (stderr, "WARNING: %s not found in header\n", field);
+  }
+}
+
+/* scan from header into a string of fixed length */
+int fits_scan_nchar (Header *header, int size, char *field, int N,...) {
+
+  char tmpstr[160], *outstr; 
+  va_list argp;
+  int status;
+  
+  va_start (argp, N);
+  outstr = va_arg (argp, char *);
+  va_end (argp);
+
+  status = fits_scan (header, field, "%s", N, tmpstr); 
+  strncpy (outstr, tmpstr, size - 1);
+  outstr[size-1] = 0; 
+
+  return (status);
+} 
+     
+void warn_scan_nchar (Header *header, int size, char *field, int N, void *var) {
+  if (!fits_scan_nchar (header, size, field, N, var)) {
+    fprintf (stderr, "missing %s not found in header\n", field);
+  }
+}
Index: /trunk/Ohana/src/imregister/base/misc.c
===================================================================
--- /trunk/Ohana/src/imregister/base/misc.c	(revision 3533)
+++ /trunk/Ohana/src/imregister/base/misc.c	(revision 3534)
@@ -446,9 +446,2 @@
   return;
 }
-
-void warn_scan (Header *header, char *field, char *format, int N, void *var) {
-  if (!fits_scan (header, field, format, N, var)) {
-    fprintf (stderr, "WARNING: %s not found in header\n", field);
-  }
-}
-
Index: /trunk/Ohana/src/imregister/include/imregister.h
===================================================================
--- /trunk/Ohana/src/imregister/include/imregister.h	(revision 3533)
+++ /trunk/Ohana/src/imregister/include/imregister.h	(revision 3534)
@@ -101,5 +101,8 @@
 void get_version (int argc, char **argv, char *version);
 int set_db (char *filename);
+
 void warn_scan (Header *header, char *field, char *format, int N, void *var);
+int fits_scan_nchar (Header *header, int size, char *field, int N,...);
+void warn_scan_nchar (Header *header, int size, char *field, int N, void *var);
 
 void clean_spaces (char *line);
Index: /trunk/Ohana/src/imregister/include/spreg.h
===================================================================
--- /trunk/Ohana/src/imregister/include/spreg.h	(revision 3533)
+++ /trunk/Ohana/src/imregister/include/spreg.h	(revision 3534)
@@ -96,6 +96,4 @@
 int *match_spectrums (Spectrum *subset, int Nsubset, int *Nmatch);
 int SubmitSpectrums (Spectrum *spectrum);
-int load_probes (char *filename, unsigned long tzero, int *wantprobe, double *values, int Nprobe);
-int define_table (Header *header, Matrix *matrix, Header *theader, FTable *table);
 void set_timezone (double dt);
 
@@ -105,4 +103,3 @@
 Spectrum *get_spectra (int *N);
 
-int fits_scan_nchar (Header *header, int size, char *field, int N,...);
-void warn_scan_nchar (Header *header, int size, char *field, int N, void *var);
+void ConfigInitSpec (int *argc, char **argv);
Index: /trunk/Ohana/src/imregister/spreg/ConfigInit.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/ConfigInit.c	(revision 3533)
+++ /trunk/Ohana/src/imregister/spreg/ConfigInit.c	(revision 3534)
@@ -4,5 +4,5 @@
 int success;
 
-void ConfigInit (int *argc, char **argv) {
+void ConfigInitSpec (int *argc, char **argv) {
 
   char *config, *file;
@@ -54,9 +54,2 @@
 
 }
-
-void WarnConfig (char *config, char *key, char * mode, int N, void *var) {
-  if (!ScanConfig (config, key, mode, N, var)) {
-    fprintf (stderr, "missing config variable %s\n", key);
-    success = FALSE;
-  }
-}
Index: /trunk/Ohana/src/imregister/spreg/args.spregister.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 3533)
+++ /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 3534)
@@ -6,5 +6,5 @@
   int N;
 
-  ConfigInit (&argc, argv); /* load elixir config data */
+  ConfigInitSpec (&argc, argv); /* load elixir config data */
 
   NoReg = FALSE;
Index: /trunk/Ohana/src/imregister/spreg/args.spsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/args.spsearch.c	(revision 3533)
+++ /trunk/Ohana/src/imregister/spreg/args.spsearch.c	(revision 3534)
@@ -8,5 +8,5 @@
   int N;
 
-  ConfigInit (&argc, argv); /* load elixir config data */
+  ConfigInitSpec (&argc, argv); /* load elixir config data */
 
   /* set timezone (set static in misc.c) */
Index: unk/Ohana/src/imregister/spreg/db.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/db.c	(revision 3533)
+++ 	(revision )
@@ -1,251 +1,0 @@
-# include "imregister.h"
-# include "spreg.h"
-
-/* variables which describe the db */
-char *dBFile = (char *) NULL;
-FILE *f;
-Header header;
-Header theader;
-Matrix matrix;
-FTable table;
-Spectrum *spectrum;
-int Nspectrum;
-int lockstate;
-int dbstate = LCK_UNLOCK;
-
-/* set the name of the currently active database table 
-   be careful: don't change db without closing old db */
-int set_db (char *filename) {
-  dBFile = filename;
-  return (TRUE);
-}
-
-/* load the complete db table into memory */
-int load_db () {
-
-  int Nx, Ny;
-
-  /* database name must be set first */
-  if (dBFile == (char *) NULL) {
-    fprintf (stderr, "ERROR: db file is not set\n");
-    exit (1);
-  }
-
-  /* set locking state */
-  lockstate = (output.modify || output.delete) ? LCK_HARD : LCK_SOFT;
-  header.buffer = matrix.buffer = theader.buffer = table.buffer = (char *) NULL;
-
-  /* lock & open database */
-  f = fsetlockfile (dBFile, 300.0, lockstate, &dbstate);
-  if (dbstate == LCK_EMPTY) return (0);
-  if (f == (FILE *) NULL) {
-    fprintf (stderr, "ERROR: can't set lock on %s\n", dBFile);
-    exit (1);
-  }
-
-  /* init & load in FITS table data */
-  table.header = &theader;
-  if (!fits_fread_header (f, &header))                     escape (UNLOCK, "ERROR: can't read primary header"); 
-  if (!fits_fread_matrix (f, &matrix, &header))            escape (UNLOCK, "ERROR: can't read primary matrix");
-  if (!fits_fread_ftable (f, &table, "SPECTRUM_DATABASE")) escape (UNLOCK, "ERROR: can't read table SPECTRUM_DATABASE");
-
-  /* convert to internal format */
-  spectrum = (Spectrum *) table.buffer;
-  fits_scan (table.header, "NAXIS1", "%d", 1, &Nx);
-  fits_scan (table.header, "NAXIS2", "%d", 1, &Ny);
-  Nspectrum = Ny;
-
-  if (!ConvertStruct ((char *) spectrum, sizeof (Spectrum), Nspectrum, "spectrum")) escape (UNLOCK, "ERROR: can't convert to internal format"); 
-  return (TRUE);
-}
-
-/* save complete db file */
-int save_db () {
-
-  if (!ConvertStruct ((char *) spectrum, sizeof (Spectrum), Nspectrum, "spectrum")) escape (UNLOCK, "ERROR: can't convert from native format");
-
-  /* write all spectra to file */
-  make_backup (dBFile);
-  Fseek (f, 0, SEEK_SET);
-  if (!fits_fwrite_header  (f, &header))  escape (LOCK, "ERROR: can't write primary header");
-  if (!fits_fwrite_matrix  (f, &matrix))  escape (LOCK, "ERROR: can't write primary matrix");
-  if (!fits_fwrite_Theader (f, &theader)) escape (LOCK, "ERROR: can't write table header");
-  if (!fits_fwrite_table   (f, &table))   escape (LOCK, "ERROR: can't write table data");
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-  fits_free_table  (&table);
-
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  return (TRUE);
-}
-
-/* write selected rows to db file 
-   complete db must already be loaded in memory (table) */
-int update_db (int *match, int Nmatch) {
-
-  int i, N, Nx, Ny;
-  VTable vtable;
-
-  fits_scan (table.header, "NAXIS1", "%d", 1, &Nx);
-  fits_scan (table.header, "NAXIS2", "%d", 1, &Ny);
-
-  /* make empty vtable from table */
-  vtable.header = table.header;
-  vtable.size = table.size;
-  vtable.Nrow = Ny;
-  vtable.pad = vtable.size - Nx*Ny;
-
-  /* insert selected rows in vtable */ 
-  ALLOCATE (vtable.row, int, Nmatch);
-  ALLOCATE (vtable.buffer, char *, Nmatch);
-  for (N = i = 0; i < Nmatch; i++) {
-    if (match[i] == -1) continue;
-    vtable.row[N] = match[i];
-    ALLOCATE (vtable.buffer[N], char, Nx);
-    memcpy (vtable.buffer[N], &spectrum[match[i]], sizeof (Spectrum));
-    ConvertStruct ((char *) vtable.buffer[N], sizeof (Spectrum), 1, "spectrum");
-    N++;
-  }
-  vtable.Nrow = N;
-
-  /* write subset to file */
-  make_backup (dBFile);
-  Fseek (f, 0, SEEK_SET);
-  if (!fits_fwrite_header (f, &header))   escape (LOCK, "ERROR: can't update primary header");
-  if (!fits_fwrite_matrix (f, &matrix))   escape (LOCK, "ERROR: can't update primary matrix");
-  if (!fits_fwrite_Theader (f, &theader)) escape (LOCK, "ERROR: can't update table header");
-  if (!fits_fwrite_vtable   (f, &vtable)) escape (LOCK, "ERROR: can't update table data");
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-  fits_free_vtable (&vtable);
-  fits_free_table  (&table);
-
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  return (TRUE);
-}
-
-/* write a row to the end of the existing table 
-   file must be open, but need not be in memory */
-int append_db (Spectrum *new, int Nnew) {
-
-  VTable vtable;
-
-  /* add error checks! */
-  fits_table_to_vtable (&table, &vtable, 0, 0);
-
-  ConvertStruct ((char *) new, sizeof (Spectrum), Nnew, "spectrum");
-  fits_vadd_rows (&vtable, (char *) new, Nnew, sizeof(Spectrum));
-
-  /* write subset to file */
-  Fseek (f, 0, SEEK_SET);
-  if (!fits_fwrite_header (f, &header))   escape (LOCK, "ERROR: can't append to db");
-  if (!fits_fwrite_matrix (f, &matrix))   escape (LOCK, "ERROR: can't append to db");
-  if (!fits_fwrite_Theader (f, &theader)) escape (LOCK, "ERROR: can't append to db");
-  if (!fits_fwrite_vtable   (f, &vtable)) escape (LOCK, "ERROR: can't append to db");
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-  fits_free_vtable (&vtable);
-
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  return (TRUE);
-}
-
-/* create a new (empty) db table in memory. 
-   dBFile already set with set_db (filename);
-   f already set with load_db () */
-int create_db () {
-
-  /* define table layout */
-  define_table (&header, &matrix, &theader, &table);
-
-  /* convert to internal format */
-  spectrum = (Spectrum *) table.buffer;
-  Nspectrum = 0;
-
-  return (TRUE);
-}
-
-/* close the db files, free header data
-   table data remains alloc'ed */
-int close_db () {
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-
-  if (dbstate == LCK_UNLOCK) return (TRUE);
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  return (TRUE);
-}  
-
-/* close the db files, free header data
-   table data remains alloc'ed 
-   clear soft/xcld locks, but keep a hard lock on the db, if it exists */
-int close_lock_db () {
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-
-  if (dbstate == LCK_UNLOCK) return (TRUE);
-  fclearlockfile (dBFile, f, LCK_XCLD, &dbstate);
-  return (TRUE);
-}  
-
-int print_db_status (char *message) {
-
-  int fd;
-
-  if (!output.verbose) return (0);
-  if (f == (FILE *) NULL) {
-    fprintf (stderr, "%s - db: %s - fd: %d\n", message, "null", -1);
-    return (0);
-  }
-  fd = fileno (f);
-  fprintf (stderr, "%s - db: %s - fd: %d\n", message, dBFile, fd);
-  return (TRUE);
-}
-
-int escape (int mode, char *message) {
-  
-  if (mode == UNLOCK) close_db ();
-  fprintf (stderr, "%s\n", message);
-  exit (1);
-}
-
-/* return the current table data */
-Spectrum *get_spectra (int *N) {
-  *N = Nspectrum;
-  return (spectrum);
-}
-
-/* set the table to the specified data */
-int set_spectra (Spectrum *new, int Nnew) {
-
-  int Nbytes;
-
-  /* assign pointers to new data block */
-  free (spectrum);
-  Nspectrum = Nnew;
-  spectrum = new;
-
-  /* update header, table structures */
-  fits_modify (table.header, "NAXIS2", "%d", 1, Nnew);
-  table.header[0].Naxis[1] = Nnew;
-  Nbytes = fits_matrix_size (table.header);
-
-  /* add padding space to buffer */
-  table.buffer = (char *) spectrum;
-  REALLOCATE (table.buffer, char, Nbytes);
-  spectrum = (Spectrum *) table.buffer;
-  table.size = Nbytes;
-
-  return (TRUE);
-}
-
Index: unk/Ohana/src/imregister/spreg/db2.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/db2.c	(revision 3533)
+++ 	(revision )
@@ -1,134 +1,0 @@
-# include "imregister.h"
-# include "spreg.h"
-
-DB *fits_db_init (int lockstate) {
-
-  DB *db;
-
-  ALLOCATE (db, DB, 1);
-  db[0].header.buffer = NULL;
-  db[0].matrix.buffer = NULL;
-  db[0].ftable.buffer = NULL;
-  db[0].ftable.header = &db[0].theader;
-  db[0].lockstate = lockstate;
-  return (db);
-}
-
-DB *fits_db_lock (DB *db, char *filename) {
-  
-  /* database name must be set first */
-  if (filename == (char *) NULL) {
-    fprintf (stderr, "ERROR: db file is not set\n");
-    return (FALSE);
-  }
-
-  /* database name must be set first */
-  if (db == (char *) NULL) {
-    fprintf (stderr, "ERROR: db is not set\n");
-    return (FALSE);
-  }
-
-  /* lock & open database */
-  db[0].f = fsetlockfile (filename, db[0].timeout, db[0].lockstate, &db[0].dbstate);
-  if (db[0].f == NULL) {
-    fprintf (stderr, "ERROR: cannot set lock on db\n");
-    return (FALSE);
-  }
-  return (TRUE);
-}
-
-/* load the complete db table into memory - only loads first extension, does not validate EXTNAME */
-int fits_db_load (DB *db) {
-
-  int Nx, Ny;
-
-  /* database name must be set first */
-  if (db == (char *) NULL) {
-    fprintf (stderr, "ERROR: db is not set\n");
-    return (FALSE);
-  }
-
-  /* init & load in FITS table data */
-  if (!fits_fread_header (db[0].f, &db[0].header))                fits_db_escape (db, "ERROR: can't read primary header"); 
-  if (!fits_fread_matrix (db[0].f, &db[0].matrix, &db[0].header)) fits_db_escape (db, "ERROR: can't read primary matrix");
-  if (!fits_fread_header (db[0].f, &db[0].theader))               fits_db_escape (db, "ERROR: can't read table header");
-  if (!fits_fload_ftable (db[0].f, &db[0].table))                 fits_db_escape (db, "ERROR: can't read table data");
-  return (TRUE);
-}
-
-/* write complete db file */
-int fits_db_save (DB *db) {
-
-  /* write all data to file */
-  make_backup (db[0].filename);
-  Fseek (db[0].f, 0, SEEK_SET);
-  if (!fits_fwrite_header  (db[0].f, &db[0].header))  fits_db_escape (db, "ERROR: can't write primary header");
-  if (!fits_fwrite_matrix  (db[0].f, &db[0].matrix))  fits_db_escape (db, "ERROR: can't write primary matrix");
-  if (!fits_fwrite_Theader (db[0].f, &db[0].theader)) fits_db_escape (db, "ERROR: can't write table header");
-  if (!fits_fwrite_table   (db[0].f, &db[0].table))   fits_db_escape (db, "ERROR: can't write table data");
-  fclearlockfile (db[0].filename, db[0].f, db[0].lockstate, &db[0].dbstate);
-  return (TRUE);
-}
-
-/* write vtable to db file (also appends rows to the end of the table) */
-int fits_db_update (DB *db, VTable *vtable) {
-
-  /* this section is not valid if we have changed the size of header, matrix, theader */
-
-  /* write subset to file */
-  make_backup (db[0].filename);
-  Fseek (db[0].f, 0, SEEK_SET);
-  if (!fits_fwrite_header   (db[0].f, &db[0].header))  fits_db_escape (LOCK, "ERROR: can't update primary header");
-  if (!fits_fwrite_matrix   (db[0].f, &db[0].matrix))  fits_db_escape (LOCK, "ERROR: can't update primary matrix");
-  if (!fits_fwrite_Theader  (db[0].f, &db[0].theader)) fits_db_escape (LOCK, "ERROR: can't update table header");
-  if (!fits_fwrite_vtable   (db[0].f, &db[0].vtable))  fits_db_escape (LOCK, "ERROR: can't update table data");
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
-  fits_free_header (&theader);
-  fits_free_vtable (&vtable);
-  fits_free_table  (&table);
-
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  return (TRUE);
-}
-
-int fits_db_free (DB *db) {
-  fits_free_header (&db[0].header);
-  fits_free_matrix (&db[0].matrix);
-  fits_free_header (&db[0].theader);
-  fits_free_table  (&db[0].table);
-  return (TRUE);
-}
-
-/* close the db files  */
-int fits_db_close (DB *db) {
-  if (dbstate == LCK_UNLOCK) return (TRUE);
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
-  if ((Nimage == 0) && (lockstate != LCK_SOFT)) unlink (dBFile);
-
-  return (TRUE);
-}  
-
-int fits_db_print_status (DB *db, char *message) {
-
-  int fd;
-
-  if (!output.verbose) return (0);
-  if (f == (FILE *) NULL) {
-    fprintf (stderr, "%s - db: %s - fd: %d\n", message, "null", -1);
-    return (0);
-  }
-  fd = fileno (f);
-  fprintf (stderr, "%s - db: %s - fd: %d\n", message, dBFile, fd);
-  return (TRUE);
-}
-
-int fits_db_escape (DB *db, char *message) {
-  
-  if (mode == UNLOCK) close_db ();
-  fprintf (stderr, "%s\n", message);
-  exit (1);
-}
Index: unk/Ohana/src/imregister/spreg/fits_scan_nchar.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/fits_scan_nchar.c	(revision 3533)
+++ 	(revision )
@@ -1,27 +1,0 @@
-# include "imregister.h"
-# include "imreg.h"
-
-/* scan from header into a string of fixed length */
-int fits_scan_nchar (Header *header, int size, char *field, int N,...) {
-
-  char tmpstr[160], *outstr; 
-  va_list argp;
-  int status;
-  
-  va_start (argp, N);
-  outstr = va_arg (argp, char *);
-  va_end (argp);
-
-  status = fits_scan (header, field, "%s", N, tmpstr); 
-  strncpy (outstr, tmpstr, size - 1);
-  outstr[size-1] = 0; 
-
-  return (status);
-} 
-     
-void warn_scan_nchar (Header *header, int size, char *field, int N, void *var) {
-  if (!fits_scan_nchar (header, size, field, N, var)) {
-    fprintf (stderr, "missing %s not found in header\n", field);
-  }
-}
-
Index: unk/Ohana/src/imregister/spreg/submit.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/submit.c	(revision 3533)
+++ 	(revision )
@@ -1,64 +1,0 @@
-# include "imregister.h"
-# include "spreg.h"
-
-int SubmitImages (RegImage *image) {
-
-  int i;
-  char line[1024], *root, *path;
-
-  /* send these images to FIFOs for imstat and ptolemy */ 
-
-  /* image[0].ccd contains:
-     MEF    : Nccd
-     SPLIT  : ccd number
-     CUBE   : Nslice
-     SLICE  : slice number
-     SINGLE : 0
-  */
-
-  if (image[0].mode == M_MEF) {
-    for (i = 0; i < image[0].ccd; i++) {
-      root = filerootname (image[0].filename);
-      if (i < Nccd) {
-	sprintf (line, "%s/%s %s/%s%s %s %s", image[0].pathname, image[0].filename, root, root, ccdn[i], ccds[i], "MEF");
-      } else {
-	sprintf (line, "%s/%s %s/%sxx none %s", image[0].pathname, image[0].filename, root, root, "MEF");
-      }
-      if (!WriteFIFO (ImstatFifo, line)) return (FALSE);
-      if (image[0].type == T_OBJECT) {
-	if (!WriteFIFO (PtolemyFifo, line)) return (FALSE);
-      }
-    }
-  } 
-
-  if (image[0].mode == M_SINGLE) {
-    root = filerootname (image[0].filename);
-    sprintf (line, "%s/%s %s %02d %s", image[0].pathname, image[0].filename, root, 0, "SINGLE");
-    if (!WriteFIFO (ImstatFifo, line)) return (FALSE);
-    if (image[0].type == T_OBJECT) {
-      if (!WriteFIFO (PtolemyFifo, line)) return (FALSE);
-    }
-  } 
-
-  if (image[0].mode == M_CUBE) {
-    root = filerootname (image[0].filename);
-    sprintf (line, "%s/%s %s %02d %s", image[0].pathname, image[0].filename, root, 0, "CUBE");
-    if (!WriteFIFO (ImstatFifo, line)) return (FALSE);
-    if (image[0].type == T_OBJECT) {
-      if (!WriteFIFO (PtolemyFifo, line)) return (FALSE);
-    }
-  } 
-
-  if (image[0].mode == M_SPLIT) {
-    path = basename (image[0].pathname);
-    root = filerootname (image[0].filename);
-    sprintf (line, "%s/%s %s/%s %02d %s", image[0].pathname, image[0].filename, path, root, image[0].ccd, "SPLIT");
-    if (!WriteFIFO (ImstatFifo, line)) return (FALSE);
-    if (image[0].type == T_OBJECT) {
-      if (!WriteFIFO (PtolemyFifo, line)) return (FALSE);
-    }
-  }    
-
-  return (TRUE);
-}
-  
