#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;
char head[72][80],b[80],f1[60];
float a[n2][n1];
main(int ac,char **av)
{
  int i,j,k;
  if(ac<2){ printf("\n\t** recover ccd_1 2049-2756,571 bad line ***\n");
            printf("\n\tUsage bad1_571 p5471_0102_1[.fit]\n\n");
            exit(0);
  }
  strcpy(f1,av[1]); k=nindex(f1,"."); if(k<0)strcat(f1,".fit");
  k=nindex(f1,".");
  if(f1[k-1]!='1'){ printf("only CCD1 works\n"); exit(0); }
  fp=fopen(f1,"rb"); if(fp==0){ printf("input file not found!\n"); exit(0); }
  fread(head,72,80,fp);
  sscanf(&head[3][24],"%d",&j); sscanf(&head[4][24],"%d",&k);
  if(j!=n1 || k!=n2){ printf("not a 4096*4032 file\n"); exit(0); }
  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("OK!\n");
}

