Index: /trunk/Ohana/src/elixir/src/ConfigPID.c
===================================================================
--- /trunk/Ohana/src/elixir/src/ConfigPID.c	(revision 27587)
+++ /trunk/Ohana/src/elixir/src/ConfigPID.c	(revision 27588)
@@ -40,7 +40,7 @@
 
   ALLOCATE (username, char, 256);
-  fscanf (f, "%*s %d", &pid);
-  fscanf (f, "%*s %s", username);
-  fscanf (f, "%*s %s", machine);
+  if (fscanf (f, "%*s %d", &pid) != 1) fprintf (stderr, "error reading pid\n");
+  if (fscanf (f, "%*s %s", username) != 1) fprintf (stderr, "error reading pid\n");
+  if (fscanf (f, "%*s %s", machine) != 1) fprintf (stderr, "error reading pid\n");
   fclose (f);
 
Index: /trunk/Ohana/src/elixir/src/DumpStatus.c
===================================================================
--- /trunk/Ohana/src/elixir/src/DumpStatus.c	(revision 27587)
+++ /trunk/Ohana/src/elixir/src/DumpStatus.c	(revision 27588)
@@ -12,5 +12,7 @@
 
   if (filename == (char *) NULL) {
-    system ("tput clear");
+    if (system ("tput clear") == -1) {
+      fprintf (stderr, "\n\n\n");
+    }
     f = stderr;
   } else {
Index: /trunk/Ohana/src/elixir/src/MachineOps.c
===================================================================
--- /trunk/Ohana/src/elixir/src/MachineOps.c	(revision 27587)
+++ /trunk/Ohana/src/elixir/src/MachineOps.c	(revision 27588)
@@ -209,7 +209,11 @@
     /* we can set up the shell here */
     sprintf (line, "setenv PTOLEMY %s\n", ConfigFilename);
-    write (wsock, line, strlen (line));
+    if (write (wsock, line, strlen (line)) != strlen(line)) {
+      return FALSE;
+    }
     sprintf (line, "umask 002\n");
-    write (wsock, line, strlen (line));
+    if (write (wsock, line, strlen (line)) != strlen(line)) {
+      return FALSE;
+    }
     return (TRUE);
   } else {
@@ -325,5 +329,7 @@
 
   sprintf (buffer, "exit\n");
-  write (machine[0].wsock, buffer, strlen(buffer));
+  if (write (machine[0].wsock, buffer, strlen(buffer)) != strlen(buffer)) {
+    fprintf (stderr, "can't shutdown %s\n", machine[0].hostname); 
+  }
   close (machine[0].wsock);
   close (machine[0].rsock);
@@ -448,5 +454,7 @@
 
   if (filename == (char *) NULL) {
-    system ("tput clear");
+    if (system ("tput clear") == -1) {
+      fprintf (stderr, "--------\n");
+    }
     f = stderr;
   } else {
Index: /trunk/Ohana/src/elixir/src/StartMachine.c
===================================================================
--- /trunk/Ohana/src/elixir/src/StartMachine.c	(revision 27587)
+++ /trunk/Ohana/src/elixir/src/StartMachine.c	(revision 27588)
@@ -23,5 +23,5 @@
 
   Nout = sprintf (&command[Nbyte], "\n echo PROCESS DONE\n");
-  write (machine[0].wsock, command, strlen(command));
+  if (write (machine[0].wsock, command, strlen(command)) != strlen(command)) return (FALSE);
 
   gettimeofday (&machine[0].object[0].start, (void *) NULL);
Index: /trunk/Ohana/src/elixir/src/rconnect.c
===================================================================
--- /trunk/Ohana/src/elixir/src/rconnect.c	(revision 27587)
+++ /trunk/Ohana/src/elixir/src/rconnect.c	(revision 27588)
@@ -87,5 +87,5 @@
      without setting onintr */
   sprintf (buffer, "onintr\n");
-  write (*wsock, buffer, strlen(buffer));
+  status = write (*wsock, buffer, strlen(buffer));
   if ((status == -1) && (errno == EPIPE)) {
     fprintf (stderr, "socket closed unexpectedly\n");
Index: /trunk/Ohana/src/libautocode/def/autocode.c
===================================================================
--- /trunk/Ohana/src/libautocode/def/autocode.c	(revision 27587)
+++ /trunk/Ohana/src/libautocode/def/autocode.c	(revision 27588)
@@ -113,5 +113,5 @@
 int Send_$STRUCT (int device, $STRUCT *data, int Ndata, int copy) {
 
-  int Nbytes;
+  int Nwrite, Nbytes;
   $STRUCT *tmpdata;
 
@@ -129,5 +129,8 @@
   SendCommand (device, 16, "NVALUE: %6d", Ndata);
   SendCommand (device, 16, "NBYTES: %6d", Nbytes);
-  write (device, tmpdata, Nbytes);
+  Nwrite = write (device, tmpdata, Nbytes);
+  if (Nwrite != Nbytes) {
+    return (FALSE);
+  }
   
   /* perform handshaking? */
Index: /trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 27587)
+++ /trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 27588)
@@ -248,5 +248,8 @@
   /* rewind file pointers and truncate */
   fseeko (f, 0LL, SEEK_SET);
-  ftruncate (fileno (catalog[0].f), 0);
+  if (ftruncate (fileno (catalog[0].f), 0)) {
+    if (VERBOSE) fprintf (stderr, "failed to truncate file\n");
+    goto failure;
+  }
   ftable.header = &header;
 
Index: /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 27587)
+++ /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 27588)
@@ -285,5 +285,8 @@
   f = catalog[0].f;
   fseeko (f, 0, SEEK_SET);
-  ftruncate (fileno (catalog[0].f), 0);
+  if (ftruncate (fileno (catalog[0].f), 0)) {
+    if (VERBOSE) fprintf (stderr, "failed to truncate file\n");
+    goto failure;
+  }
 
   /* write header data (use gfits_write_header?) */
Index: /trunk/Ohana/src/libkapa/src/IOfuncs.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/IOfuncs.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/IOfuncs.c	(revision 27588)
@@ -9,6 +9,9 @@
 int KiiSendData (int device, char *data, int Nbytes) {
 
+  int Nwrite;
+
   KiiSendCommand (device, 16, "LEN: %11d", Nbytes);
-  write (device, data, Nbytes);
+  Nwrite = write (device, data, Nbytes);
+  if (Nwrite != Nbytes) return (FALSE);
   return (TRUE);
 } 
@@ -21,4 +24,5 @@
   /* read 16 bytes: LEN (length) */
   status = read (device, buffer, 16);
+  if (status != 16) return NULL;
   buffer[16] = 0;
 
@@ -26,5 +30,10 @@
   sscanf (buffer, "%*s %d", &Nbytes);
   ALLOCATE (data, char, Nbytes + 1);
-  read (device, data, Nbytes);
+  status = read (device, data, Nbytes);
+  if (status != Nbytes) {
+    free (data);
+    return NULL;
+  }
+
   data[Nbytes] = 0;
 
@@ -108,4 +117,5 @@
 int KiiSendCommandV (int device, int length, char *format, va_list argp) {
 
+  int Nwrite;
   char *string;
 
@@ -116,5 +126,6 @@
   vsnprintf (string, length + 1, format, argp);
 
-  write (device, string, length);
+  Nwrite = write (device, string, length);
+  if (Nwrite != length) return (FALSE);
 
   if (DEBUG) fprintf (stderr, "send: %s\n", string);
Index: /trunk/Ohana/src/libkapa/src/KapaOpen.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/KapaOpen.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/KapaOpen.c	(revision 27588)
@@ -228,5 +228,8 @@
     sprintf (line, "%s -name '%s' &", kapa_exec, kapa_name);
   }
-  system (line);
+  if (system (line) == -1) {
+    fprintf (stderr, "failed to launch kapa\n");
+    return 0;
+  }
 
 # define NTRY 500
@@ -273,5 +276,8 @@
     sprintf (temp, "%s -socket %s -name %s &", kapa_exec, socket_name, name);
   }
-  system (temp);
+  if (system (temp) == -1) {
+    fprintf (stderr, "failed to launch kapa\n");
+    return 0;
+  }
 
   AddressLength =  sizeof (Address);
Index: /trunk/Ohana/src/libkapa/src/KapaWindow.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/KapaWindow.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/KapaWindow.c	(revision 27588)
@@ -232,5 +232,5 @@
 int KapaPlotVector (int fd, int Npts, float *values, char *type) {
 
-  int Nbytes;
+  int Nbytes, Nwrite;
   int swap;
 
@@ -256,5 +256,9 @@
   KiiSendMessage (fd, "%s %d %d %d", type, Npts, Nbytes, swap); 
 
-  write (fd, values, Nbytes);
+  Nwrite = write (fd, values, Nbytes);
+  if (Nwrite != Nbytes) {
+    fprintf (stderr, "error sending data\n");
+    return FALSE;
+  }
   KiiWaitAnswer (fd, "DONE");
   return (TRUE);
Index: /trunk/Ohana/src/libkapa/src/KiiOpen.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/KiiOpen.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/KiiOpen.c	(revision 27588)
@@ -29,5 +29,8 @@
     sprintf (temp, "%s %s -name %s &", kii_exec, socket_name, name);
   }
-  system (temp);
+  if (system (temp) == -1) {
+    fprintf (stderr, "error starting Kapa\n");
+  }
+
 
   AddressLength =  sizeof (Address);
Index: /trunk/Ohana/src/libkapa/src/KiiOverlay.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/KiiOverlay.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/KiiOverlay.c	(revision 27588)
@@ -52,5 +52,5 @@
 int KiiLoadOverlay (int fd, KiiOverlay *overlay, int Noverlay, char *overname) {
 
-  int i, overnum, Ntextdata, NTEXTDATA, Ntext, Nchar;
+  int i, overnum, Ntextdata, NTEXTDATA, Ntext, Nchar, nchar;
   char *textdata;
   KiiOverlayBase *buffer;
@@ -88,8 +88,17 @@
 
   // we could break this into segments if we want to trap an interrupt, but why bother?
-  Nchar = write (fd, buffer, Noverlay*sizeof(KiiOverlayBase));
+  nchar = Noverlay*sizeof(KiiOverlayBase);
+  Nchar = write (fd, buffer, nchar);
+  if (Nchar != nchar) {
+    fprintf (stderr, "comm error\n");
+    return FALSE;
+  }
   KiiWaitAnswer (fd, "DONE");
 
-  write (fd, textdata, Ntextdata);
+  Nchar = write (fd, textdata, Ntextdata);
+  if (Nchar != Ntextdata) {
+    fprintf (stderr, "comm error\n");
+    return FALSE;
+  }
   KiiWaitAnswer (fd, "DONE"); // this 'DONE' notes the end of the textdata buffer
 
Index: /trunk/Ohana/src/libkapa/src/KiiPicture.c
===================================================================
--- /trunk/Ohana/src/libkapa/src/KiiPicture.c	(revision 27587)
+++ /trunk/Ohana/src/libkapa/src/KiiPicture.c	(revision 27588)
@@ -21,5 +21,5 @@
 int KiiNewPicture1D (int fd, KiiImage *image, KapaImageData *data, Coords *coords) {
 
-  int Npix, Ncolors, size;
+  int Nwrite, Npix, Ncolors, size;
   float *in, min, max;
 
@@ -44,5 +44,9 @@
 
   /* send the image data */
-  write (fd, image[0].data1d, size);
+  Nwrite = write (fd, image[0].data1d, size);
+  if (Nwrite != size) {
+    fprintf (stderr, "error reading picture\n");
+    return (FALSE);
+  }
 
   KiiWaitAnswer (fd, "DONE");
@@ -53,5 +57,5 @@
 
   int i;
-  int Npix, Ncolors, NNcolors, size;
+  int Nwrite, Npix, Ncolors, NNcolors, size;
   float *in, min, max;
   char *out, *outbuffer;
@@ -99,5 +103,9 @@
 
   /* send the image data */
-  write (fd, outbuffer, size);
+  Nwrite = write (fd, outbuffer, size);
+  if (Nwrite != size) {
+    fprintf (stderr, "error reading picture\n");
+    return (FALSE);
+  }
   free (outbuffer);
 
@@ -109,5 +117,5 @@
 
   int j;
-  int Npix, Ncolors, size;
+  int Nwrite, Nbytes, Npix, Ncolors, size;
   float min, max;
 
@@ -132,5 +140,10 @@
 
   for (j = 0; j < image[0].Ny; j++) {
-      write (fd, image[0].data2d[j], image[0].Nx*sizeof(float));
+    Nbytes = image[0].Nx*sizeof(float);
+    Nwrite = write (fd, image[0].data2d[j], Nbytes);
+    if (Nwrite != size) {
+      fprintf (stderr, "error reading picture\n");
+      return (FALSE);
+    }
   }
 
Index: /trunk/Ohana/src/relastro/src/UpdateObjects.c
===================================================================
--- /trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 27587)
+++ /trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 27588)
@@ -50,4 +50,9 @@
   double Tmin, Tmax, Tmean, Trange;
 
+  memset (&fit,    0, sizeof(fit));
+  memset (&fitAve, 0, sizeof(fitAve));
+  memset (&fitPM,  0, sizeof(fitPM));
+  memset (&fitPAR, 0, sizeof(fitPAR));
+  
   initObjectData (catalog, Ncatalog);
 
Index: /trunk/Ohana/src/relastro/src/plotstuff.c
===================================================================
--- /trunk/Ohana/src/relastro/src/plotstuff.c	(revision 27587)
+++ /trunk/Ohana/src/relastro/src/plotstuff.c	(revision 27588)
@@ -125,5 +125,5 @@
   if (PLOTDELAY > 500000) {
     fprintf (stdout, "press return\n"); 
-    fscanf (stdin, "%*c");
+    if (fscanf (stdin, "%*c") != 0) fprintf (stderr, "\n");
   } else {
     usleep (PLOTDELAY);
