/*
	curredit.c

	reads a lat/lon fix file and fixes lat/lon in '.cur' files


h1071x01.cur  Lon    -69.816666
a1071x01.cur  Lon    -69.816666
a0107p01.cur  Lon    -69.826668  
h0107p01.cur  Lon    -69.826668  
a0107t01.cur  Lon    -69.816666  
h0107t01.cur  Lon    -69.816666  
a1861r01.cur   lat 40.515778 lon -70.208000
h1861r01.cur  lat 40.515778 lon -70.208000
a1891x01.cur  Lon    -69.024223  
h1891x01.cur  Lon    -69.024223  
h2083x01.cur  Lat    40.541111
A4400401.cur  lon -70.0000000
A4400402.cur  lon -70.0000000
A4400403.cur  lon -70.0000000
A4400404.cur  lon -70.0000000
A4400405.cur  lon -70.0000000
A4400406.cur  lon -70.0000000
A4400407.cur  lon -70.0000000
ABOST701.cur  lat 42.366666667    lon -71.0166666666667
AEB07-01.cur  Lon    -70.0
AEB34701.cur  Lon    -73.099998  
AEB34702.cur  Lon    -73.099998  
AEB34703.cur  Lon    -73.099998  
AEB34704.cur  Lon    -73.099998  
AEB34705.cur  Lon    -73.099998  
AEB34706.cur  Lon    -73.099998  
AEB34707.cur  Lon    -73.099998  
AGLOU101.cur  lat 42.603554 lon -70.690002
ALIGHT01.cur  Lat    42.426888 Lon   -70.800003
ALIGHT02.cur  Lat    42.426888 Lon   -70.800003
ALIGHT03.cur Lat    42.426888 Lon   -70.800003
ALOGAN02.cur  lat 42.36666667 lon -71.01666666667
ALOGAN03.cur  lat 42.36666667 lon -71.01666666667
ALOGAN04.cur   lat 42.36666667 lon -71.01666666667
ALOGAN01.cur  lat 42.36666667 lon -71.01666666667
APTOWN01.cur   Lat    42.085556 Lon   -70.255554

*/

#include <stdio.h>
#include <string.h>

#define NUMDAT 50
#define NUMCOM 10

struct info
{
	int order;
	char name[20];
	char units[20];
	char codes[20];
	float depth;
	char inst[20];
	float min,max;
};
struct time
{
	int da,mo,yr,hr,min,sec;
};
struct header
{
	char id[38];
	struct time start_time,stop_time;
	long cycles,num_days;
	char expt[32];
	char date_created[32];
	struct time time_create;
	float water_depth;					/* meters */
	float mag_var;							/* degrees */
	float lat,lon;							/* degrees */
	float sampling_interval;   		/* seconds */
	struct info Data[NUMDAT];
	char comment[NUMCOM][80];
	int num_var;
	int order[NUMDAT];
	char dummy[28];
}Hdr;


main(argc,argv)

int argc;
char *argv[];

{
	int i,j,k;
	char string[100],str0[50],str1[50],str2[50];
	double deg1,deg2;	
	int num;
	FILE *fpfix,*fpdat;

	if(argc<2)
	{
		printf("curredit <filename.ext>\n\n");
		exit(0);
	}
	fpfix=fopen(argv[1],"rt");
	if(!fpfix)
	{
		printf("Could not open '%s' to read.\n\n",argv[1]);
		exit(0);
	}
	while(fgets(string,100,fpfix))
	{
		num=sscanf(string,"%s%s%lf%s%lf",str0,str1,&deg1,str2,&deg2);
		fpdat=fopen(str0,"r+b");
		if(fpdat)
		{
			fread((char *)&Hdr,sizeof(struct header),1,fpdat);
			if(num>=3)
			{
				if(strcmpi(str1,"lat")==0)
				{
					printf("lat corrected from %f to ",Hdr.lat);
					Hdr.lat=deg1;
					printf("%f\n",Hdr.lat);
				}
				else if(strcmpi(str1,"lon")==0)
				{
					printf("lon corrected from %f to ",Hdr.lon);
					Hdr.lon=deg1;
					printf("%f\n",Hdr.lon);
				}
			}
			if(num>3)
			{
				if(strcmpi(str2,"lat")==0)
				{
					printf("lat corrected from %f to ",Hdr.lat);
					Hdr.lat=deg2;
					printf("%f\n",Hdr.lat);
				}
				else if(strcmpi(str2,"lon")==0)
				{
					printf("lon corrected from %f to ",Hdr.lon);
					Hdr.lon=deg2;
					printf("%f\n",Hdr.lon);
				}
			}
			rewind(fpdat);
			fwrite((char *)&Hdr,sizeof(struct header),1,fpdat);
			fclose(fpdat);
			getch();
		}
		else
			printf(" -----------  Could not open '%s' data file\n",str0);
	}
}                                                                                                                          