#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main(int argc,char *argv[])
{
 FILE *fp;
 char buf[512],buf0[512],dmy[16],ddstr[16];
 double hh,mm,ss,dd,dm,ds,ra0,dec0,ra,dec,dr,drmin;

 if(argc != 8){
   printf("Usage: %s catalog hh mm ss dd mm ss\n",argv[0]);
   exit(0);
 }

 if((fp = fopen(argv[1],"r")) == NULL){
   printf("Cannot open %s\n",argv[1]);
   exit(0);
 }

 sscanf(argv[2],"%lf",&hh);
 sscanf(argv[3],"%lf",&mm);
 sscanf(argv[4],"%lf",&ss);
 sscanf(argv[5],"%lf",&dd);
 sscanf(argv[6],"%lf",&dm);
 sscanf(argv[7],"%lf",&ds);

 if(strncmp(argv[5],"-",1)==0) dec0=dd-dm/60-ds/3600;
 else dec0=dd+dm/60+ds/3600;
 ra0=(hh+mm/60+ss/3600)*15*cos(dec0/180*M_PI);
 printf("RA:%g(deg)  DEC:%g(deg)\n",ra0,dec0);

 drmin=3600;
 while(!feof(fp)){
   if(fgets(buf,sizeof(buf),fp)==NULL) break;
   if(strncmp(buf,"#",1)==0) continue;
   sscanf(buf,"%s %s %lf %lf %lf %s %lf %lf",dmy,dmy,&hh,&mm,&ss,ddstr,&dm,&ds);
   sscanf(ddstr,"%lf",&dd);
   if(strncmp(ddstr,"-",1)==0) dec=dd-dm/60-ds/3600;
   else dec=dd+dm/60+ds/3600;
   ra=(hh+mm/60+ss/3600)*15*cos(dec0/180*M_PI);
   dr=sqrt((ra-ra0)*(ra-ra0)+(dec-dec0)*(dec-dec0))*3600;
   if(drmin>dr){
     drmin=dr;
     strcpy(buf0,buf);
   }
   //printf("RA:%g(deg)  DEC:%g(deg)  dr:%g  drmin:%g\n",ra0,dec0,dr,drmin);
 }
 printf("drmin=%g(arcsec)\n",drmin);
 printf("%s",buf0);
 fclose(fp);
 return(0);
}
