Index: /branches/eam_branches/ipp-20140423/Ohana/src/libkapa/src/KiiPicture.c
===================================================================
--- /branches/eam_branches/ipp-20140423/Ohana/src/libkapa/src/KiiPicture.c	(revision 36748)
+++ /branches/eam_branches/ipp-20140423/Ohana/src/libkapa/src/KiiPicture.c	(revision 36749)
@@ -21,5 +21,6 @@
 int KiiNewPicture1D (int fd, KiiImage *image, KapaImageData *data, Coords *coords) {
 
-  int Nwrite, Npix, Ncolors, size;
+  int Ncolors;
+  off_t Nwrite, Npix, size;
   float min, max;
 
@@ -36,5 +37,5 @@
   KiiSendMessage (fd, "%8d %8d", image[0].Nx, image[0].Ny);
   KiiSendMessage (fd, "%f %f %s %s", data[0].zero, data[0].range, data[0].name, data[0].file);
-  KiiSendMessage (fd, "%f %f %d ", min, max, size);
+  KiiSendMessage (fd, "%f %f "OFF_T_FMT" ", min, max, size);
   KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval1, coords[0].crpix1, coords[0].cdelt1, coords[0].pc1_1, coords[0].pc1_2);
   KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval2, coords[0].crpix2, coords[0].cdelt2, coords[0].pc2_1, coords[0].pc2_2);
@@ -42,8 +43,18 @@
 
   /* send the image data */
-  Nwrite = write (fd, image[0].data1d, size);
-  if (Nwrite != size) {
-    fprintf (stderr, "error sending picture to kapa\n");
-    return (FALSE);
+  off_t bytes_left = size;
+  while (bytes_left > 0) {
+    Nwrite = write (fd, image[0].data1d, bytes_left);
+    if (Nwrite == 0) {
+      fprintf (stderr, "unable to send more data to kapa?\n");
+      return FALSE;
+    }
+    if (Nwrite < 0) {
+      if (errno == EAGAIN) continue;
+      if (errno == EWOULDBLOCK) continue;
+      perror ("KiiNewPicture1D:");
+      return FALSE;
+    }
+    bytes_left -= Nwrite;
   }
 
@@ -114,6 +125,6 @@
 int KiiNewPicture2D (int fd, KiiImage *image, KapaImageData *data, Coords *coords) {
 
-  int j;
-  int Nwrite, Nbytes, Npix, Ncolors, size;
+  int Ncolors;
+  off_t j, Nwrite, Nbytes, Npix, size;
   float min, max;
 
@@ -130,5 +141,5 @@
   KiiSendMessage (fd, "%8d %8d", image[0].Nx, image[0].Ny);
   KiiSendMessage (fd, "%f %f %s %s", data[0].zero, data[0].range, data[0].name, data[0].file);
-  KiiSendMessage (fd, "%f %f %d ", min, max, size);
+  KiiSendMessage (fd, "%f %f "OFF_T_FMT" ", min, max, size);
   KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval1, coords[0].crpix1, coords[0].cdelt1, coords[0].pc1_1, coords[0].pc1_2);
   KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval2, coords[0].crpix2, coords[0].cdelt2, coords[0].pc2_1, coords[0].pc2_2);
