Index: /trunk/Ohana/src/opihi/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/Makefile	(revision 4692)
+++ /trunk/Ohana/src/opihi/Makefile	(revision 4693)
@@ -10,6 +10,6 @@
 dvo2:  lib.data lib.shell cmd.basic cmd.data cmd.astro
 dvo:   lib.data lib.shell cmd.basic cmd.data cmd.astro
-sched: lib.data lib.shell cmd.basic cmd.data cmd.astro
-pclient: lib.data lib.shell cmd.basic
+psched:   lib.data lib.shell cmd.basic cmd.data cmd.astro
+pclient:  lib.data lib.shell cmd.basic
 pcontrol: lib.data lib.shell cmd.basic
 
@@ -18,5 +18,5 @@
 PROGRAM = mana dvo
 
-EXTRAS = sched pclient pcontrol
+EXTRAS = psched pclient pcontrol
 
 SKIP =  dimm
Index: /trunk/Ohana/src/opihi/include/data.h
===================================================================
--- /trunk/Ohana/src/opihi/include/data.h	(revision 4692)
+++ /trunk/Ohana/src/opihi/include/data.h	(revision 4693)
@@ -8,7 +8,30 @@
 # define DATA_H
 
+/* socket / pipe communication buffer */
+typedef struct {
+  char *buffer;
+  int   Nalloc;
+  int   Nreset;
+  int   Nblock;
+  int   Nbuffer;
+} IOBuffer;
+
+/*** typedef structs used by math functions ***/
+typedef struct {
+  int   NLINES;
+  int   Nlines;
+  char **lines;
+  char  *name;
+} Queue;
+
 void InitData ();
 
-/* in misc/queues.c */
+/* IOBuffersOps.c */
+int InitIOBuffer (IOBuffer *buffer, int Nalloc);
+int FlushIOBuffer (IOBuffer *buffer);
+int ReadtoIOBuffer (IOBuffer *buffer, int fd);
+void FreeIOBuffer (IOBuffer *buffer);
+
+/* in queues.c */
 void InitQueues ();
 void ListQueues ();
@@ -18,5 +41,5 @@
 char *PopQueue (Queue *queue);
 
-/* in misc/sort.c */
+/* in sort.c */
 void sort (double *value, int N);
 void fsort (float *value, int N);
@@ -27,5 +50,5 @@
 void dsort_lists (double *X, double *Y, int *S, int N);
 
-/* in misc/fft.c */
+/* in fft.c */
 void fft (float *Data, int N, int isign);
 void fftold (float *Data, int N, int isign);
@@ -34,16 +57,16 @@
 void fourn (float *data, int *nn, int ndim, int isign);
 
-/* in misc/gaussj.c */
+/* in gaussj.c */
 int gaussj (double **a, int n, double **b, int m);
 int fgaussj (float **a, int n, float **b, int m);
 
-/* in misc/svdcmp.c */
+/* in svdcmp.c */
 int svdcmp (float *a, float *w, float *v, int Nx, int Ny);
 
-/* in misc/spline.c */
+/* in spline.c */
 void spline (float *x, float *y, int N, float *y2);
 float splint (float *x, float *y, float *y2, int N, float X);
 
-/* misc/mrqmin.c */
+/* mrqmin.c */
 float mrqcof (float *x, float *y, float *dy, int Npts, 
 	      float *par, int Npar, float **ta, float **tb, 
@@ -62,5 +85,5 @@
 void mrqfree (int Npar);
 
-/* misc/mrq2dmin.c */
+/* mrq2dmin.c */
 float mrq2dcof (float *x, float *t, float *y, float *dy, int Npts, 
 		float *par, int Npar, float **ta, float **tb, 
@@ -85,22 +108,22 @@
 void mrq2dfree (int Npar);
 
-/* misc/powell.c */
+/* powell.c */
 void powell (float *p, int Npar, float (func)() );
 
-/* misc/gaussian.c */
+/* gaussian.c */
 double gaussian (double x, double mean, double sigma);
 void gauss_init (int Nbin);
 double rnd_gauss (double mean, double sigma);
 
-/* misc/starfuncs.c */
+/* starfuncs.c */
 double get_aperture_stats (Matrix *matrix, int X, int Y, int Npix, int Nborder, double max);
 int set_rough_radii (double Ra, double Ri, double Ro);
 int get_rough_star (float *data, int Nx, int Ny, int x, int y, float *xc, float *yc, float *sx, float *sy, float *sxy, float *zs, float *zp, float *sk);
 
-/* misc/precess.c */
+/* precess.c */
 double BtoJ (double in_epoch);
 double get_epoch (char *in_epoch, char mode);
 
-/* misc/graphtools.c */
+/* graphtools.c */
 void          SetLimits             PROTO((Vector *xvec, Vector *yvec, Graphdata *graphmode));
 void          ApplyLimits           PROTO((int Xgraph, Graphdata *graphmode, int apply));
Index: /trunk/Ohana/src/opihi/include/dvomath.h
===================================================================
--- /trunk/Ohana/src/opihi/include/dvomath.h	(revision 4692)
+++ /trunk/Ohana/src/opihi/include/dvomath.h	(revision 4693)
@@ -8,12 +8,4 @@
 enum {ANYVECTOR, NEWVECTOR, OLDVECTOR};
 enum {ANYBUFFER, NEWBUFFER, OLDBUFFER};
-
-/*** typedef structs used by math functions ***/
-typedef struct {
-  int   NLINES;
-  int   Nlines;
-  char **lines;
-  char  *name;
-} Queue;
 
 typedef struct {			/* representation of a variable (0-D) */
Index: /trunk/Ohana/src/opihi/include/pclient.h
===================================================================
--- /trunk/Ohana/src/opihi/include/pclient.h	(revision 4692)
+++ /trunk/Ohana/src/opihi/include/pclient.h	(revision 4693)
@@ -40,29 +40,7 @@
 int child_stderr_fd[2];
 
-typedef struct {
-  char *buffer;
-  int   Nalloc;
-  int   Nreset;
-  int   Nblock;
-  int   Nbuffer;
-} IOBuffer;
-
 /** buffers for I/O storage **/
 IOBuffer child_stdout;
 IOBuffer child_stderr;
-
-/** IOBuffers allow the following operations **/
-
-/* create a new, empty IOBuffer with Nalloc free space */
-int  InitIOBuffer (IOBuffer *buffer, int Nalloc);
-
-/* read from the file descriptor into IOBuffer, expanding as needed */
-int  ReadtoIOBuffer (IOBuffer *buffer, int fd);
-
-/* empty the current IOBuffer, realloc to a minimal size */
-int  FlushIOBuffer (IOBuffer *buffer);
-
-/* free memory associated with IOBuffer */
-void FreeIOBuffer (IOBuffer *buffer);
 
 int InitChild ();
Index: /trunk/Ohana/src/opihi/include/pcontrol.h
===================================================================
--- /trunk/Ohana/src/opihi/include/pcontrol.h	(revision 4692)
+++ /trunk/Ohana/src/opihi/include/pcontrol.h	(revision 4693)
@@ -42,12 +42,4 @@
   PCLIENT_GOOD = 1,
 } PclientStat;
-
-typedef struct {
-  char *buffer;
-  int   Nalloc;
-  int   Nreset;
-  int   Nblock;
-  int   Nbuffer;
-} IOBuffer;
 
 typedef struct {
@@ -109,10 +101,4 @@
 # define FREE(X) if (X != NULL) { free (X); }
 # define CLOSE(FD) { if (FD) close (FD); FD = 0; }
-
-/** IOBuffers allow the following operations (see pclient.h) **/
-int  InitIOBuffer (IOBuffer *buffer, int Nalloc);
-int  ReadtoIOBuffer (IOBuffer *buffer, int fd);
-int  FlushIOBuffer (IOBuffer *buffer);
-void FreeIOBuffer (IOBuffer *buffer);
 
 void InitPcontrol ();
Index: /trunk/Ohana/src/opihi/include/psched.h
===================================================================
--- /trunk/Ohana/src/opihi/include/psched.h	(revision 4692)
+++ /trunk/Ohana/src/opihi/include/psched.h	(revision 4693)
@@ -23,13 +23,4 @@
 
 enum {RANGE_ABS, RANGE_DAY, RANGE_WEEK};
-
-/* socket / pipe communication buffer */
-typedef struct {
-  char *buffer;
-  int   Nalloc;
-  int   Nreset;
-  int   Nblock;
-  int   Nbuffer;
-} IOBuffer;
 
 typedef struct {
@@ -110,7 +101,5 @@
 /* scheduler prototypes */
 
-void InitSched ();
-
-char *memstr (char *m1, char *m2, int n);
+void InitPsched ();
 
 void InitTasks ();
@@ -165,8 +154,4 @@
 int PrintControllerOutput ();
 
-int InitIOBuffer (IOBuffer *buffer, int Nalloc);
-int FlushIOBuffer (IOBuffer *buffer);
-int ReadtoIOBuffer (IOBuffer *buffer, int fd);
-void FreeIOBuffer (IOBuffer *buffer);
 int KillControllerJob (Job *job);
 int CheckControllerStatus ();
Index: /trunk/Ohana/src/opihi/lib.data/IOBufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/IOBufferOps.c	(revision 4693)
+++ /trunk/Ohana/src/opihi/lib.data/IOBufferOps.c	(revision 4693)
@@ -0,0 +1,68 @@
+# include "pclient.h"
+
+int InitIOBuffer (IOBuffer *buffer, int Nalloc) {
+
+  buffer[0].Nalloc = Nalloc;
+  buffer[0].Nreset = Nalloc;
+  buffer[0].Nblock = Nalloc / 2;
+  buffer[0].Nbuffer = 0;
+
+  ALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+  bzero (buffer[0].buffer, buffer[0].Nalloc);
+
+  return (TRUE);
+}
+
+int FlushIOBuffer (IOBuffer *buffer) {
+
+  buffer[0].Nbuffer = 0;
+  buffer[0].Nalloc = buffer[0].Nreset;
+  REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+
+  return (TRUE);
+}
+
+int ReadtoIOBuffer (IOBuffer *buffer, int fd) {
+
+  int Nread, Nfree;
+
+  if (fd == 0) {
+    /* pipe is closed */
+    return (0);
+  }
+
+  Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
+  if (Nfree < buffer[0].Nblock) {
+    buffer[0].Nalloc += 2*buffer[0].Nblock;
+    REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+    Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
+  }
+
+  Nread = read (fd, &buffer[0].buffer[buffer[0].Nbuffer], buffer[0].Nblock);
+
+  if (Nread >= 0) {
+    buffer[0].Nbuffer += Nread;
+    return (Nread);
+  }
+
+  if (Nread == -1) {
+    switch (errno) {
+    case EAGAIN:
+    case EIO:
+      /** no data available in pipe **/
+      return (-1);
+    default:
+      /** error reading from pipe **/
+      perror ("ReadtoIOBuffer read error");
+      return (-2);
+    }
+  }
+  return (Nread);
+}
+
+void FreeIOBuffer (IOBuffer *buffer) {
+
+  if (buffer[0].buffer != (char *) NULL) {
+    free (buffer[0].buffer);
+  }
+}
Index: /trunk/Ohana/src/opihi/lib.data/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 4692)
+++ /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 4693)
@@ -36,4 +36,5 @@
 $(SDIR)/open_graph.$(ARCH).o            \
 $(SDIR)/open_image.$(ARCH).o            \
+$(SDIR)/IOBufferOps.$(ARCH).o           \
 $(SDIR)/PlotVectors.$(ARCH).o
 
Index: /trunk/Ohana/src/opihi/lib.data/queues.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/queues.c	(revision 4693)
+++ /trunk/Ohana/src/opihi/lib.data/queues.c	(revision 4693)
@@ -0,0 +1,92 @@
+# include "opihi.h"
+
+/* These functions are somewhat fragile: we cannot do multiple CreateQueue
+   invalidates the pointer from FindQueue.  Do we need a 'delete queue'
+   function?
+*/
+
+Queue *queues;   /* queue to store the list of all queues */
+int   Nqueues;   /* number of currently available queues */
+
+void InitQueues () {
+  Nqueues = 0;
+  ALLOCATE (queues, Queue, 1); 
+}
+
+/* list known queues */
+void ListQueues () {
+
+  int i;
+
+  for (i = 0; i < Nqueues; i++) {
+    fprintf (stderr, "%-15s %3d\n", queues[i].name, queues[i].Nlines);
+  }
+  return;
+}
+
+/* return the given queue */
+Queue *FindQueue (char *name) {
+
+  int i;
+
+  for (i = 0; i < Nqueues; i++) {
+    if (!strcmp (queues[i].name, name)) {
+      return (&queues[i]);
+    }
+  }
+  return (NULL);
+}
+
+/* make a new named queue */
+Queue *CreateQueue (char *name) {
+
+  Queue *queue;
+
+  queue = FindQueue (name);
+  if (queue != NULL) return (queue);
+
+  Nqueues ++;
+  REALLOCATE (queues, Queue, Nqueues);
+  queue = &queues[Nqueues - 1];
+  queue[0].Nlines = 0;
+  queue[0].NLINES = 10;
+  queue[0].name = strcreate (name);
+  ALLOCATE (queue[0].lines, char *, queue[0].NLINES);
+  return (queue);
+}
+
+void PushQueue (Queue *queue, char *line) {
+
+  int N;
+
+  N = queue[0].Nlines;
+  queue[0].lines[N] = strcreate (line);
+  queue[0].Nlines ++;
+  if (queue[0].Nlines == queue[0].NLINES) {
+    queue[0].NLINES += 10;
+    REALLOCATE (queue[0].lines, char *, queue[0].NLINES);
+  }    
+  return;
+}
+
+char *PopQueue (Queue *queue) {
+
+  int i;
+  char *line;
+
+  if (queue[0].Nlines == 0) return (NULL);
+  line = queue[0].lines[0];
+
+  for (i = 1; i < queue[0].Nlines; i++) {
+    queue[0].lines[i-1] = queue[0].lines[i];
+  }
+  queue[0].Nlines --;
+
+  if (queue[0].Nlines < queue[0].NLINES - 20) {
+    queue[0].NLINES -= 20;
+    queue[0].NLINES = MAX (queue[0].NLINES, 10);
+    REALLOCATE (queue[0].lines, char *, queue[0].NLINES);
+  }    
+  return (line);
+}
+
Index: unk/Ohana/src/opihi/lib.shell/queues.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/queues.c	(revision 4692)
+++ 	(revision )
@@ -1,93 +1,0 @@
-# include "opihi.h"
-
-/* these functions are somewhat fragile: we cannot do multiple 
-   CreateQueue / FindQueue operations in a row or the pointers 
-   will get messed up
-   do we need a 'delete queue' function?
-*/
-
-Queue *queues;   /* queue to store the list of all queues */
-int   Nqueues;   /* number of currently available queues */
-
-void InitQueues () {
-  Nqueues = 0;
-  ALLOCATE (queues, Queue, 1); 
-}
-
-/* list known queues */
-void ListQueues () {
-
-  int i;
-
-  for (i = 0; i < Nqueues; i++) {
-    fprintf (stderr, "%-15s %3d\n", queues[i].name, queues[i].Nlines);
-  }
-  return;
-}
-
-/* return the given queue */
-Queue *FindQueue (char *name) {
-
-  int i;
-
-  for (i = 0; i < Nqueues; i++) {
-    if (!strcmp (queues[i].name, name)) {
-      return (&queues[i]);
-    }
-  }
-  return (NULL);
-}
-
-/* make a new named queue */
-Queue *CreateQueue (char *name) {
-
-  Queue *queue;
-
-  queue = FindQueue (name);
-  if (queue != NULL) return (queue);
-
-  Nqueues ++;
-  REALLOCATE (queues, Queue, Nqueues);
-  queue = &queues[Nqueues - 1];
-  queue[0].Nlines = 0;
-  queue[0].NLINES = 10;
-  queue[0].name = strcreate (name);
-  ALLOCATE (queue[0].lines, char *, queue[0].NLINES);
-  return (queue);
-}
-
-void PushQueue (Queue *queue, char *line) {
-
-  int N;
-
-  N = queue[0].Nlines;
-  queue[0].lines[N] = strcreate (line);
-  queue[0].Nlines ++;
-  if (queue[0].Nlines == queue[0].NLINES) {
-    queue[0].NLINES += 10;
-    REALLOCATE (queue[0].lines, char *, queue[0].NLINES);
-  }    
-  return;
-}
-
-char *PopQueue (Queue *queue) {
-
-  int i;
-  char *line;
-
-  if (queue[0].Nlines == 0) return (NULL);
-  line = queue[0].lines[0];
-
-  for (i = 1; i < queue[0].Nlines; i++) {
-    queue[0].lines[i-1] = queue[0].lines[i];
-  }
-  queue[0].Nlines --;
-
-  if (queue[0].Nlines < queue[0].NLINES - 20) {
-    queue[0].NLINES -= 20;
-    queue[0].NLINES = MAX (queue[0].NLINES, 10);
-    REALLOCATE (queue[0].lines, char *, queue[0].NLINES);
-  }    
-  return (line);
-}
-
Index: /trunk/Ohana/src/opihi/pantasks/CheckJobs.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/CheckJobs.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/CheckJobs.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int CheckJobs () {
Index: /trunk/Ohana/src/opihi/pantasks/CheckSystem.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/CheckSystem.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/CheckSystem.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int CheckSystem () {
Index: /trunk/Ohana/src/opihi/pantasks/CheckTasks.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/CheckTasks.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/CheckTasks.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int CheckTasks () {
Index: /trunk/Ohana/src/opihi/pantasks/CheckTimeRanges.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/CheckTimeRanges.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/CheckTimeRanges.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int CheckTimeRanges (TimeRange *ranges, int Nranges) {
Index: /trunk/Ohana/src/opihi/pantasks/ControllerOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/ControllerOps.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/ControllerOps.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 # define CONTROLLER_TIMEOUT 20
 # define CONNECT_TIMEOUT 300
@@ -350,8 +350,5 @@
       exit (2);
     case -1:  /* no data in pipe */
-      break;
-    case 0:   /* pipe is closed */
-      /** change child state? **/
-      break;
+    case 0:   /* pipe is closed, change child state? **/
     default:  /* data in pipe */
       break;
@@ -365,8 +362,5 @@
       exit (2);
     case -1:  /* no data in pipe */
-      break;
-    case 0:   /* pipe is closed */
-      /** change child state? **/
-      break;
+    case 0:   /* pipe is closed, change child state? **/
     default:  /* data in pipe */
       break;
Index: /trunk/Ohana/src/opihi/pantasks/JobIDOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/JobIDOps.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/JobIDOps.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 # define MAX_N_JOBS 1000
Index: /trunk/Ohana/src/opihi/pantasks/JobOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/JobOps.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/JobOps.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 static Job **jobs;
Index: /trunk/Ohana/src/opihi/pantasks/LocalJob.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/LocalJob.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/LocalJob.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 /* this could be written a just a one-way pipe */
@@ -66,32 +66,31 @@
   CheckLocalJobStatus (job);
 
-  /* read stdout buffer */
-  Nread = ReadtoIOBuffer (&job[0].stdout, job[0].stdout_fd);
-  switch (Nread) {
-    case -2:  /* error in read (programming error?  system level error?) */
-      fprintf (stderr, "serious IO error\n");
-      exit (2);
-    case -1:  /* no data in pipe */
-      break;
-    case 0:   /* pipe is closed */
-      /** change child state? **/
-      break;
-    default:  /* data in pipe */
-      break;
-  }
+  if ((job[0].state == JOB_EXIT) || (job[0].state == JOB_CRASH)) {
+    EmptyIOBuffer (&job[0].stdout, job[0].stdout_fd);
+    EmptyIOBuffer (&job[0].stderr, job[0].stderr_fd);
+  } else {
+    /* read stdout buffer */
+    Nread = ReadtoIOBuffer (&job[0].stdout, job[0].stdout_fd);
+    switch (Nread) {
+      case -2:  /* error in read (programming error?  system level error?) */
+	fprintf (stderr, "serious IO error\n");
+	exit (2);
+      case -1:  /* no data in pipe */
+      case 0:   /* pipe is closed, change child state? **/
+      default:  /* data in pipe */
+	break;
+    }
   
-  /* read stderr buffer */
-  Nread = ReadtoIOBuffer (&job[0].stderr, job[0].stderr_fd);
-  switch (Nread) {
-    case -2:  /* error in read (programming error?  system level error?) */
-      fprintf (stderr, "serious IO error\n");
-      exit (2);
-    case -1:  /* no data in pipe */
-      break;
-    case 0:   /* pipe is closed */
-      /** change child state? **/
-      break;
-    default:  /* data in pipe */
-      break;
+    /* read stderr buffer */
+    Nread = ReadtoIOBuffer (&job[0].stderr, job[0].stderr_fd);
+    switch (Nread) {
+      case -2:  /* error in read (programming error?  system level error?) */
+	fprintf (stderr, "serious IO error\n");
+	exit (2);
+      case -1:  /* no data in pipe */
+      case 0:   /* pipe is closed, change child state? **/
+      default:  /* data in pipe */
+	break;
+    }
   }
   return (TRUE);
@@ -101,4 +100,7 @@
 
   int result, waitstatus;
+
+  /*** if child has exited, does the pipe hang around until it is flushed? ***/
+  /*** who closes the child stdout/stderr fd? */
 
   /* check local job status */
Index: /trunk/Ohana/src/opihi/pantasks/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/Makefile	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/Makefile	(revision 4693)
@@ -7,5 +7,5 @@
 LIB     =       $(HOME)/lib
 INC     =       $(HOME)/include
-SDIR    =       $(HOME)/sched
+SDIR    =       $(HOME)/psched
 #
 DESTBIN =       $(LBIN)
@@ -13,5 +13,5 @@
 DESTINC =       $(LINC)
 DESTMAN =       $(LMAN)
-DESTHLP =       $(LHLP)/sched
+DESTHLP =       $(LHLP)/psched
 #  
 INCS    =       -I$(INC) -I$(LINC) -I$(XINC)
@@ -27,5 +27,5 @@
 funcs = \
 $(SDIR)/init.$(ARCH).o \
-$(SDIR)/scheduler.$(ARCH).o \
+$(SDIR)/psched.$(ARCH).o \
 $(SDIR)/CheckJobs.$(ARCH).o \
 $(SDIR)/CheckSystem.$(ARCH).o \
@@ -36,6 +36,5 @@
 $(SDIR)/JobOps.$(ARCH).o \
 $(SDIR)/JobIDOps.$(ARCH).o \
-$(SDIR)/TaskOps.$(ARCH).o \
-$(SDIR)/IOBufferOps.$(ARCH).o
+$(SDIR)/TaskOps.$(ARCH).o
 
 cmds = \
@@ -67,14 +66,14 @@
 $(DESTLIB)/libdatacmd.a
 
-all: scheduler
+all: psched
 
-scheduler: $(BIN)/scheduler.$(ARCH)
+psched: $(BIN)/psched.$(ARCH)
 	@echo done
 
-$(BIN)/scheduler.$(ARCH) : $(funcs) $(cmds) $(libs)
+$(BIN)/psched.$(ARCH) : $(funcs) $(cmds) $(libs)
 
-install: $(DESTBIN)/scheduler help
+install: $(DESTBIN)/psched help
 
-help: cmd.basic.help cmd.data.help cmd.astro.help sched.help
+help: cmd.basic.help cmd.data.help cmd.astro.help psched.help
 
 # utilities #################################################
Index: /trunk/Ohana/src/opihi/pantasks/TaskOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/TaskOps.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/TaskOps.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 static Task **tasks;
Index: /trunk/Ohana/src/opihi/pantasks/controller.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_host    PROTO((int, char **));
Index: /trunk/Ohana/src/opihi/pantasks/controller_check.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller_check.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller_check.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_check (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/controller_exit.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller_exit.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller_exit.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_exit (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/controller_host.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller_host.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller_host.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_host (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/controller_output.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller_output.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller_output.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_output (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/controller_status.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/controller_status.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/controller_status.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller_status (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/delete.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/delete.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/delete.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int delete_job (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/init.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/init.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/init.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int controller      PROTO((int, char **));
@@ -47,5 +47,5 @@
 */
 
-void InitSched () {
+void InitPsched () {
   
   int i;
Index: /trunk/Ohana/src/opihi/pantasks/job.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/job.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/job.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 /* this will require a bit of care: to define a job, we need
Index: /trunk/Ohana/src/opihi/pantasks/kill.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/kill.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/kill.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int kill_job (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/psched.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/psched.c	(revision 4693)
+++ /trunk/Ohana/src/opihi/pantasks/psched.c	(revision 4693)
@@ -0,0 +1,77 @@
+# include "psched.h"
+
+# define opihi_name "psched"
+# define opihi_prompt "psched: "
+# define opihi_description "parallel task scheduler\n"
+# define opihi_history ".psched"
+# define opihi_rcfile ".pschedrc"
+
+/* program-dependent initialization */
+void initialize (int argc, char **argv) {
+  
+  auto_break = TRUE;
+
+  Nlists = 0;
+  ALLOCATE (lists, List, 1); 
+
+  /* init functions required by libraries */
+  /* -libopihi */
+  InitCommands ();
+  InitMacros ();
+  InitBuffers ();
+  InitVectors ();
+  InitVariables ();
+
+  /* -libdisplay */
+  InitGraph ();
+  InitImage ();
+
+  /* load the commands used by this implementation */
+  InitBasic ();
+  InitData ();
+  InitOutfile ();
+  InitPsched ();
+  InitTasks ();
+  InitJobs ();
+  InitJobIDs ();
+
+  rl_readline_name = opihi_name;
+  rl_attempted_completion_function = command_completer;
+  rl_event_hook = NULL;
+  rl_set_keyboard_input_timeout (1000000); 
+
+  set_str_variable ("HISTORY", opihi_history);
+  set_str_variable ("PROMPT", opihi_prompt);
+  set_str_variable ("RCFILE", opihi_rcfile);
+# ifdef HELPDIR_DEFAULT
+  set_str_variable ("HELPDIR", MACRO_NAME(HELPDIR_DEFAULT));
+# endif
+
+  { /* check history file permission */
+    FILE *f;
+    f = fopen (opihi_history, "a");
+    if (f == NULL) /* no current history file here */
+      fprintf (stderr, "can't save history.\n");
+    else
+      fclose (f);
+    stifle_history (200);
+    read_history (opihi_history);
+  }
+
+  signal (SIGINT, SIG_IGN);
+  return;
+}
+
+/* standard welcome message */
+void welcome () {
+  fprintf (stderr, "\n");
+  fprintf (stderr, "Welcome to %s - %s\n\n", opihi_name, opihi_description);
+}
+
+/* add program-dependent exit functions here */
+void cleanup () {
+  QuitImage ();
+  QuitGraph ();
+  QuitController ();
+  return;
+}
Index: /trunk/Ohana/src/opihi/pantasks/run.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/run.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/run.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int run (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/status.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/status.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/status.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int status_sys (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/stop.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/stop.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/stop.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int stop (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/task.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 # define prompt "> "
 
Index: /trunk/Ohana/src/opihi/pantasks/task_command.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_command.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_command.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int task_command (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/task_host.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_host.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_host.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int task_host (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/task_macros.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_macros.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_macros.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 # define D_NLINES 100
 # define prompt "> "
Index: /trunk/Ohana/src/opihi/pantasks/task_nmax.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_nmax.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_nmax.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int task_nmax (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/task_periods.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_periods.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_periods.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int task_periods (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/task_trange.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/task_trange.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/task_trange.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 int task_trange (int argc, char **argv) {
Index: /trunk/Ohana/src/opihi/pantasks/verbose.c
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/verbose.c	(revision 4692)
+++ /trunk/Ohana/src/opihi/pantasks/verbose.c	(revision 4693)
@@ -1,3 +1,3 @@
-# include "scheduler.h"
+# include "psched.h"
 
 static int VERBOSE = FALSE;
Index: unk/Ohana/src/opihi/pclient/IOBufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pclient/IOBufferOps.c	(revision 4692)
+++ 	(revision )
@@ -1,67 +1,0 @@
-# include "pclient.h"
-
-int InitIOBuffer (IOBuffer *buffer, int Nalloc) {
-
-  buffer[0].Nalloc = Nalloc;
-  buffer[0].Nreset = Nalloc;
-  buffer[0].Nblock = Nalloc / 2;
-  buffer[0].Nbuffer = 0;
-
-  ALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-
-  return (TRUE);
-}
-
-int FlushIOBuffer (IOBuffer *buffer) {
-
-  buffer[0].Nbuffer = 0;
-  buffer[0].Nalloc = buffer[0].Nreset;
-  REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-
-  return (TRUE);
-}
-
-int ReadtoIOBuffer (IOBuffer *buffer, int fd) {
-
-  int Nread, Nfree;
-
-  if (fd == 0) {
-    /* pipe is closed */
-    return (0);
-  }
-
-  Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
-  if (Nfree < buffer[0].Nblock) {
-    buffer[0].Nalloc += 2*buffer[0].Nblock;
-    REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-    Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
-  }
-
-  Nread = read (fd, &buffer[0].buffer[buffer[0].Nbuffer], buffer[0].Nblock);
-
-  if (Nread >= 0) {
-    buffer[0].Nbuffer += Nread;
-    return (Nread);
-  }
-
-  if (Nread == -1) {
-    switch (errno) {
-    case EAGAIN:
-    case EIO:
-      /** no data available in pipe **/
-      return (-1);
-    default:
-      /** error reading from pipe **/
-      perror ("ReadtoIOBuffer read error");
-      return (-2);
-    }
-  }
-  return (Nread);
-}
-
-void FreeIOBuffer (IOBuffer *buffer) {
-
-  if (buffer[0].buffer != (char *) NULL) {
-    free (buffer[0].buffer);
-  }
-}
Index: /trunk/Ohana/src/opihi/pclient/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pclient/Makefile	(revision 4692)
+++ /trunk/Ohana/src/opihi/pclient/Makefile	(revision 4693)
@@ -28,5 +28,4 @@
 $(SDIR)/init.$(ARCH).o \
 $(SDIR)/pclient.$(ARCH).o \
-$(SDIR)/IOBufferOps.$(ARCH).o \
 $(SDIR)/ChildOps.$(ARCH).o \
 
@@ -54,5 +53,5 @@
 install: $(DESTBIN)/pclient help
 
-help: cmd.basic.help pclient.help
+help: clean-help cmd.basic.help pclient.help
 
 # utilities #################################################
@@ -91,4 +90,8 @@
 	rm -f `find . -name "#*"`
 
+clean-help:
+	@if [ ! -d $(DESTHLP) ]; then mkdir -p $(DESTHLP); fi
+	rm -f $(DESTHLP)/*
+
 dist: clean
 	rm -f $(BIN)/*
Index: unk/Ohana/src/opihi/pcontrol/IOBufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/IOBufferOps.c	(revision 4692)
+++ 	(revision )
@@ -1,69 +1,0 @@
-# include "pclient.h"
-
-int InitIOBuffer (IOBuffer *buffer, int Nalloc) {
-
-  buffer[0].Nalloc = Nalloc;
-  buffer[0].Nreset = Nalloc;
-  buffer[0].Nblock = Nalloc / 2;
-  buffer[0].Nbuffer = 0;
-
-  ALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-  bzero (buffer[0].buffer, buffer[0].Nalloc);
-
-  return (TRUE);
-}
-
-int FlushIOBuffer (IOBuffer *buffer) {
-
-  buffer[0].Nbuffer = 0;
-  buffer[0].Nalloc = buffer[0].Nreset;
-  REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-
-  return (TRUE);
-}
-
-int ReadtoIOBuffer (IOBuffer *buffer, int fd) {
-
-  int Nread, Nfree;
-
-  if (fd == 0) {
-    fprintf (stderr, "pipe is closed (ReadIOBuffer)\n");
-    return (0);
-    /* pipe is closed */
-  }
-
-  Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
-  if (Nfree < buffer[0].Nblock) {
-    buffer[0].Nalloc += 2*buffer[0].Nblock;
-    REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
-    Nfree = buffer[0].Nalloc - buffer[0].Nbuffer;
-  }
-
-  Nread = read (fd, &buffer[0].buffer[buffer[0].Nbuffer], buffer[0].Nblock);
-
-  if (Nread >= 0) {
-    buffer[0].Nbuffer += Nread;
-    return (Nread);
-  }
-
-  if (Nread == -1) {
-    switch (errno) {
-    case EAGAIN:
-    case EIO:
-      /** no data available in pipe **/
-      return (-1);
-    default:
-      /** error reading from pipe **/
-      perror ("ReadtoIOBuffer read error");
-      return (-2);
-    }
-  }
-  return (Nread);
-}
-
-void FreeIOBuffer (IOBuffer *buffer) {
-
-  if (buffer[0].buffer != (char *) NULL) {
-    free (buffer[0].buffer);
-  }
-}
Index: /trunk/Ohana/src/opihi/pcontrol/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/Makefile	(revision 4692)
+++ /trunk/Ohana/src/opihi/pcontrol/Makefile	(revision 4693)
@@ -38,5 +38,4 @@
 $(SDIR)/GetJobOutput.$(ARCH).o \
 $(SDIR)/HostOps.$(ARCH).o \
-$(SDIR)/IOBufferOps.$(ARCH).o \
 $(SDIR)/JobID.$(ARCH).o \
 $(SDIR)/JobOps.$(ARCH).o \
@@ -74,5 +73,5 @@
 install: $(DESTBIN)/pcontrol help
 
-help: cmd.basic.help cmd.data.help pcontrol.help
+help: clean-help cmd.basic.help pcontrol.help
 
 # utilities #################################################
@@ -111,4 +110,8 @@
 	rm -f `find . -name "#*"`
 
+clean-help:
+	@if [ ! -d $(DESTHLP) ]; then mkdir -p $(DESTHLP); fi
+	rm -f $(DESTHLP)/*
+
 dist: clean
 	rm -f $(BIN)/*
@@ -128,5 +131,4 @@
 
 %.help:
-	@if [ ! -d $(DESTHLP) ]; then mkdir -p $(DESTHLP); fi
 	rm -f $(HOME)/$*/help/*~
 	rm -f $(HOME)/$*/help/#*
Index: /trunk/Ohana/src/opihi/pcontrol/help/host
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/help/host	(revision 4693)
+++ /trunk/Ohana/src/opihi/pcontrol/help/host	(revision 4693)
@@ -0,0 +1,1 @@
+empty
Index: /trunk/Ohana/src/opihi/scripts/copy.pro
===================================================================
--- /trunk/Ohana/src/opihi/scripts/copy.pro	(revision 4693)
+++ /trunk/Ohana/src/opihi/scripts/copy.pro	(revision 4693)
@@ -0,0 +1,136 @@
+
+# identify the images ready for copy 
+task	       new.images
+  command      new.images
+  host         local
+
+  periods      -poll 1
+  periods      -exec 30
+  periods      -timeout 2
+
+  # success
+  task.exit    0
+    push new.images $stdout
+    $new.image.failure = 0
+  end
+
+  # locked list
+  task.exit    1
+    echo       "new.images: exec failure"
+    $new.image.failure ++
+  end
+
+  # default exit status
+  task.exit    -
+    echo       "new.images: unknown exit status: $EXIT"
+    $new.image.failure ++
+  end
+
+  # operation times out?
+  task.exit    timeout
+    echo       "new.images: timeout"
+    $new.image.failure ++
+  end
+end
+
+# copy specific images from the summit
+task           copy.images
+
+  # these define task properties which are fixed
+
+  period       -exec 2
+  period       -poll 1
+  period       -timeout 50
+
+  # these commands are executed at the start of a new task
+  task.exec
+    local        RemoteName
+    local        FileID
+    local        Host
+
+    queuesize  NewImages -var N
+    if ($N > 0) break
+    if ($network == 0) break
+    if ($filesystem == 1) break
+
+    pop NewImages -var line
+    list tmp -split $line
+    $RemoteName = $tmp:0
+    $FileID     = $tmp:1
+    $Host       = $tmp:2
+    $Ntry       = $tmp:3
+
+    stderr       /data/logfiles/copy/$FileID.log
+    stdout       -queue $FileIDlog
+
+    echo $TaskID
+    echo $TaskName
+    spawn copy.images $RemoteName $FileID $Host -host $Host
+  end
+
+  # success
+  task.exit      0
+    $new.image.failure --
+  end
+
+  # summmit connection failed
+  task.exit      1
+    echo         "copy.images: copy failed $RemoteName $FileID"
+    push         NewImages "$RemoteName $FileID $Host 0"
+    $copy.image.failure ++
+  end
+
+  # target disk full
+  task.exit      2
+    echo         "copy.images: disk full"
+    push         NewImages "$RemoteName $FileID $Host 0"
+    $copy.image.failure ++
+  end
+
+  # file not found
+  task.exit      3
+    echo         "copy.images: missing file"
+    # send a message to OTIS?
+  end
+
+  # task timed out
+  task.exit      timeout
+    echo        "copy.images: timeout"
+    push        NewImages "$RemoteName $FileID $Host 0"
+    $copy.image.failure ++
+  end
+end
+
+# identify the images ready for copy 
+TASK	       new.images
+  COMMAND      new.images
+  HOST         -
+  STDERR       /data/logfiles/new.images.log
+  STDOUT       $stdout
+  EXEC_PERIOD  30
+  POLL_PERIOD  1
+
+  # success
+  EXIT         0
+    STDOUT     @new.images
+    $new.image.failure = 0
+  END
+
+  # locked list
+  EXIT         1
+    MESSAGE    "new.images: exec failure"
+    $new.image.failure ++
+  END
+
+  # default exit status
+  EXIT         -
+    MESSAGE    "new.images: unknown exit status: $EXIT"
+    $new.image.failure ++
+  END
+
+  # operation times out?
+  TIMEOUT      2
+    MESSAGE    "new.images: timeout"
+    $new.image.failure ++
+  END
+END
Index: /trunk/Ohana/src/opihi/scripts/sched.pro
===================================================================
--- /trunk/Ohana/src/opihi/scripts/sched.pro	(revision 4692)
+++ /trunk/Ohana/src/opihi/scripts/sched.pro	(revision 4693)
@@ -1,12 +1,13 @@
 
-controller host alala
+# controller host alala
 
 task test
-  command date 
+  command ls /data/eugene 
   periods -poll 1.0
   periods -exec 5.0
   periods -timeout 10.0
-  trange 07:09 07:10
-  trange -exclude 07:09:30 07:09:45
+  # trange 07:09 07:10
+  # trange -exclude 07:09:30 07:09:45
+  nmax 1
   host local
   # host localhost
@@ -20,7 +21,6 @@
     # note that $stdout/$stderr may contain return characters
     # which will interfere with 'exec'
-    output success.log
+    # push ls.list $stdout
     echo $stdout
-    output stdout
   end
 
