#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void main( int argc, char *argv[ ], char *envp[ ] )
{
	FILE *OUTstream;
	FILE *INstream;
	char LineRead[4096];
	char LineWrite[4096];
	char Temp[200];
	int len=0;
	int i=0;

	//open input file
	if( (INstream  = fopen(argv[1], "r" )) == NULL )
	{
		printf( "Error opening input file\n" );
		exit(1);
	}
	
	//open output file
	if( (OUTstream  = fopen(argv[2], "w" )) == NULL )
	{
		printf( "Error opening output file\n" );
		exit(1);
	}
	
	//parse file
	while (fgets(LineRead,sizeof(LineRead),INstream))
	{	
		if ((strcmp(LineRead,"\n")) != 0)
		{
			//determin string length
			len=strlen(LineRead);
			strncpy(Temp,LineRead,len - 1);

			//construct virus name string
			sprintf(LineWrite,":%s%s",Temp,",");

			//print to outfut file
			fprintf(OUTstream,"%s%s",LineWrite,"\n");
			
			//zero out temp space
			memset(Temp,'\0',sizeof(Temp));
			while (fgets(LineRead,sizeof(LineRead),INstream))
			{
				len=strlen(LineRead);
				if (len > 1)
				{
					//initialize the beginning of the virus signature string
					strcpy(Temp,"\"\\x");
					while (i < len)
					{
						//append hex byte address
						if (strncmp(&LineRead[i]," ",1) == 0)
						{
							strncat(Temp,"\\x",2);
						}
						else
						{
							if (strncmp(&LineRead[i],"\n",1) != 0)
								strncat(Temp,&LineRead[i],1);
						}
						i++;
					}
					//end the virus signature string
					strncat(Temp,"\"#",2);

					//print to outfut file
					fprintf(OUTstream,"%s%s",Temp,"\n");
					fprintf(OUTstream,"%s","\n");

					break;
				}
			}
	
			i=0;
		}
		memset(LineRead,'\0',sizeof(LineRead));
		memset(Temp,'\0',sizeof(Temp));
	}

	//close all streams
	fclose(INstream);
	fclose(OUTstream);
}

