/
area/city/
area/crypts/
area/guilds/
area/psuedowild/
area/religion/
data/documents/MPDocs/
data/html/
data/mobprogs/
data/quest/
data/world/
data/world/_utilities/
data/world/images/
design/html/
notes/
player/
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include "merc.h"
#include "interp.h"
#include "recycle.h"
#include "tables.h"
#include "names.h"

#define END_MARKER "END"

/*
 * find_a_name()
 *
 * Opens filename and reads until max is hit, and returns last word
 * read.
 */
char * find_a_name(const char *filename, int max)
{
    FILE * fp;
    int i = number_range(1, max);
    int x = 1;
    char *first;
    
    fclose(fpReserve);
    if ( (fp = fopen(filename, "r") ) == NULL)
    {
        bug( "names.c: find_firstname(): fopen", 0 );
        perror( "names.c" );
    }
    for (;;)
    {
        first = fread_word(fp);
        
        if (x == i)
            return first;
        
        if (first[0] == '$')
            break;
        x++;
    }
    fclose(fp);
    return first;
}

/*
 * count_names()
 *
 * Counts the number of names in a file
 */
int count_names(const char *filename)
{
    FILE * fp;
    int x = 1;
    char *word;
    
    if ( (fp = fopen(filename, "r") ) == NULL)
    {
        bug( "names.c: find_firstname(): fopen", 0 );
        perror( "names.c" );
    }
    
    word = fread_word(fp);

    for (;;)
    {
        word = fread_word(fp);
        
        if (word[0] == '~')
        {
            fclose( fp );
            break;
        }
        x++;
    }

    return x;

}

void cmd_name1(CHAR_DATA * ch, char *argument)
{
    char buf[MSL];
    
    sprintf(buf, "Your name is: %s\n", name_finder(NAME_ORC_WARRIOR));
    stc(buf, ch);
    /*
    int value = number_range(1,40);
    
    sprintf(buf, "Random name: %s", find_a_name("../data/names/orc_first.txt", value));
    stc(buf, ch);

    value = number_range(1, 40);
    sprintf(buf, "%s\n", find_a_name("../data/names/orc_last.txt", value));
    stc(buf, ch);
    
    sprintf(buf, "Lines in file %d\n",
        count_names("../data/names/orc_last.txt"));
    stc(buf, ch);
    */
    return;
}


/*
 * name_finder()
 *
 * Takes argument for type of name, then generates the name.
 */
char * name_finder(int type)
{
    static char name[MSL];
    static char buf[MSL];
    int number;
    static char name1[MSL];
    static char name2[MSL];
    static char name3[MSL];
    
    switch(type)
    {   default:
            sprintf(buf, "No Name. Invalid type");
            break;
        
        case NAME_DROW_FEMALE:
            sprintf(buf, "../data/names/drow_female_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/drow_female_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s", name1, name3);
            break;
        case NAME_DROW_MALE:
            sprintf(buf, "../data/names/drow_male_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/drow_male_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s", name1, name3);
            break;
        
        case NAME_ORC_NORMAL:
            sprintf(buf, "../data/names/orc_normal_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/orc_normal_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/orc_normal_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
        
        case NAME_ORC_WARRIOR:
            sprintf(buf, "../data/names/orc_warrior_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/orc_warrior_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s", name1, name3);
            break;
        
        case NAME_DWARF_CASTE:
            sprintf(buf, "../data/names/dwarf_caste_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/dwarf_caste_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s", name1, name3);
            break;
        
        case NAME_DWARF_NORMAL:
            sprintf(buf, "../data/names/dwarf_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/dwarf_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/dwarf_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
        
        case NAME_HUMAN_MALE:
            sprintf(buf, "../data/names/human_male_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/human_male_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/human_male_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
        
        case NAME_HUMAN_FEMALE:
            sprintf(buf, "../data/names/human_female_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/human_female_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/human_female_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
        
        case NAME_GNOME:
            sprintf(buf, "../data/names/gnome_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/gnome_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/gnome_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
        
        case NAME_GOBLIN:
            sprintf(buf, "../data/names/goblin_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/goblin_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s", name1, name3);
            break;
        
        case NAME_ELVEN_MALE:
            sprintf(buf, "../data/names/elf_male_first.txt");
            number = count_names(buf);
            sprintf(name1, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/elf_male_middle.txt");
            number = count_names(buf);
            sprintf(name2, "%s", find_a_name(buf, number));
    
            sprintf(buf, "../data/names/elf_male_last.txt");
            number = count_names(buf);
            sprintf(name3, "%s", find_a_name(buf, number));
        
            sprintf(name, "%s%s%s", name1, name2, name3);
            break;
    }
    
    return name;
}