Index: /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_compress_M.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_compress_M.c	(revision 33187)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_compress_M.c	(revision 33188)
@@ -424,8 +424,9 @@
 int gfits_byteswap_zdata (char *zdata, int Nzdata, int pixsize) {
 
+# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
+
 # ifdef BYTE_SWAP
 
   int i;
-  char tmp;
 
   switch (pixsize) {
@@ -435,7 +436,5 @@
     case 2:
       for (i = 0; i < 2*Nzdata; i+=2) {
-	tmp = zdata[i];
-	zdata[i] = zdata[i+1];
-	zdata[i+1] = tmp;
+	DOSWAP (zdata[i+0], zdata[i+1]);
       }
       break;
@@ -443,10 +442,6 @@
     case 4:
       for (i = 0; i < 4*Nzdata; i+=4) {
-	tmp = zdata[i+1];
-	zdata[i+1] = zdata[i+2];
-	zdata[i+2] = tmp;
-	tmp = zdata[i];
-	zdata[i] = zdata[i+3];
-	zdata[i+3] = tmp;
+	DOSWAP (zdata[i+0], zdata[i+3]);
+	DOSWAP (zdata[i+1], zdata[i+2]);
       }
       break;
@@ -454,16 +449,8 @@
     case 8:
       for (i = 0; i < 8*Nzdata; i+=8) {
-	tmp = zdata[i+0];
-	zdata[i+0] = zdata[i+7];
-	zdata[i+7] = tmp;
-	tmp = zdata[i+1];
-	zdata[i+1] = zdata[i+6];
-	zdata[i+6] = tmp;
-	tmp = zdata[i+2];
-	zdata[i+2] = zdata[i+5];
-	zdata[i+5] = tmp;
-	tmp = zdata[i+3];
-	zdata[i+3] = zdata[i+4];
-	zdata[i+4] = tmp;
+	DOSWAP (zdata[i+0], zdata[i+7]);
+	DOSWAP (zdata[i+1], zdata[i+6]);
+	DOSWAP (zdata[i+2], zdata[i+5]);
+	DOSWAP (zdata[i+3], zdata[i+4]);
       }
       break;
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_load_M.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_load_M.c	(revision 33187)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_load_M.c	(revision 33188)
@@ -38,8 +38,10 @@
   }
 
+# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
+
 # ifdef BYTE_SWAP  
  {
   int perpix;
-  unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
+  unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7;
 
   perpix = abs(header[0].bitpix) / 8;
@@ -55,33 +57,19 @@
     if (perpix == 2) {
       for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
-	tmp = *byte0;
-	*byte0 = *byte1;
-	*byte1 = tmp;
+	DOSWAP(*byte0, *byte1);
       }
     }
     if (perpix == 4) {
       for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
-	tmp = *byte0;
-	*byte0 = *byte3;
-	*byte3 = tmp;
-	tmp = *byte1;
-	*byte1 = *byte2;
-	*byte2 = tmp;
+	DOSWAP (*byte0, *byte3);
+	DOSWAP (*byte1, *byte2);
       }
     }
     if (perpix == 8) {
       for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
-	tmp = *byte0;
-	*byte0 = *byte7;
-	*byte7 = tmp;
-	tmp = *byte1;
-	*byte1 = *byte6;
-	*byte6 = tmp;
-	tmp = *byte1;
-	*byte2 = *byte5;
-	*byte5 = tmp;
-	tmp = *byte1;
-	*byte3 = *byte4;
-	*byte4 = tmp;
+	DOSWAP (*byte0, *byte7);
+	DOSWAP (*byte1, *byte6);
+	DOSWAP (*byte2, *byte5);
+	DOSWAP (*byte3, *byte4);
       }
     }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_portion.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_portion.c	(revision 33187)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_portion.c	(revision 33188)
@@ -52,10 +52,12 @@
   fclose (f);
 
+# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
+
 # ifdef BYTE_SWAP  
   {
     off_t i;
     int perpix;
-    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, ctmp;
-
+    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7;
+    
     perpix = abs(header.bitpix) / 8;
     if (perpix > 1) {
@@ -70,33 +72,19 @@
       if (perpix == 2) {
 	for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
-	  ctmp = *byte0;
-	  *byte0 = *byte1;
-	  *byte1 = ctmp;
+	  DOSWAP(*byte0, *byte1);
 	}
       }
       if (perpix == 4) {
 	for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
-	  ctmp = *byte0;
-	  *byte0 = *byte3;
-	  *byte3 = ctmp;
-	  ctmp = *byte1;
-	  *byte1 = *byte2;
-	  *byte2 = ctmp;
+	  DOSWAP (*byte0, *byte3);
+	  DOSWAP (*byte1, *byte2);
 	}
       }
       if (perpix == 8) {
 	for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
-	  ctmp = *byte0;
-	  *byte0 = *byte7;
-	  *byte7 = ctmp;
-	  ctmp = *byte1;
-	  *byte1 = *byte6;
-	  *byte6 = ctmp;
-	  ctmp = *byte1;
-	  *byte2 = *byte5;
-	  *byte5 = ctmp;
-	  ctmp = *byte1;
-	  *byte3 = *byte4;
-	  *byte4 = ctmp;
+	  DOSWAP (*byte0, *byte7);
+	  DOSWAP (*byte1, *byte6);
+	  DOSWAP (*byte2, *byte5);
+	  DOSWAP (*byte3, *byte4);
 	}
       }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_segment.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_segment.c	(revision 33187)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_read_segment.c	(revision 33188)
@@ -95,7 +95,9 @@
   matrix[0].datasize = Nbytes;
 
+# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
+
 # ifdef BYTE_SWAP  
  {
-  unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, ctmp;
+  unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7;
   int perpix;
 
@@ -112,33 +114,19 @@
     if (perpix == 2) {
       for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
-	ctmp = *byte0;
-	*byte0 = *byte1;
-	*byte1 = ctmp;
+	DOSWAP(*byte0, *byte1);
       }
     }
     if (perpix == 4) {
       for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
-	ctmp = *byte0;
-	*byte0 = *byte3;
-	*byte3 = ctmp;
-	ctmp = *byte1;
-	*byte1 = *byte2;
-	*byte2 = ctmp;
+	DOSWAP (*byte0, *byte3);
+	DOSWAP (*byte1, *byte2);
       }
     }
     if (perpix == 8) {
       for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
-	ctmp = *byte0;
-	*byte0 = *byte7;
-	*byte7 = ctmp;
-	ctmp = *byte1;
-	*byte1 = *byte6;
-	*byte6 = ctmp;
-	ctmp = *byte1;
-	*byte2 = *byte5;
-	*byte5 = ctmp;
-	ctmp = *byte1;
-	*byte3 = *byte4;
-	*byte4 = ctmp;
+	DOSWAP (*byte0, *byte7);
+	DOSWAP (*byte1, *byte6);
+	DOSWAP (*byte2, *byte5);
+	DOSWAP (*byte3, *byte4);
       }
     }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_write_M.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_write_M.c	(revision 33187)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libfits/matrix/F_write_M.c	(revision 33188)
@@ -36,9 +36,11 @@
     nbytes = FT_RECORD_SIZE * ((off_t) (matrix[0].datasize / FT_RECORD_SIZE));
 
+# define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; }
+
   /* this is a bit cumbersome: swap all words, write out file, then swap back... */
 # ifdef BYTE_SWAP  
   { 
     off_t i;
-    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
+    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7;
     int perpix;
 
@@ -55,33 +57,19 @@
       if (perpix == 2) {
 	for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
-	  tmp = *byte0;
-	  *byte0 = *byte1;
-	  *byte1 = tmp;
+	  DOSWAP(*byte0, *byte1);
 	}
       }
       if (perpix == 4) {
 	for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
-	  tmp = *byte0;
-	  *byte0 = *byte3;
-	  *byte3 = tmp;
-	  tmp = *byte1;
-	  *byte1 = *byte2;
-	  *byte2 = tmp;
+	  DOSWAP (*byte0, *byte3);
+	  DOSWAP (*byte1, *byte2);
 	}
       }
       if (perpix == 8) {
 	for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
-	  tmp = *byte0;
-	  *byte0 = *byte7;
-	  *byte7 = tmp;
-	  tmp = *byte1;
-	  *byte1 = *byte6;
-	  *byte6 = tmp;
-	  tmp = *byte1;
-	  *byte2 = *byte5;
-	  *byte5 = tmp;
-	  tmp = *byte1;
-	  *byte3 = *byte4;
-	  *byte4 = tmp;
+	  DOSWAP (*byte0, *byte7);
+	  DOSWAP (*byte1, *byte6);
+	  DOSWAP (*byte2, *byte5);
+	  DOSWAP (*byte3, *byte4);
 	}
       }
@@ -98,5 +86,5 @@
   {
     off_t i;
-    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp;
+    unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7;
     int perpix;
 
@@ -113,33 +101,19 @@
       if (perpix == 2) {
 	for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) {
-	  tmp = *byte0;
-	  *byte0 = *byte1;
-	  *byte1 = tmp;
+	  DOSWAP(*byte0, *byte1);
 	}
       }
       if (perpix == 4) {
 	for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) {
-	  tmp = *byte0;
-	  *byte0 = *byte3;
-	  *byte3 = tmp;
-	  tmp = *byte1;
-	  *byte1 = *byte2;
-	  *byte2 = tmp;
+	  DOSWAP (*byte0, *byte3);
+	  DOSWAP (*byte1, *byte2);
 	}
       }
       if (perpix == 8) {
 	for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) {
-	  tmp = *byte0;
-	  *byte0 = *byte7;
-	  *byte7 = tmp;
-	  tmp = *byte1;
-	  *byte1 = *byte6;
-	  *byte6 = tmp;
-	  tmp = *byte1;
-	  *byte2 = *byte5;
-	  *byte5 = tmp;
-	  tmp = *byte1;
-	  *byte3 = *byte4;
-	  *byte4 = tmp;
+	  DOSWAP (*byte0, *byte7);
+	  DOSWAP (*byte1, *byte6);
+	  DOSWAP (*byte2, *byte5);
+	  DOSWAP (*byte3, *byte4);
 	}
       }
