/*
	dlgsort.c

	ds1.bat = cl /AL dlgsort.c getfile

*/
#include <stdio.h>
#include <string.h>
#include "nomouse.h"

#define MAX_NUM 1000
#define S_SIZE 40

struct file_id
{
	char name[S_SIZE];
	long size;
	unsigned date,time;
};
double Lat[MAX_NUM],Lon[MAX_NUM];
char Str[MAX_NUM][2][4];
int Order[MAX_NUM];
extern struct file_id GF_File[];

main()
{
	int i,j,k;
	char string[250],str1[50],str2[50],cr=0xd;
	int num_files,end,hit,val;
	FILE *fp,*fpout;

	fpout=fopen("15min.txt","wt");
	if(!fpout)
	{
		printf("Could not open '15min.txt' to write.\n\n");
		exit(0);
	}
	num_files=load_File("*.");
	printf("there are %d files\n",num_files);
	if(num_files<=0)
		exit(0);
	for(i=0;i<num_files;i++)
	{
		fp=fopen(GF_File[i].name,"rt");
		if(!fp)
		{
			printf("Could not open '%s' to read\n",GF_File[i].name);
			exit(0);
		}
		hit=end=0;
		do
		{
			if(!fgets(string,250,fp))
				end=1;
			if(string[0]=='N'&&string[1]=='W')
			{
				hit=end=1;
				sscanf(string,"%s%lf%lf",str1,Lat+i,Lon+i);
				strcpy(str1,GF_File[i].name);
				strcpy(str2,GF_File[i].name+5);
				str1[3]='\0';
				str2[3]='\0';
				strcpy(Str[i][0],str1);
				strcpy(Str[i][1],str2);
				printf("%4d -- %s %s %11.6lf %11.6lf\n",
					i+1,str1,str2,Lat[i],Lon[i]);
			}
		}while(end==0);
		if(hit==0)
		{
			printf("Could not find NW info.\n\n");
			exit(0);
		}
		fclose(fp);
	}
	for(i=0;i<num_files;i++)
		Order[i]=i;
	do
	{
		hit=0;
		for(i=0;i<num_files-1;i++)
		{
			if(Lat[Order[i]]<Lat[Order[i+1]]||
			  (Lat[Order[i]]==Lat[Order[i+1]]&&
			   Lon[Order[i]]<Lon[Order[i+1]]))
			{
				hit+=1;
				val=Order[i];
				Order[i]=Order[i+1];
				Order[i+1]=val;
			}
		}
		printf("%c%6d   ",cr,hit);
	}while(hit>0);
	for(i=0;i<num_files;i++)
	{
		j=Order[i];
		fprintf(fpout,"%s %s %11.6lf %11.6lf\n",
			Str[j][0],Str[j][1],Lat[j],Lon[j]);
	}
	fclose(fpout);
}


                                                                                                              