#include "ips.h"

int main(int argc, char** argv)
{
	int8_t err;
	char   *ipsName, *inName, *outName;
	struct IPSPatch ips;
	
	if(argc < 3)
	{
		fprintf(stderr, "Error : too few arguments\n"
		                "Usage : %s ipsfile inputrom [outputrom]\n",
		                argv[0]);
		return 0;
	}
	
	ipsName = argv[1];
	inName  = argv[2];
	outName = (argc == 4) ? argv[3] : inName;
		
	err = IPSOpen(&ips, ipsName, inName, outName);
	if(err != IPS_OK)
	{
		fprintf(stderr, "Error : can not open one of the following file\n: %s %s %s\n",
		                ipsName, inName, outName);
		return 0;
	}
	
	while(1)
	{
		err = IPSReadRecord(&ips);
		if(err == IPS_PATCH_END)
		{
			break;
		}
		else if(err != IPS_OK)
		{
			fprintf(stderr, "Error : an unexpected error occured during ips record read\n");
			IPSClose(&ips);
			return 0;
		}
			
		err = IPSProcessRecord (&ips);
		if(err != IPS_OK)
		{
			fprintf(stderr, "Error : an unexpected error occured while processing ips record\n");
			IPSClose(&ips);
			return 0;
		}
	}

	fprintf(stdout, "%s was successfully patched!\n", inName);
	
	IPSClose(&ips);
	return 1;
}

