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


main(int argc, char *argv[])
{

FILE *in;
FILE *out;

char string[81];
char filename[22];
char dir[12];
char cmpdir[12];
char size[5];
char desc[50];
char dir1[6];
char dir2[6];
char drive[12];
char path1[12];
char path2[12];
char ext[12];

int count = 0;
int rec = 0;
int node = 0;
int recnode = 0;

printf("[1m[31mAMINET2AG - Version 1.1a[21m\n");
printf("Copyright (c) 1993,94 Andre Lackmann\n[0m");

if(argc <3)
{
	printf("AMINET2AG will convert the 'INDEX' file listings\n");
	printf("that the Aminet sites generate, into AmigaGuide format[0m\n\n");
	printf("[1mIMPORTANT: If you use this program regularly, please send EMAIL to:\n");
	printf("CompuServe:[0m 76711,710\n[1mInternet:[0m Andre_Lackmann@drift.apana.org.au\n");
	printf("[1mCONINENTAL DRIFT BBS:[0m +64 2 949 4256, upload a file ;D\n");
	printf("[1mFIDO:[0m 3:714/911\n\n");
	printf("[1mUsage:[0m %s <sourcefile> <destinationfile>\n\n",argv[0]);
	exit(1);
}

if ((in = fopen(argv[1],"rb")) == 0)
{
	printf("*** ERROR OPENING SOURCEFILE: Can't find %s\n",argv[1]);
	exit(1);
}

if ((out = fopen(argv[2],"wb")) == 0)
{
	printf("*** ERROR OPENING DESTINATION FILE: Can't create %s\n",argv[2]);
	exit(1);
}


fprintf(out,"@database %cAMINET%c\n",'"','"');

/* Pass One */
printf("\n[1mPass One[0m\n");
rewind(in);
fgets(filename,20,in);
while(filename[0] == '|')
{
	fgets(string,60,in);
	fgets(filename,21,in);
}

fgets(dir,11,in);
fgets(size,4,in);
fgets(desc,49,in);

fprintf(out,"@NODE Main %cAmiNet Root Directory%c\n",'"','"');

do{

	stptok(dir,dir1,sizeof(dir1),"/");
	if(stricmp(cmpdir,dir1))
	{
	fprintf(out,"@{%c  %5s  %c link %s}\n",'"',dir1,'"',strupr(dir1));
	strcpy(cmpdir, dir1);
	}
	fgets(filename,21,in);	
	fgets(dir,11,in);
	fgets(size,4,in);
	fgets(desc,49,in);
	printf("Found Directory: %s  \r",cmpdir);
	
} while(!feof(in));

fprintf(out,"@ENDNODE\n\n");

/* Pass Two		*/
printf("\n\n[1mPass Two[0m\n");
rewind(in);
fgets(filename,20,in);
while(filename[0] == '|')
{
	fgets(string,60,in);
	fgets(filename,21,in);
}

fgets(dir,11,in);
fgets(size,4,in);
fgets(desc,49,in);
count = 0;

do{
	stptok(dir,dir1,sizeof(dir1),"/");
	strsfn(dir,drive,path1,path2,ext);
	if(stricmp(cmpdir,dir))
	{
		if(stricmp(dir1,dir2))
		{
			if(count != 0)
				fprintf(out,"@ENDNODE\n\n");
			fprintf(out,"@NODE %s %c%s Directory%c\n\n",strupr(dir1),'"',dir1,'"');
			strcpy(dir2, dir1);
		}
		fprintf(out,"@{%c  %s  %c link %s-%s}\n",'"',dir,'"',strupr(path1),strupr(path2));
		strcpy(cmpdir,dir);
	}
	fgets(filename,21,in);
	fgets(dir,11,in);
	fgets(size,4,in);
	fgets(desc,49,in);
	count = 1;
	printf("Working on Node: %s  \n",path1);
	printf("Found Sub-Dir: %s  M\r",cmpdir);
	

} while(!feof(in));
fprintf(out,"@ENDNODE\n\n");




/* Pass three		*/
printf("\n\n\n[1mPass Three[0m\n");
rewind(in);
fgets(filename,20,in);
while(filename[0] == '|')
{
	fgets(string,60,in);
	fgets(filename,21,in);
}

fgets(dir,11,in);
fgets(size,4,in);
fgets(desc,49,in);
count = 0;

do
{

	if(stricmp(cmpdir,dir))
	{
		strsfn(dir,drive,path1,path2,ext);
		if(count != 0)
		{
			fprintf(out,"Total Files: %d\n",recnode);
			fprintf(out,"@ENDNODE\n\n");
		}
		fprintf(out,"@NODE %s-%s %c%s%s%c\n",strupr(path1),strupr(path2),'"',"pub/aminet/",dir,'"');
		strcpy(cmpdir,dir);
		node++;
		recnode = 0;
	}
	fprintf(out,"%s%s%s%s",filename,dir,size,desc);
	fgets(filename,21,in);	
	fgets(dir,11,in);
	fgets(size,4,in);
	fgets(desc,49,in);
	rec++;
	recnode++;
	printf("Directory: %s #%d\nFiles - This node: %d  TOTAL: %d   M\r",cmpdir,node,recnode,rec);
	count = 1;

} while(!feof(in));
fprintf(out,"@ENDNODE\n\n");

fclose(in);
fclose(out);
printf("\n\n\nAll Done!\n");
exit(1);
}