#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);
}
}