#include<cstdio>
#include<cstdlib>
#include<sys/stat.h>
#include<unistd.h>
#include<sys/types.h>
char input_file_name[100],starting_1000bases[1000],last_1000bases[1000];
int genome_start=0;
char *whole_file;
struct stat s1;
void prepare_input_file(void)
{
	int i1,i2,i3;
	whole_file=new char [s1.st_size];
	char *output_file_contents;
	FILE *input_file_ptr,*output_file_ptr;
	input_file_ptr=fopen(input_file_name,"r");
	if(input_file_ptr==NULL)
	{
		printf("cannot open input file\n");
		exit(1);
	}
	output_file_ptr=fopen("circular_genome.sl","w");
	if(output_file_ptr==NULL)
	{
		printf("cannot open file circular_genome.sl to write\n");
		exit(1);
	}
	fread(whole_file,1,s1.st_size,input_file_ptr);
	for(i1=0;i1<s1.st_size;i1++)
	{
		if((whole_file[i1]=='A')||(whole_file[i1]=='T')||(whole_file[i1]=='G')||(whole_file[i1]=='C'))
		{
			if((whole_file[i1+1]=='A')||(whole_file[i1+1]=='T')||(whole_file[i1+1]=='G')||(whole_file[i1+1]=='C'))
			{
				if((whole_file[i1+2]=='A')||(whole_file[i1+2]=='T')||(whole_file[i1+2]=='G')||(whole_file[i1+2]=='C'))
				{
					genome_start=i1;
					printf("genome_start=%d\n",genome_start);
					break;
				}
			}
		}
	}
	for(i1=0,i2=genome_start;i1<1000;i1++,i2++)
	{
		starting_1000bases[i1]=whole_file[i2];
	}
	for(i3=0,i1=s1.st_size-1000;i3<1000;i1++,i3++)
	{
		last_1000bases[i3]=whole_file[i1];
	}
	output_file_contents=new char [2000+s1.st_size-genome_start];
	for(i1=0;i1<1000;i1++)
	{
		output_file_contents[i1]=last_1000bases[i1];
	}
	for(i1=1000,i2=genome_start;i1<1000+s1.st_size-genome_start;i1++,i2++)
	{
		output_file_contents[i1]=whole_file[i2];
	}
	fwrite(output_file_contents,1,s1.st_size,output_file_ptr);
	delete output_file_contents;
	delete whole_file;
	fclose(input_file_ptr);
	fclose(output_file_ptr);
}
void getfileinfo(void)
{
	char *older;
	int input_file_size;
	printf("enter input file name\n");
	gets(input_file_name);
	if (stat(input_file_name, &s1) < 0)
	{
                fprintf(stderr, "cannot stat %s\n",input_file_name);
                exit(1);
	}
	printf("s1.st_mtime = %u\n", s1.st_mtime);
	input_file_size=s1.st_size;
	printf("the size of file 1 is %d kb\n",input_file_size);
}
main(void)
{
	getfileinfo();
	prepare_input_file();
}

