#include <stdio.h>
#include <string.h>
#include <math.h>
FILE *fp,*fp1;
char a[80],b[80],h[144][80];
double rc,dc,x,y,z,w_de,dra;
double r1,r2,d1,d2;
double pi,cx,cy;
main(int ac, char **av)
{
  int i,j,k,it=0,nf,ip=0;
  char f1[99];
  pi=4.*atan(1.); cx=pi/12.; cy=pi/180.;

  if(ac<2){ printf("\n\t*** search Uband-all-fits for coord or object***\n");
            printf("\n\tUsage: searchfits ra dec search_radius(degree)");
            printf("\n\t       searchfits 00:45 42:15 3.0");
            printf("\n\t          or       0.75 42.25 3.0\n");
            printf("\n\t       search TA11\n\n");
            exit(0); }
  if(ac==2){ it=2; strcpy(f1,av[1]); nf=strlen(f1); }
  if(ac==4){ it=4;
    sprintf(b,"%s %s",av[1],av[2]);
    j=0; for(i=0;i<strlen(b);i++)if(b[i]==':')j=1;
    if(j==0){ sscanf(av[1],"%lf",&rc); sscanf(av[2],"%lf",&dc); }
    else itohd(b,&rc,&dc,&z);
    sscanf(av[3],"%lf",&w_de);
    dra=w_de/cos(dc*cy)/15.;     
    printf("rc,dc,w_de,dra: %lf %lf %lf %lf\n",rc,dc,w_de,dra);
    d1=dc+w_de; d2=dc-w_de;
    if(rc<8)rc+=24;  r1=rc+dra;  r2=rc-dra;   
  }
//  sprintf(a,"ls /line3/uband-data/raw/scuss/*/d*.fits >/tmp/sf.tmp\n");
//  system(a);
  strcpy(b,"ls /line3/uband-data/raw/scuss/*/good/d*.fits >/tmp/sf.tmp");
  system(b);
  fp=fopen("/tmp/sf.tmp","r");
  if(fp==0){ printf("I can not open /tmp/sf.tmp\n"); exit(0); }
l10:
  fgets(a,80,fp); if(feof(fp))goto l20;
  k=strlen(a)-1; a[k]=0;
  fp1=fopen(a,"rb"); fread(h,144,80,fp1); fclose(fp1);
  k=indexpos(h,"EXPTIME ",144);  sscanf(&h[k][10],"%lf",&z);
                                 if(z<50.)goto l10;
  if(it==2){     // object
    k=indexpos(h,"OBJECT  ",144);  for(i=9;i<18;i++)if(h[k][i]>='0')break;
                    for(j=0;j<nf;j++)if(f1[j]!=h[k][j+i])goto l10;
                    j+=i; while(h[k][j++]>='0'); h[k][j]=0;
    printf("%d: %s %s\n",++ip,a,&h[k][i]);
  }
  if(it==4){     // ra,dec,radius
    j=indexpos(h,"RA      ",144);  if(j==144)goto l10;
    k=indexpos(h,"DEC     ",144);  if(k==144)goto l10;
    b[0]=0;
    strncpy(b,&h[j][11],12);
    b[12]=0;
    strncat(b,&h[k][11],12);

    itohd(b,&x,&y,&z);
    if(y>d1 || y<d2)goto l10;
    if(x<8)x+=24.;
    if(x>r1 || x<r2)goto l10;
    k=indexpos(h,"OBJECT  ",144);  for(i=9;i<18;i++)if(h[k][i]>='0')break;
                    j=i++; while(h[k][j++]>='0'); h[k][j]=0;
    printf("%d: %s %s %s\n",++ip,a,&h[k][i],b);
  }
  goto l10;
l20:
  fclose(fp);
}

itohd(a,rc,dc,epoch)
char *a; double *rc,*dc,*epoch;
{
  int i,j,k;
  int i1,i2,g1,g2,g3,p;
  double x3;
  char b[70];
  strcpy(b,a);
  i1=i2=g1=g2=g3=p=0;
  *rc=*dc=*epoch=0.;
  k=strlen(a);
  for(i=0;i<k;i++)if(b[i]<=',')b[i]=32; //allowed comma and below
  for(i=0;i<k;i++)if(b[i]!=32)break;
  if(i!=k)g1=i; else goto l10;
  for(j=g1;j<k;j++)if(b[j]==32)break;
  for(i=j;i<k;i++)if(b[i]!=32)break;
  if(i!=k)g2=i; else goto l10;
  for(j=g2;j<k;j++)if(b[j]==32)break;
  for(i=j;i<k;i++)if(b[i]!=32)break;
  if(i!=k)g3=i;
l10:
  for(i=0;i<k;i++){ if(b[i]==':')b[i]=32; if(b[i]=='-')p=1; }
  if(g2)b[g2-1]=0;
  sscanf(b,"%d %d %lf",&i1,&i2,&x3);
  *rc=i1+i2/60.+x3/3600.;
  if(g2==0)goto l20;
  if(g3)b[g3-1]=0;
  i2=0; x3=0.; sscanf(&b[g2],"%d %d %lf",&i1,&i2,&x3);
  if(i1<0)i1=-i1;
  *dc=i1+i2/60.+x3/3600.;
  if(p)*dc=-*dc;
  if(g3)sscanf(&b[g3],"%lf",epoch);
l20: ;
}
                                                           

