// /bin/mortal/_setenv.c
// from the Nightmare Mudlib
// a limited set command for users
// created by Descartes of Borg 930903
#include <std.h>
#include <config.h>
#include <daemons.h>
inherit DAEMON;
int cmd_setenv(string str) {
string cle, val;
if(!str || sscanf(str, "%s %s", cle, val) != 2)
return notify_fail("Usage <setenv [variable] [value]>\n");
switch(cle) {
case "SCREEN": case "LINES":
if(sscanf(val, "%d", val) != 1 || !val)
return notify_fail("Enter in a number.\n");
else this_player()->setenv(cle, (val=val+""));
break;
case "TZONE":
this_player()->setenv(cle, val);
break;
case "TERM":
if(!TERMINAL_D->query_term_support(val)) {
message("info", "Unknown terminal type.", this_player());
val = "unknown";
}
this_player()->setenv("TERM", val);
this_player()->reset_terminal();
break;
case "PROMPT":
if(val == "" || !val) val = DEFAULT_PROMPT;
else val = val + " ";
this_player()->setenv("PROMPT", val);
this_player()->reset_prompt();
break;
case "MORE":
if(val != "off") val = "on";
this_player()->setenv("MORE", val);
break;
default: return notify_fail("Invalid variable: "+cle+"\n");
}
message("info",sprintf("Variable %s set to %s.", cle, val),this_player());
return 1;
}
void help() {
message("help",
"Syntax: <setenv [variable] [value]>\n\n"
"Sets environment variables which customize the way the game "
"appears to you. You may set the following values:\n\n"
"LINES: sets how many lines appear for paged information (like the "
"who command) (default: 20)\n\nSCREEN: sets how wide your screen is so "
"that information coming to you automatically gets wrapped to fit "
"your screen width (default: 75)\n\nTERM: sets what set of instructions "
"your terminal needs to be in colour (see help terminal) (default: "
"unknown)\n\nTZONE: sets what time zone you are in for conversion "
"of real world times into your time zone (default: PST)\n\n"
"PROMPT: sets what will display for your prompt.\n\n\n"
"See also: help prompt.",
this_player()
);
}