#include <stdio.h>
FILE *fp,*fp2,*fp3;
char a[60],b[60],c[80],g[4];
char head[72][80];
main(int ac,char **av)
{
  if(ac<2){
  printf("\n\t\t ******** 0key (max 348 fits)*********\n");
  printf("\n\t  raw_bias_data--> minus overscan--> bias_?.fit (median_bias)\n");
  printf("\n\t Usage: 0key !          110118\n\n");
  printf(" 1. automatic processing pipeline1 job, not answer any question.\n"); 
  printf(" 2. create a new directory, empty.\n");
  printf(" 3. copy raw_bias_files  (which you want using) to this directory\n");
  printf(" 4. in this directory, type command: 0key !\n");
  printf(" 5. check rawfile_name, 1st must be 'd', if not, auto change it\n");
  printf("    if in middle of filename appear char_dot, change to slash _\n");
  printf(" 6. auto do d4,e4,b4 ( of course, d4,e4,b4 in command_path)\n");
  printf(" 7. bias_?.fit is results\n");
  printf("    others are middle_processing file, you can have a look & delete\n\n\n");
  exit(0);
  }
// 5. check rawfile_name, 1st must be 'd', if not, auto change it  
  job5();
// 6. auto do d4,e4,b4
  job_d4(); 
  job_e4(); 
  job_b4(); 
  printf("\n\t****** OK ! ********\n");
} 

job_b4()
{
  int i,j,k,l;
  strcpy(g,"?.b");
  for(i=1;i<=4;i++){                // ??
    g[0]=i+48;
    strcpy(c,"ls e*_?.fit >1.1");
    for(j=0;j<strlen(c);j++)if(c[j]=='?')c[j]=i+48;
    system(c);
    fp=fopen("1.1","r");
    fp3=fopen(g,"w");
l10:
    fgets(a,60,fp); if(feof(fp))goto l20;
    k=strlen(a)-1; a[k]=0;
    fp2=fopen(a,"rb"); fread(head,70,80,fp2); fclose(fp2);
    k=indexpos(head,"OBJECT  ",72);
    l=0;
    for(j=11;j<27;j++)if((head[k][j]&0x5f)=='F'){
      if((head[k][j+1]&0x5f)=='L' && (head[k][j+2]&0x5f)=='A')l=1; }
    if(l==0)for(j=11;j<27;j++)if((head[k][j]&0x5f)=='B'){
      if((head[k][j+1]&0x5f)=='I' && (head[k][j+2]&0x5f)=='A')l=2; }
    if(l==0)for(j=11;j<27;j++)if((head[k][j]&0x5f)=='F'){
      if((head[k][j+1]&0x5f)=='O' && (head[k][j+2]&0x5f)=='C')l=3; }
    if(l==0)for(j=11;j<27;j++)if((head[k][j]&0x5f)=='Z'){
      if((head[k][j+1]&0x5f)=='E' && (head[k][j+2]&0x5f)=='R')l=4; }
    if(l==2){fputs(a,fp3); fputc(10,fp3);}
    goto l10;
l20:
    fclose(fp);  fclose(fp3);
  }
  for(i=1;i<=4;i++){     
    g[0]=i+48;
    sprintf(c,"b4 %s bias_%d.fit\n",g,i);
    system(c);
  }
}

job_e4()
{
  system("ls d*.fit >1.1");
  fp=fopen("1.1","r");
l10:
  fgets(a,60,fp); if(feof(fp))goto l20;
  a[strlen(a)-1]=0;
  sprintf(c,"e4 %s",a);
  system(c); 
  goto l10;
l20:
  fclose(fp);
}

job_d4()
{
  system("ls *.fits >1.1");
  fp=fopen("1.1","r");
l10:
  fgets(a,60,fp); if(feof(fp))goto l20;
  a[strlen(a)-1]=0;
  sprintf(c,"d4 %s",a);
  system(c); 
  goto l10;
l20:
  fclose(fp);
}

job5()
{
  int i,j,k;
  system("ls *.fits >1.1");
  fp=fopen("1.1","r");
l10:
  fgets(a,60,fp); if(feof(fp))goto l20;
  k=0; j=strlen(a)-1; a[j]=0; strcpy(b,a);
  if(a[0]!='d'){ k=1; b[0]='d'; }
  for(i=0;i<j-5;i++)if(b[i]=='.'){ k=1; b[i]='_'; }
  if(k){
    sprintf(c,"mv %s %s",a,b);
    system(c); printf("%s\n",c);
  }
  goto l10;
l20:
  fclose(fp);
}
