
/* Program for random Names */
/* (C)Copyright 1988 by Lars Thuring */

/* May be freely distributed and used for any purpose as long as
   the Copyright notice is left unchanged. */

/* 880620 V1.0  First; names ported from Metric 8's (CP/M).
                About 10 % of the names are from Travesty. */
/* 880911 V1.1  bugs removed. */

/* To do: replace the RANDOM function */


#include <exec/types.h>
#include "MakeName.h"

#define GIRLS (sizeof(Girls)/sizeof(UBYTE *))
#define BOYS  (sizeof(Boys)/sizeof(UBYTE *))
#define LASTS (sizeof(Last)/sizeof(UBYTE *))

#define RANDOM (USHORT) (emaNdesUtoN += 121 )&511
int emaNdesUtoN = 17;                          /* A not so random number */

extern UBYTE *stpcpy();

int MakeName(result, func, sex)     /* What this is */
UBYTE *result;                      /* Where to put result */
USHORT func,                        /* What is wanted by caller */
       sex;                         /* */
   {
static UBYTE *Girls[] =
   {
   "Acie",
   "Adele",
   "Adeleide",
   "Adelila",
   "Adina",
   "Afton",
   "Aftonia",
   "Agnes",
   "Aina",
   "Alexandra",
   "Alice",
   "Alireza",
   "Amanda",
   "Amii",
   "Amy",
   "Andromeda",
   "Angela",
   "Angelica",
   "Anirul",
   "Ann",
   "Annabel",
   "Anne",
   "Anneka",
   "Annie",
   "Antonia",
   "Arlen",
   "Arlene",
   "Asa",
   "Astra",
   "Athana",
   "Babis",
   "Barbara",
   "Barbi",
   "Beatrice",
   "Beatricia",
   "Belinda",
   "Bertha",
   "Beth",
   "Betty",
   "Billie",
   "Bim",
   "Bitte",
   "Bodica",
   "Bodil",
   "Boel",
   "Brenda",
   "Briella",
   "Brigitte",
   "Bunnie",
   "Caiza",
   "Cajsa",
   "Caria",
   "Carisa",
   "Carla",
   "Carmen",
   "Cathea",
   "Carole",
   "Caroline",
   "Carolita",
   "Cat",
   "Catha",
   "Cathea",
   "Catherine",
   "Cathy",
   "Cecilia",
   "Chao",
   "Charlotte",
   "Charyn",
   "Cherie",
   "Cherry",
   "Cheryl",
   "Chrebelia",
   "Christine",
   "Chryssie",
   "Chrystle",
   "Cina",
   "Cinderella",
   "Cindy",
   "Connie",
   "Constanzia",
   "Cvilin",
   "Daisie",
   "Dana",
   "Danuta",
   "Dar",
   "Dawn",
   "Deborah",
   "Debra",
   "Dee",
   "Delicath",
   "Delila",
   "Denise",
   "Desire",
   "Diana",
   "Dionne",
   "Dionneka",
   "Disa",
   "Dobora",
   "Dollie",
   "Donna",
   "Dora",
   "Dorace",
   "Doreen",
   "Doreena",
   "Doris",
   "Dorothea",
   "Dorothy",
   "Eilen",
   "Elica",
   "Elin",
   "Elisabeth",
   "Elisha",
   "Elissa",
   "Eliza",
   "Ellen",
   "Ellie",
   "Elsie",
   "Emanuelle",
   "Emanuta",
   "Emy",
   "Erika",
   "Erina",
   "Eve",
   "Ewe",
   "Fay",
   "Felicy",
   "Florah",
   "Floreen",
   "Florens",
   "Franciska",
   "Friday",
   "Gabriella",
   "Gelina",
   "Georgia",
   "Gigi",
   "Gilda",
   "Gina",
   "Gisella",
   "Git",
   "Grace",
   "Grete",
   "Gwen",
   "Hanna",
   "Hariet",
   "Hazel",
   "Heidi",
   "Hekla",
   "Helena",
   "Helene",
   "Hereza",
   "Hrefna",
   "Ilia",
   "Iliona",
   "Inga",
   "Ingela",
   "Ingrid",
   "Irene",
   "Irina",
   "Iris",
   "Isadora",
   "Jana",
   "Jane",
   "Janet",
   "Janicke",
   "Janina",
   "Janni",
   "Jennifer",
   "Jenny",
   "Jessica",
   "Jill",
   "Joan",
   "Jolene",
   "Juana",
   "Juanita",
   "Judy",
   "Julie",
   "June",
   "Karen",
   "Karensia",
   "Katalica",
   "Katarina",
   "Kathleen",
   "Katinka",
   "Katja",
   "Kelly",
   "Kia",
   "Kim",
   "Lana",
   "Laila",
   "Laura",
   "Leia",
   "Lena",
   "Lesa",
   "Letia",
   "Li",
   "Lilly",
   "Linda",
   "Lindane",
   "Lindy",
   "Ling",
   "Lisa",
   "Lisbeth",
   "Lisha",
   "Liv",
   "Liza",
   "Lo",
   "Lola",
   "Lone",
   "Loraine",
   "Lori",
   "Lotta",
   "Lousie",
   "Lucia",
   "Lucy",
   "Ludmilla",
   "Magdalena",
   "Maggie",
   "Mahelia",
   "Maia",
   "Malin",
   "Malou",
   "Malousie",
   "Marcia",
   "Margot",
   "Margret",
   "Mari",
   "Maria",
   "Mariana",
   "Marianne",
   "Marie",
   "Marilyn",
   "Marina",
   "Marita",
   "Marith",
   "Marlene",
   "Marlotta",
   "Martha",
   "Mary",
   "May",
   "Meg",
   "Melissa",
   "Meliza",
   "Melody",
   "Mia",
   "Mika",
   "Mikaela",
   "Mindy",
   "Minnie",
   "Miriam",
   "Modesty",
   "Monica",
   "Monique",
   "Nadia",
   "Nadine",
   "Nancy",
   "Nanette",
   "Nanna",
   "Natalia",
   "Nathalie",
   "Narelle",
   "Nellie",
   "Nena",
   "Neutricia",
   "Nicole",
   "Nina",
   "Nora",
   "Olga",
   "Olivia",
   "Pam",
   "Pamela",
   "Patricia",
   "Patty",
   "Paula",
   "Paule",
   "Peggy",
   "Pia",
   "Petra",
   "Pris",
   "Priscilla",
   "Qrissie",
   "Racey",
   "Randy",
   "Rebecca",
   "Rhoda",
   "Ria",
   "Rita",
   "Roberta",
   "Rodica",
   "Rose",
   "Rosita",
   "Roxanda",
   "Roxandy",
   "Roxanne",
   "Ruth",
   "Ruzica",
   "Saga",
   "Sally",
   "Samantha",
   "Sandra",
   "Sarah",
   "Scase",
   "Schwester",
   "Sharon",
   "Sharyn",
   "Sheena",
   "Sheila",
   "Shirlen",
   "Shirley",
   "Sireza",
   "Siri",
   "Sita",
   "Slavisa",
   "Sonia",
   "Sophie",
   "Stasia",
   "Stella",
   "Stellie",
   "Stephania",
   "Stephanie",
   "Stevie",
   "Sue",
   "Susan",
   "Susie",
   "Svetlana",
   "Sylvie",
   "Taarna",
   "Tammy",
   "Tania",
   "Terry",
   "Theofania",
   "Therese",
   "Thereza",
   "Therine",
   "Thlena",
   "Tina",
   "Titti",
   "Toni",
   "Tracey",
   "Tricia",
   "Ursula",
   "Valerie",
   "Valexanda",
   "Vega",
   "Vera",
   "Vicky",
   "Victoria",
   "Vladeta",
   "Voux",
   "Wanda",
   "Wendy",
   "Xandra",
   "Xanna",
   "Xarah",
   "Yeane",
   "Yeanet",
   "Yrsa",
   "Yvette",
   "Zandra",
   "Zarah",
   "Zora",
   };

static UBYTE *Boys[] =
   {
   "Abraham",
   "Ace",
   "Adam",
   "Adins",
   "Adolf",
   "Albert",
   "Alexander",
   "Alfred",
   "Allan",
   "Alph",
   "Amadeus",
   "Anatolij",
   "Andrea",
   "Andrew",
   "Andrzej",
   "Andy",
   "Anton",
   "Arichris",
   "Arny",
   "Artheils",
   "Arthur",
   "August",
   "Balder",
   "Barry",
   "Bartholomy",
   "Belouis",
   "Ben",
   "Benny",
   "Bereket",
   "Bert",
   "Bertrand",
   "Billy",
   "Bo",
   "Bob",
   "Bobba",
   "Bobby",
   "Borgen",
   "Boris",
   "Brian",
   "Bruce",
   "Byggart",
   "Caiser",
   "Carl",
   "Casper",
   "Castor",
   "Ceasar",
   "Cecil",
   "Chagart",
   "Chan",
   "Chanustvan",
   "Charlie",
   "Chen",
   "Ching",
   "Chris",
   "Christopher",
   "Chuck",
   "Clark",
   "Cole",
   "Colin",
   "Conrad",
   "Cryt",
   "Cztan",
   "Dan",
   "Danny",
   "Dante",
   "Dave",
   "David",
   "Davy",
   "Derek",
   "Del",
   "Desmond",
   "Deuincard",
   "Dino",
   "Djehuty",
   "Don",
   "Donny",
   "Douglas",
   "Duch",
   "Duncan",
   "Ector",
   "Ed",
   "Eddie",
   "Edgar",
   "Edinus",
   "Edrick",
   "Edward",
   "Egon",
   "Egor",
   "Enrico",
   "Eremir",
   "Erik",
   "Erloff",
   "Erland",
   "Ernst",
   "Errol",
   "Erwin",
   "Eugene",
   "Euie",
   "Feodor",
   "Fermo",
   "Finn",
   "Fjodor",
   "Force",
   "Ford",
   "Frank",
   "Frankie",
   "Frans",
   "Fred",
   "Fredrik",
   "Frekenlof",
   "Fritz",
   "Gantigor",
   "Gary",
   "George",
   "Gert",
   "Gregor",
   "Gregory",
   "Greville",
   "Guerew",
   "Guerney",
   "Gustaf",
   "Gustanislav",
   "Hagar",
   "Hakki",
   "Han",
   "Hank",
   "Hans",
   "Harold",
   "Harry",
   "Heinrich",
   "Heinz",
   "Henry",
   "Herman",
   "Horace",
   "Horst",
   "Hubengt",
   "Hubert",
   "Huck",
   "Ian",
   "Ianislav",
   "Ibraim",
   "Icchok",
   "Igor",
   "Istvan",
   "Ivan",
   "Ivo",
   "Jack",
   "Jacob",
   "Jacobby",
   "Jalob",
   "James",
   "Jan",
   "Janus",
   "Jason",
   "Jean",
   "Jens",
   "Jeremia",
   "Jerry",
   "Jim",
   "Joakim",
   "Jock",
   "Joe",
   "Johann",
   "John",
   "Jon",
   "Jonalder",
   "Jonas",
   "Jonny",
   "Jonriste",
   "Josef",
   "Josefan",
   "Joshua",
   "Joss",
   "Juan",
   "Julfgart",
   "Julius",
   "Jupiter",
   "Jurgen",
   "Juri",
   "Kard",
   "Karsten",
   "Keith",
   "Keik",
   "Kendrick",
   "Kent",
   "Kirk",
   "Klaus",
   "Kurge",
   "Kurgenn",
   "Kurt",
   "Kyle",
   "Kwan",
   "Lando",
   "Lance",
   "Larry",
   "Larth",
   "Lekakon",
   "Lennart",
   "Leon",
   "Leonard",
   "Leonid",
   "Leopold",
   "Lev",
   "Liet",
   "Linus",
   "Lionell",
   "Lober",
   "Lonnie",
   "Lou",
   "Louie",
   "Ludomir",
   "Ludwig",
   "Lucah",
   "Luke",
   "Lywas",
   "Magnus",
   "Manfred",
   "Manuel",
   "Marcus",
   "Marek",
   "Mark",
   "Marstvanie",
   "Martin",
   "Marty",
   "Marvin",
   "Marvince",
   "Matz",
   "Mattheo",
   "Matthew",
   "Max",
   "Menachin",
   "Michael",
   "Micah",
   "Mihail",
   "Mikael",
   "Milan",
   "Mitchell",
   "Mordred",
   "Napoleon",
   "Nathan",
   "Neil",
   "Nreda",
   "Nike",
   "Niklaus",
   "Nils",
   "Nolan",
   "Norman",
   "Nyls",
   "Oliver",
   "Oloda",
   "Ontitrew",
   "Oscar",
   "Otto",
   "Ozwald",
   "Pat",
   "Patrichail",
   "Patrick",
   "Patrico",
   "Paul",
   "Per",
   "Percy",
   "Perez",
   "Pete",
   "Peter",
   "Petri",
   "Petrov",
   "Philip",
   "Piotr",
   "Platon",
   "Prozka",
   "Rachantor",
   "Raija",
   "Raim",
   "Ralph",
   "Randolph",
   "Rankon",
   "Ray",
   "Reynold",
   "Rickard",
   "Rex",
   "Robert",
   "Rod",
   "Rodrick",
   "Rodriguez",
   "Roger",
   "Roman",
   "Romeo",
   "Ronald",
   "Ronnie",
   "Ruben",
   "Rudolph",
   "Rupert",
   "Sam",
   "Samarcy",
   "Sean",
   "Seandred",
   "Sebahat",
   "Sedilow",
   "Sentibon",
   "Simon",
   "Sokrates",
   "Song",
   "Staf",
   "Stanislav",
   "Stanley",
   "Stefano",
   "Stern",
   "Steve",
   "Stephen",
   "Steyern",
   "Sven",
   "Swan",
   "Swaron",
   "Tadeus",
   "Theo",
   "Thomas",
   "Tigran",
   "Tim",
   "Timmothy",
   "Toldeus",
   "Tolino",
   "Tom",
   "Tommy",
   "Tsan",
   "Tyko",
   "Ukriel",
   "Ulph",
   "Uno",
   "Ustalij",
   "Valentino",
   "Viktor",
   "Vince",
   "Vladimir",
   "Vlado",
   "Vodrick",
   "Walph",
   "Walter",
   "Wenlon",
   "Werner",
   "Wernst",
   "William",
   "Winston",
   "Wolfgang",
   "Wytt",
   "Xavier",
   "Xerxes",
   "Xin",
   "Xodrick",
   "Yaspar",
   "Yerr",
   "Yonndan",
   "Yosin",
   "Yrtvar",
   "Zaqarias",
   "Zjell",
   "Zjerez",
   "Zkelly",
   "Zor",
   "Ztanton",
   "Zwen",
   };

static UBYTE *Last[] =
   {
   "Acerin",
   "Ahim",
   "Ahino",
   "Ajbeam",
   "Aldersson",
   "Allan",
   "Altenfelt",
   "Amour",
   "Ancherinsky",
   "Andersson",
   "Azid",
   "Aztec",
   "Austinn",
   "Bak",
   "Banner",
   "Bazar",
   "Beachsleeper",
   "Beluni",
   "Belt",
   "Benson",
   "Brenner",
   "Birdsong",
   "Black",
   "Boot",
   "Boq",
   "Bowman",
   "Brewas",
   "Bronering",
   "Brown",
   "Buckman",
   "Burst",
   "Butterworth",
   "Cabrini",
   "Calrisen",
   "Carlton",
   "Carpenter",
   "Ceilo",
   "Cerewman",
   "Cerial",
   "Ceringer",
   "Cersjavv",
   "Chessman",
   "Chest",
   "Cicero",
   "Cinger",
   "Citz",
   "Comet",
   "Coneyervie",
   "Connor",
   "Coral",
   "Crabb",
   "Craydon",
   "Creditmaker",
   "Creek",
   "Crewman",
   "Crodden",
   "Dantman",
   "Dean",
   "Degalaxian",
   "Denocharsky",
   "Denulallan",
   "Dew",
   "Dezzabo",
   "Dhrystone",
   "Dimitrov",
   "Donovan",
   "Doublestar",
   "Drake",
   "Dweller",
   "Eagle",
   "Earjun",
   "Earthson",
   "Earton",
   "Effing",
   "Erakel",
   "Essin",
   "Eufreim",
   "Evody",
   "Ezhariann",
   "Farahd",
   "Ferraro",
   "Fighter",
   "Finkel",
   "Fisher",
   "Florian",
   "Flower",
   "Flynn",
   "Ford",
   "Fox",
   "Franklin",
   "Frewie",
   "Gack",
   "Gail",
   "Gheenili",
   "Ghoerrgh",
   "Gionetti",
   "Glava",
   "Gold",
   "Goldberg",
   "Goodaim",
   "Goodder",
   "Goodman",
   "Goodweather",
   "Gordon",
   "Gosneti",
   "Gosnil",
   "Gravatte",
   "Green",
   "Hadji",
   "Hagar",
   "Halfmoon",
   "Hallanchu",
   "Hallway",
   "Hamilton",
   "Harding",
   "Hargarjumoongdoray",
   "Harmony",
   "Harryson",
   "Hauptcvard",
   "Heywiss",
   "Hiker",
   "Hill",
   "Hogan",
   "Honeybin",
   "Honeydew",
   "Hoper",
   "Hornetsnest",
   "Ianiskov",
   "Idento",
   "Ingonti",
   "Ionsson",
   "Ixat",
   "Jade",
   "Jeser",
   "Jewel",
   "Jofo",
   "Johnsson",
   "Johnsdaughter",
   "Jones",
   "Jonydew",
   "Jong",
   "Joygiver",
   "Joysony",
   "Jumour",
   "Junone",
   "Kahn",
   "Kahl",
   "Kaido",
   "Kainor",
   "Kasasov",
   "Kernigan",
   "Khild",
   "Khilinovich",
   "Khy",
   "King",
   "Kirley",
   "Kneecup",
   "Krakov",
   "Kvov",
   "Kwang",
   "Landerring",
   "Langer",
   "Laser",
   "Laxiander",
   "Leffler",
   "Lexander",
   "Lichentheim",
   "Lifeadder",
   "Lifeat",
   "Lipoli",
   "Lockander",
   "Lojiues",
   "Lorakel",
   "Loudrope",
   "Lovefull",
   "Loveletter",
   "Luckring",
   "Lutihs",
   "Ly",
   "Manger",
   "Mannight",
   "Manning",
   "Margarin",
   "Massart",
   "Maxwell",
   "Mcgarret",
   "Mckelly",
   "Meiper",
   "Menom",
   "Meyer",
   "Michailov",
   "Micharman",
   "Mindfull",
   "Ming",
   "Mips",
   "Mnoir",
   "Mnolwan",
   "Mono",
   "Moonrue",
   "Moonsinger",
   "Moonstone",
   "Mordinger",
   "Morningdew",
   "Muchsword",
   "Muhammed",
   "Muharmann",
   "Napuce",
   "Nebulae",
   "Nestor",
   "Ngomo",
   "Nix",
   "Nokillis",
   "Nokin",
   "Nokinderch",
   "Nolan",
   "Northbranch",
   "Oedor",
   "Occam",
   "Ongstrom",
   "Oven",
   "Oysterman",
   "Ox",
   "Palsystem",
   "Parth",
   "Parton",
   "Pascal",
   "Pascanlon",
   "Peck",
   "Perrin",
   "Persson",
   "Pfaifer",
   "Pilotman",
   "Piper",
   "Pointer",
   "Potter",
   "Principal",
   "Probxs",
   "Pulsar",
   "Qeres",
   "Quatro",
   "Quasar",
   "Qwait",
   "Radannel",
   "Rawanna",
   "Redanel",
   "Reinstrom",
   "Rejgun",
   "Renqiong",
   "Ringer",
   "Rinneyell",
   "Ritchie",
   "Rijas",
   "Robins",
   "Rocktree",
   "Round",
   "Rymer",
   "Sagil",
   "Saunder",
   "Sayed",
   "Scanlon",
   "Screy",
   "Scythe",
   "Scotch",
   "Scott",
   "Seablue",
   "Searsia",
   "Searunner",
   "Seddije",
   "Sefex",
   "Seliah",
   "Senkaido",
   "Serenson",
   "Servin",
   "Shenulaxiah",
   "Shepherd",
   "Shinomoto",
   "Shipman",
   "Shuttle",
   "Sing",
   "Skynote",
   "Smith",
   "Southstar",
   "Spearthrower",
   "Starbeam",
   "Starjumper",
   "Starlight",
   "Starman",
   "Staryell",
   "Statler",
   "Staunton",
   "Stein",
   "Stern",
   "Stephenson",
   "Stewart",
   "Strawberry",
   "Sulimani",
   "Sunday",
   "Sunmedoedaught",
   "Sunmeyer",
   "Sunrise",
   "Sunshine",
   "Swetidov",
   "Swinger",
   "Szinsky",
   "Taipi",
   "Tait",
   "Tanner",
   "Tal",
   "Techu",
   "Thebah",
   "Temple",
   "Tiblis",
   "Tirpitz",
   "Tjebyshev",
   "Toolmaker",
   "Tough",
   "Traveller",
   "Turner",
   "Tyler",
   "Uanarish",
   "Ubbanen",
   "Upholder",
   "Upperhand",
   "Vainray",
   "Vajsii",
   "Vloda",
   "Vier",
   "Volt",
   "Walker",
   "Wall",
   "Walsh",
   "Wanderer",
   "Warmaker",
   "Waverider",
   "Westling",
   "Whetstone",
   "Wilde",
   "Wintergate",
   "Wiper",
   "Wirth",
   "Witter",
   "Wonderchild",
   "Wood",
   "Woolwinder",
   "Wrongdoer",
   "Wusser",
   "Wynn",
   "Xann",
   "Xathroda",
   "Xavier",
   "Xyperia",
   "Yoke",
   "Yuwing",
   "Zahnen",
   "Zaks",
   "Zandor",
   "Zargon",
   "Zemin",
   "Zollman",
   "Zax",
   };

int Error=NULL;                      /* Return code */
USHORT a = RANDOM;

   if (func & TITLENAME)             /* The only way to determine sex */
      {                              /* with some names ...           */
      if (sex & BOYNAME)
         result = stpcpy(result, "Mr ");
      else
         {
         if (func & MARRIEDNAME)
            result = stpcpy(result, "Mrs ");
         else
            result = stpcpy(result, "Ms ");
         }
      }

   if (func & FIRSTNAME)
      {
      if (sex & GIRLNAME)
         {
         while (a > GIRLS)
            a = RANDOM;
         result = stpcpy(result,Girls[a]);
         a = RANDOM;
         }

      else if (sex & BOYNAME)
         {
         while (a > BOYS)
            a = RANDOM;
         result = stpcpy(result,Boys[a]);
         a = RANDOM;
         }
      }

   if (func & LASTNAME)
      {
      if (func & FIRSTNAME)
         *result++ = ' ';
      while (a > LASTS)
         a = RANDOM;
      result = stpcpy(result,Last[a]);
      a = RANDOM;
      }

   *result = '\0';

   return(Error);

   } /* End of MakeName() */

