tmi2_fluffos_v2/
tmi2_fluffos_v2/bin/
tmi2_fluffos_v2/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/ChangeLog.old/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/Win32/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/simuls/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/clone/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/command/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/data/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/master/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/log/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/compiler/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/efuns/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/operators/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/u/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/tmp/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/windows/
tmi2_fluffos_v2/lib/
tmi2_fluffos_v2/lib/adm/
tmi2_fluffos_v2/lib/adm/daemons/languages/
tmi2_fluffos_v2/lib/adm/daemons/network/I3/
tmi2_fluffos_v2/lib/adm/daemons/virtual/
tmi2_fluffos_v2/lib/adm/daemons/virtual/template/
tmi2_fluffos_v2/lib/adm/news/
tmi2_fluffos_v2/lib/adm/obj/
tmi2_fluffos_v2/lib/adm/obj/master/
tmi2_fluffos_v2/lib/adm/priv/
tmi2_fluffos_v2/lib/adm/shell/
tmi2_fluffos_v2/lib/adm/tmp/
tmi2_fluffos_v2/lib/cmds/
tmi2_fluffos_v2/lib/d/
tmi2_fluffos_v2/lib/d/Conf/
tmi2_fluffos_v2/lib/d/Conf/adm/
tmi2_fluffos_v2/lib/d/Conf/boards/
tmi2_fluffos_v2/lib/d/Conf/cmds/
tmi2_fluffos_v2/lib/d/Conf/data/
tmi2_fluffos_v2/lib/d/Conf/logs/
tmi2_fluffos_v2/lib/d/Conf/obj/
tmi2_fluffos_v2/lib/d/Conf/text/help/
tmi2_fluffos_v2/lib/d/Fooland/adm/
tmi2_fluffos_v2/lib/d/Fooland/data/
tmi2_fluffos_v2/lib/d/Fooland/data/attic/
tmi2_fluffos_v2/lib/d/Fooland/items/
tmi2_fluffos_v2/lib/d/TMI/
tmi2_fluffos_v2/lib/d/TMI/adm/
tmi2_fluffos_v2/lib/d/TMI/boards/
tmi2_fluffos_v2/lib/d/TMI/data/
tmi2_fluffos_v2/lib/d/TMI/rooms/
tmi2_fluffos_v2/lib/d/grid/
tmi2_fluffos_v2/lib/d/grid/adm/
tmi2_fluffos_v2/lib/d/grid/data/
tmi2_fluffos_v2/lib/d/std/
tmi2_fluffos_v2/lib/d/std/adm/
tmi2_fluffos_v2/lib/data/adm/
tmi2_fluffos_v2/lib/data/adm/daemons/
tmi2_fluffos_v2/lib/data/adm/daemons/doc_d/
tmi2_fluffos_v2/lib/data/adm/daemons/emoted/
tmi2_fluffos_v2/lib/data/adm/daemons/network/http/
tmi2_fluffos_v2/lib/data/adm/daemons/network/services/mail_q/
tmi2_fluffos_v2/lib/data/adm/daemons/network/smtp/
tmi2_fluffos_v2/lib/data/adm/daemons/news/archives/
tmi2_fluffos_v2/lib/data/attic/connection/
tmi2_fluffos_v2/lib/data/attic/user/
tmi2_fluffos_v2/lib/data/std/connection/b/
tmi2_fluffos_v2/lib/data/std/connection/l/
tmi2_fluffos_v2/lib/data/std/user/a/
tmi2_fluffos_v2/lib/data/std/user/b/
tmi2_fluffos_v2/lib/data/std/user/d/
tmi2_fluffos_v2/lib/data/std/user/f/
tmi2_fluffos_v2/lib/data/std/user/l/
tmi2_fluffos_v2/lib/data/std/user/x/
tmi2_fluffos_v2/lib/data/u/d/dm/working/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/smtp/
tmi2_fluffos_v2/lib/doc/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/interactive/
tmi2_fluffos_v2/lib/doc/driverdoc/concepts/
tmi2_fluffos_v2/lib/doc/driverdoc/driver/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/arrays/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/buffers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/compile/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/ed/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/filesystem/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/floats/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/functions/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/general/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/mappings/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/numbers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/parsing/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/constructs/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/preprocessor/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/types/
tmi2_fluffos_v2/lib/doc/driverdoc/platforms/
tmi2_fluffos_v2/lib/doc/mudlib/
tmi2_fluffos_v2/lib/ftp/
tmi2_fluffos_v2/lib/include/driver/
tmi2_fluffos_v2/lib/log/
tmi2_fluffos_v2/lib/log/driver/
tmi2_fluffos_v2/lib/obj/net/
tmi2_fluffos_v2/lib/obj/shells/
tmi2_fluffos_v2/lib/obj/tools/
tmi2_fluffos_v2/lib/std/adt/
tmi2_fluffos_v2/lib/std/board/
tmi2_fluffos_v2/lib/std/body/
tmi2_fluffos_v2/lib/std/fun/
tmi2_fluffos_v2/lib/std/living/
tmi2_fluffos_v2/lib/std/object/
tmi2_fluffos_v2/lib/std/shop/
tmi2_fluffos_v2/lib/std/socket/
tmi2_fluffos_v2/lib/std/user/
tmi2_fluffos_v2/lib/std/virtual/
tmi2_fluffos_v2/lib/student/
tmi2_fluffos_v2/lib/student/kalypso/
tmi2_fluffos_v2/lib/student/kalypso/armor/
tmi2_fluffos_v2/lib/student/kalypso/rooms/
tmi2_fluffos_v2/lib/student/kalypso/weapons/
tmi2_fluffos_v2/lib/u/l/leto/
tmi2_fluffos_v2/lib/u/l/leto/cmds/
tmi2_fluffos_v2/lib/www/errors/
tmi2_fluffos_v2/lib/www/gateways/
tmi2_fluffos_v2/lib/www/images/
tmi2_fluffos_v2/old/
tmi2_fluffos_v2/win32/
/*
 * alias user command
 * this is from portals
 * One of them wrote it, again.
 * In the course of time it grew into part of the TMI-2 mudlib, via the
 * old TMI mudlib. In any event, you should leave this header on. Moby
 * added it in 4-9-93.
 */

// Leto added a feature that will add $* at the end, if it wasn't already
// defined before. 05-04-95 (or was it 04-05-95 ? :)
// Changed $* to look for $, since you can have $1,$2 etc. Leto 05-06

#include <daemons.h>
#include <mudlib.h>

inherit DAEMON ;

void print_aliases(mapping n, mapping x)
{
   int i;
   string *tmp;

   tmp = keys(n);
   if(sizeof(tmp)) {
      write("Normal Aliases:\n");
      tmp = sort_array(tmp, "sort_keys", this_object());
 
      for(i = 0; i < sizeof(tmp); i++)
         printf("   %-15s %s\n",tmp[i],n[tmp[i]]);
      }
 
   tmp = keys(x);
   if(sizeof(tmp)) {
      write("Xverb Aliases:\n");
      tmp = sort_array(tmp, "sort_keys", this_object());
 
      for(i = 0; i < sizeof(tmp); i++)
         printf("   %-15s %s\n",tmp[i],x[tmp[i]]);
   } else if(!sizeof(keys(n)))  
      write("   No aliases defined.\n");
}

int cmd_alias(string str) {
  int i, sl;
  int index;
  string verb,cmd,*elements;
  mapping alias;
  object act_ob;
  
  act_ob = previous_object();
  
  if(str == "-global")
  {
    print_aliases((mapping)GA_SERVER_D->query_global_aliases(),
      (mapping)GA_SERVER_D->query_global_xaliases());
    return 1;
  }
  if(str == "-clear")
    {
      act_ob->clear_aliases();
      return 1;
    }

  alias = (mapping) act_ob->query_aliases();
  if (!alias) alias = ([]);
  if(!str)
    {
      elements = keys (alias);
      if(!elements || !sizeof(elements))
	{
	  write("No aliases defined.\n");
	  return 1;
	}
      print_aliases((mapping)act_ob->query_nalias(),
         (mapping)act_ob->query_xalias());
      return 1;
    }
  
 
  //  Strip out the leading spaces in the command request

  while(str[0] == ' ')   str = str[1..<1];
 

  if(sscanf(str,"%s %s",verb,cmd) == 2)
    {
      if (!verb || verb == "" || verb == " ") {
	  notify_fail("Sorry, you must specify a verb.\n");
      return 0; }
 
      if(verb=="alias")
	{
	  notify_fail ("Sorry, you can't alias 'alias'.\n");
	  return 0;
	}

      if(verb=="unalias") {
	notify_fail("Sorry, you cannot alias 'unalias'.\n") ;
	return 0 ;
      }

if(strsrch(cmd,"$")==-1) cmd = cmd + " $*";
      if (environment(this_player())) // it's probably not a new player
	if (!alias[verb])
	  write("Alias: "+verb+" ("+cmd+") added.\n");
	else
	  write("Alias: "+verb+" ("+cmd+") altered.\n");
      act_ob->add_alias(verb,cmd);
      return 1;
    }
  if(!alias[str])
    {
      write("The alias "+str+" wasn't found.\n");
      return 1;
    }
  printf("%-15s%s\n",str,alias[str]);
  return 1;
}

static int sort_keys(string a, string b) {  return strcmp(a, b);  }


string help()
{
  return(@HELP
Flags accepted:
	-clear		Clears all aliases.
	-global		Show the global alises.
  
alias			View current aliases.
alias <alias> <command>	Set the verb alias to execute command.
alias <alias>		Check the value of <alias>
unalias <alias>		Remove <alias> from the alias list.
  
Substitution variable that exist are:
     $# - Where # is the number of the word after the verb to substitute.
     $* - Will be substituted with everything after the verb.

Prefixing the alias' verb with a $ allows you to set up a verb that does not.
require a space after it. i.e. 'alias $' sat $' sat $*' will allow you to do says as:
'Hey! This is most Stufly!

Look at default aliases for examples.
Note: $* is added to all aliases, unless it was part of it.
HELP
  );
}