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

#include "struct.h"

extern char **Messages;
tag msg_Next=0;
tag msg_Limit=0;

extern char *GetName(),*ReadLongString();
extern char LineBuf[];

tag Next_Msg()
{
	if(msg_Next>=msg_Limit-1)
	{
		if(msg_Limit!=0)
		{
			msg_Limit+=100;
			Messages=(char **)
				realloc(Messages,(msg_Limit+1)*sizeof(char *));
			if(Messages==NULL)
			{
				fprintf(stderr,"Panic! No memory!\n");
				exit(1);
			}
		}
		else
		{
			msg_Limit=100;
			Messages=(char **)emalloc(100*sizeof(char *));
		}
	}
	return(msg_Next++);
}
			
LoadMessage(f,d)
FILE *f;
int d;
{
	char *p;
	char *q;
	int n;
	char nmbf[32];
	while(1)
	{
		if(GetLine(f)==NULL)
		{
			ELine();
			log_error("[ERROR]: Unexpected EOF.\n");
			return(1);
		}
		if(*LineBuf=='@')
			return(0);
		p=GetName(LineBuf,nmbf);
		if(p==NULL)
		{
			ELine();
			log_error("[ERROR]: Bad Message '%s'.\n",LineBuf);
			return(1);
		}
		q=ReadLongString(f);
		if(q==NULL)
		{
			ELine();
			log_error("[ERROR]: Message '%s' malformed.\n",nmbf);
			return(1);
		}
		n=Next_Msg();
		Messages[n]=q;
		if(FindName(nmbf,2))
		{
			ELine();
			log_error("[ERROR]: Duplicate Message '%s'.\n",nmbf);
			return(1);
		}
		AddName(nmbf,n,2);
	}
}