/* Do not remove the headers from this file! see /USAGE for more info. */
/*
** alias.c -- alias daemon
**
** Records the system wide aliases
**
** 960114, Deathblade: created
*/
#include <classes.h>
#include <commands.h> /* for CMD_OB_ADMTOOL */
#include <security.h>
inherit M_DAEMON_DATA;
inherit CLASS_ALIAS;
private mapping defaults = ([ ]);
private string * xdefaults = ({ });
private mapping wizdefaults = ([ ]);
private string * wizxdefaults = ({ });
mixed query_default_aliases()
{
return ({ defaults, xdefaults, wizdefaults, wizxdefaults });
}
private varargs void add_alias_to_mapping(mapping m,
string a,
string template,
int global_status,
string * defaults)
{
m[a] = new(class alias);
if(strsrch(template,"$*") == -1)
template += " $*";
((class alias) m[a])->template = template;
((class alias) m[a])->defaults = arrayp(defaults) ? defaults : ({""});
((class alias) m[a])->num_args = sizeof(((class alias) m[a])->defaults) - 1;
((class alias) m[a])->global_alias_status = global_status;
}
varargs void add_default_alias(string name,
string expansion,
int xalias,
int devalias)
{
if (!check_privilege("Mudlib:daemons"))
return;
if(devalias)
{
add_alias_to_mapping(wizdefaults, name, expansion, 2);
if(xalias)
wizxdefaults = clean_array(wizxdefaults + ({name}));
}
else
{
add_alias_to_mapping(defaults, name, expansion, 1);
if(xalias)
xdefaults = clean_array(xdefaults + ({ name }));
}
save_me();
}
varargs void remove_default_alias(string name, int devalias)
{
if (!check_privilege("Mudlib:daemons"))
return;
if(devalias)
{
map_delete(wizdefaults, name);
wizxdefaults -= ({ name });
}
else
{
map_delete(defaults,name);
xdefaults -= ({ name });
}
save_me();
}
void clean_up() {
destruct(this_object());
}