Yes, it ends with a $ not end.
here is fread_nation, but to me... I think fread_nation is looking for END at the end?
NATION_DATA *fread_nation(char *file)
{
char filename[256];
FILE *fp = NULL;
NATION_DATA *nation = NULL;
sprintf(filename, "../nations/%s", file);
if((fp = fopen(filename, "r")) == NULL)
{
bug("fread_nation(): cannot open %s for reading", filename);
FCLOSE(fp); /* just in case */
return NULL;
}
/* initalize entry */
CREATE(nation, NATION_DATA, 1);
nation->name = STRALLOC("None");
nation->leader = STRALLOC("None");
nation->fname = STRALLOC("None");
nation->description = STRALLOC("None");
nation->hometown = NULL;
nation->htown_vnum = -1;
nation->vnum = -1;
nation->race = -1;
for( ; ; )
{
bool fMatch = FALSE;
char *word = feof(fp) ? "END" : fread_word(fp);
if(word[0] == '*')
{
fread_to_eol(fp);
break;
}
switch(UPPER(word[0]))
{
case '$':
{
FCLOSE(fp);
return nation;
}
break;
case 'D':
KEY("Description", nation->description, fread_string(fp));
break;
case 'F':
KEY("Filename", nation->fname, fread_string(fp));
break;
case 'H':
KEY("Hometown", nation->htown_vnum, fread_number(fp));
break;
case 'L':
KEY("Leader", nation->leader, fread_string(fp));
break;
case 'N':
KEY("Name", nation->name, fread_string(fp));
break;
case 'R':
KEY("Race", nation->race, fread_number(fp));
break;
case 'V':
KEY("Vnum", nation->vnum, fread_number(fp));
break;
}
if(!fMatch)
bug("fread_nation(): no match for %s", word);
}
FCLOSE(fp);
return NULL;
}
|