#include <stdio.h>
#define n1  4096
#define n2  4032
#define n11 2049          // badpixel start
#define n12 2756          // badpixel end
#define n20 571           // badpixel line_row
FILE *fp,*fp1;
char head[72][80],b[80],f1[60];
float a[n2][n1];
main(int ac,char **av)
{
  int i,j,k,ip=0;
  if(ac<2){ printf("\n\t** recover ccd_1 2049-2756,571 bad line ***\n");
            printf("\n\tUsage pad1_571 !\n\n");
            exit(0);
  }
  system("ls p*_1.fit >pad1_571.tmp");
  fp1=fopen("pad1_571.tmp","r");
l10:
  fgets(f1,60,fp1);  if(feof(fp1))goto l20; 
  k=strlen(f1); f1[k-1]=0;
  ip++; fp=fopen(f1,"rb"); fread(head,72,80,fp);
  sscanf(&head[3][24],"%d",&j); sscanf(&head[4][24],"%d",&k);
  if(j!=n1 || k!=n2){
    fclose(fp); printf("%3d: %s not 4096*4032 file\n",ip,f1); goto l10;
  }
  fread(a,n1*n2,4,fp); fclose(fp); swap4(a,n1*n2*4);
  k=n20-1; for(i=n11-1;i<n12;i++)a[k][i]=(a[k-1][i]+a[k+1][i])*0.5;
  fp=fopen("bad1_571.fit","wb");
  fwrite(head,72,80,fp); swap4(a,n1*n2*4); fwrite(a,n1*n2,4,fp); fclose(fp);
  sprintf(b,"mv bad1_571.fit %s",f1);
  system(b);  
  printf("%3d: %s OK!\n",ip,f1);
  goto l10;
l20:
  fclose(fp1);
  system("rm pad1_571.tmp");
}

