/*    /secure/cmds/player/chfn.c
 *    from the Foundation II LPC Library
 *    just when you thought you were safe from lisp
 *    created by Descartes of Borg 950517
 */

#include <lib.h>

inherit LIB_DAEMON;

mixed cmd(string args) {
    function f;
    string rname;

    message("system", "Changing user information for " +
      (string)previous_object()->GetCapName() + ": ", previous_object());
    rname = (string)previous_object()->GetRealName();
    message("prompt", "Real name [" + rname + "] ", previous_object());
    f = function(string str, string old, object ob) {
	function g;

	if( !str || str == "" ) str = old;
	if( str != old ) {
	    ob->SetRealName(str);
	    message("system", "Real name changed to " + str, ob);
	}
	else message("system", "Real name unchanged.", ob);
	str = (string)ob->GetEmail();
	message("prompt", "Email (preceed with # to make admin only) ["
	  + str + "] ", ob);
	g = function(string str, string old, object ob) {
	    function h;

	    if( !str || str == "" ) str = old;
	    if( str != old ) {
		string a, b;

		if( sscanf(str, "%s@%s", a, b) != 2 ) {
		    message("system", "Invalid email.", ob);
		    return;
		}
		ob->SetEmail(str);
		message("system", "Email changed to " + str, ob);
	    }
	    else message("system", "Email unchanged.", ob);
	    str = (ob->GetWebPage() || "");
	    message("prompt", "Home Page [" + str + "]: ", ob);
	    h = function(string str, object who) {
		if( str == "" ) {
		    str = 0;
		}
		else if( str ) {
		    if( strlen(str) < 5 ) {
			str = "http://" + str;
		    }
		    else {
			if( str[0..3] != "http" ) {
			    str = "http://" + str;
			}
		    }
		}
		if( !str ) {
		    message("system", "Home paged unchanged.", who);
		}
		else {
		    who->SetWebPage(str);
		    message("system", "Home page changed.", who);
		    this_player()->save_player((string)this_player()->GetKeyName());
		    update("/secure/daemon/finger");
		}
	    };
	    input_to(h, 0, ob);
	    this_player()->save_player((string)this_player()->GetKeyName());
	    update("/secure/daemon/finger");
	};
	input_to(g, 0, str, ob);
	this_player()->save_player((string)this_player()->GetKeyName());
	update("/secure/daemon/finger");
    };
    input_to(f, "" + rname, previous_object());
    this_player()->save_player((string)this_player()->GetKeyName());
    update("/secure/daemon/finger");
    return 1;
}

void help() {
    message("help", "Syntax: <chfn>\n\n"
      "Allows you to change your real life information.\n\n"
      "See also: passwd", this_player());
}
