#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

/* This routine reads in each real-valued pixel, checks for garbage values 
   and replaces them with nulls as needed, swaps the bytes, inverts the axes,
   and writes spits them back out for use as a FITS data segment.

   09 November 2006, ACR
*/

main( int argc, char *argv[])

{ union swapspace
    { float r4;
      char  b1[4];
    };


  int   lines,samples;
  int   row,col,row2;
  float img[1024][1022];
  union swapspace pixel;
  char  hold;

  /* Initialize: */

  lines = 1022;
  samples = 1024;

  for (row=0; row<lines; row++)
    { for (col=0; col<samples; col++)
        { fread((void *)&(pixel.r4),4,1,stdin);

/*      if (pixel.r4 < -10.0)
            { pixel.r4 = 0.0; }
          else
*/           {hold = pixel.b1[0];
            pixel.b1[0] = pixel.b1[3];
            pixel.b1[3] = hold;
            hold = pixel.b1[1];
            pixel.b1[1] = pixel.b1[2];
            pixel.b1[2] = hold;
	   }

          row2 = samples-row-1;  

          img[row2][col] = pixel.r4;

         if (img[row2][col] < -10) {img[row2][col] = 0.0;} 
        }
    }

  for (col=0; col<samples; col++)
    { for (row=0; row<lines; row++)
        { fwrite((void *)&(img[col][row]),4,1,stdout); }
    }

  exit(0);
}