/* ver.c  --  set/increment project version */

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

int main(int argc, char **argv)
{
	FILE *f;
	char verstr[32];
	char *name = NULL;
	int ver = 0, rev = 0, newver = -1, newrev = -1, nobump = 0;
	int i, usage = 0;
	
	for (i=1; i<argc; i++)
	{
		if (argv[i][0] == '-')
		{
			switch (argv[i][1])
			{
			case 'v':
				if (argv[i+1])
					newver = atoi(argv[++i]);
				else
					usage = 1;
				break;
			case 'r':
				if (argv[i+1])
					newrev = atoi(argv[++i]);
				else
					usage = 1;
				break;
			case 'f':
				if (argv[i+1])
					name = argv[++i];
				else
					usage = 1;
				break;
			case 'n':
				nobump = 1;
				break;
			default:
				usage = 1;
			}
		}
		else
			usage = 1;
	}
	if (usage)
	{
		fprintf(stderr,"Usage: %s [-n] [-v version] [-r revision] [-f file]\n", argv[0]);
		exit(10);
	}
	
	if (!name)
		name = "VERSION";
	
	if (f=fopen(name,"r"))
	{
		fgets(verstr,32,f);
		sscanf(verstr,"%d.%d",&ver,&rev);
		fclose(f);
	}

	if (newver != -1)
		ver = newver;

	if (newrev != -1)
		rev = newrev;
	else
	if (!nobump)
		rev++;

	if (f=fopen(name,"w"))
	{
		fprintf(f,"%d.%d\n",ver,rev);
		fclose(f);
	}
	else
	{
		fprintf(stderr,"Error creating file %s.\n",name);
		exit(20);
	}
}