foundation2_fluffos_v1/
foundation2_fluffos_v1/bin/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/ChangeLog.old/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/Win32/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/compat/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/compat/simuls/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/include/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/clone/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/command/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/data/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/etc/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/include/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/inherit/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/inherit/master/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/log/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/compiler/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/efuns/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/operators/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/u/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/tmp/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/windows/
foundation2_fluffos_v1/lib/cfg/
foundation2_fluffos_v1/lib/cmds/adm/
foundation2_fluffos_v1/lib/daemon/save/
foundation2_fluffos_v1/lib/daemon/services/
foundation2_fluffos_v1/lib/daemon/soul/
foundation2_fluffos_v1/lib/doc/build/
foundation2_fluffos_v1/lib/doc/classes/
foundation2_fluffos_v1/lib/doc/driver/
foundation2_fluffos_v1/lib/doc/driver/applies/
foundation2_fluffos_v1/lib/doc/driver/applies/interactive/
foundation2_fluffos_v1/lib/doc/driver/concepts/
foundation2_fluffos_v1/lib/doc/driver/driver/
foundation2_fluffos_v1/lib/doc/driver/efuns/arrays/
foundation2_fluffos_v1/lib/doc/driver/efuns/buffers/
foundation2_fluffos_v1/lib/doc/driver/efuns/calls/
foundation2_fluffos_v1/lib/doc/driver/efuns/compile/
foundation2_fluffos_v1/lib/doc/driver/efuns/filesystem/
foundation2_fluffos_v1/lib/doc/driver/efuns/floats/
foundation2_fluffos_v1/lib/doc/driver/efuns/functions/
foundation2_fluffos_v1/lib/doc/driver/efuns/general/
foundation2_fluffos_v1/lib/doc/driver/efuns/mappings/
foundation2_fluffos_v1/lib/doc/driver/efuns/numbers/
foundation2_fluffos_v1/lib/doc/driver/efuns/parsing/
foundation2_fluffos_v1/lib/doc/driver/lpc/constructs/
foundation2_fluffos_v1/lib/doc/driver/lpc/types/
foundation2_fluffos_v1/lib/doc/driver/platforms/
foundation2_fluffos_v1/lib/doc/efun/
foundation2_fluffos_v1/lib/doc/etc/
foundation2_fluffos_v1/lib/doc/faq/
foundation2_fluffos_v1/lib/doc/help/creator/
foundation2_fluffos_v1/lib/doc/help/player/
foundation2_fluffos_v1/lib/doc/lpc/basic/
foundation2_fluffos_v1/lib/doc/lpc/data_types/
foundation2_fluffos_v1/lib/doc/lpc/etc/
foundation2_fluffos_v1/lib/doc/lpc/intermediate/
foundation2_fluffos_v1/lib/doc/lpc/types/
foundation2_fluffos_v1/lib/doc/mudlib/
foundation2_fluffos_v1/lib/doc/mudlib/Features/
foundation2_fluffos_v1/lib/domains/Examples/armour/
foundation2_fluffos_v1/lib/domains/Examples/etc/
foundation2_fluffos_v1/lib/domains/Examples/npc/
foundation2_fluffos_v1/lib/domains/Examples/room/
foundation2_fluffos_v1/lib/domains/Examples/virtual/
foundation2_fluffos_v1/lib/domains/Examples/virtual/exaA/
foundation2_fluffos_v1/lib/domains/Examples/virtual/exaB/
foundation2_fluffos_v1/lib/domains/Examples/weapon/
foundation2_fluffos_v1/lib/domains/School/doc/
foundation2_fluffos_v1/lib/domains/School/room/
foundation2_fluffos_v1/lib/domains/School/room/Classes/
foundation2_fluffos_v1/lib/domains/School/room/Offices/
foundation2_fluffos_v1/lib/domains/Standard/
foundation2_fluffos_v1/lib/domains/Standard/pools/
foundation2_fluffos_v1/lib/domains/Standard/std/
foundation2_fluffos_v1/lib/domains/Standard/xtra/
foundation2_fluffos_v1/lib/include/
foundation2_fluffos_v1/lib/lib/obj/
foundation2_fluffos_v1/lib/news/
foundation2_fluffos_v1/lib/save/
foundation2_fluffos_v1/lib/secure/cfg/
foundation2_fluffos_v1/lib/secure/cmds/player/
foundation2_fluffos_v1/lib/secure/lib/
foundation2_fluffos_v1/old/
foundation2_fluffos_v1/win32/
#include <flags.h>
#include <daemons.h>
#include <objects.h>
#include <cfg.h>

object Admin;
string Name, CapName, Password;

static void logon() {
    receive("Welcome to the "+mudlib()+" "+mudlib_version()+" installation "
	    "process.\n");
    receive("You will be asked a series of questions aimed at customizing "
	    "your MUD.\n");
    receive("These questions are designed for the mudlib only.  You should "
	    "have already \nrun the installation script at the host level "
	    "which comes with the mudlib.\n");
    receive("\nWhat is the name of one person with full superuser access "
	    "(your MUD name)?\nName:  ");
	input_to("input_name");	
}

static void input_name(string str) {
    if(!((int)BANISH_D->valid_name(Name=convert_name(CapName=str)))) {
        receive("That is not a valid name.  Enter another: ");
        input_to("input_name");
        return;
    }
    Admin = (object)master()->player_object(Name);
    Admin->SetKeyName(Name);
    Admin->SetPosition("head arch");
    mkdir(DIR_PLAYERS+"/"+Name[0..0]);
    receive("\nPassword: ");
    input_to("input_password", I_NOECHO | I_NOESC);
}

static void input_password(string str) {
    if(strlen(str) < 5) {
        receive("An admin password of less than 5 letters?  Get real!\n");
        receive("Password: ");
        input_to("input_password", I_NOECHO | I_NOESC);
        return;
    }
    Password = str;
    receive("\nConfirm password: ");
    input_to("confirm_password", I_NOECHO | I_NOESC);
}

static void confirm_password(string str) {
    if(str != Password) {
        receive("\nPasswords do not match.  Password: ");
        input_to("input_password", I_NOECHO | I_NOESC);
        return;
    }
    Admin->SetPassword(crypt(Password, 0));
    CapName = capitalize(CapName);
    receive("\nEnter in your capitalized name ("+CapName+" is default): ");
    input_to("input_cap_name");
}

static void input_cap_name(string str) {
    if(str == "" || !str) str = CapName;
    else if(convert_name(str = capitalize(str)) != Name) {
        receive("\nYou can't do that! Capitalized name: ");
        input_to("input_cap_name");
        return;
    }
    Admin->SetCapName(CapName);
    receive("\nWhat is your gender? ");
    input_to("input_gender");
}

static void input_gender(string str) {
    Admin->SetGender(str);
    receive("\nWhat is "+possessive_noun(CapName)+" real name? ");
    input_to("input_rname");
}

static void input_rname(string str) {
    if(str == "" || !str) str = "Unknown";
    Admin->SetRealName(str);
    receive("\nWhat is the email address? ");
    input_to("input_email");
}

static void input_email(string str) {
    object ob;
    string tmp;

    if(str == "" || !str) str = "Unknown";
    Admin->SetEmail(str);
    Admin->save_player(Name);
    tmp = read_file(CFG_GROUPS);
    rm(CFG_GROUPS);
    mkdir(REALMS_DIRS+"/"+Name);
    cp(DIR_STANDARD_DOMAIN+"/xtra/workroom.c", REALMS_DIRS+"/"+Name+
      "/workroom.c");
    tmp = replace_string(tmp, "admin", Name);
    write_file(CFG_GROUPS, tmp);
    destruct(master());
    if(ob = find_object(OB_LOGIN)) destruct(ob);
    cp("/secure/lib/login.real", "/secure/lib/login.c");
    mkdir(DIR_CRES "/" + Name[0..0]);
#ifdef PLAYERS
    rename(DIR_PLAYERS "/" + Name[0..0] + "/" + Name + __SAVE_EXTENSION__,
      DIR_CRES "/" + Name[0..0] + "/" + Name + __SAVE_EXTENSION__);
#endif
    destruct(Admin);
    receive("You will be disconnected.  Login as your admin character.\n");
    destruct(master());
    destruct(this_object());
}

string GetKeyName() { return Name; }