gurba-0.40/
gurba-0.40/bin/
gurba-0.40/lib/
gurba-0.40/lib/cmds/guild/fighter/
gurba-0.40/lib/cmds/monster/
gurba-0.40/lib/cmds/race/catfolk/
gurba-0.40/lib/cmds/race/dwarf/
gurba-0.40/lib/cmds/verb/
gurba-0.40/lib/daemons/data/
gurba-0.40/lib/data/boards/
gurba-0.40/lib/data/messages/
gurba-0.40/lib/data/players/
gurba-0.40/lib/design/
gurba-0.40/lib/domains/gurba/
gurba-0.40/lib/domains/gurba/guilds/fighter/
gurba-0.40/lib/domains/gurba/monsters/
gurba-0.40/lib/domains/gurba/objects/armor/
gurba-0.40/lib/domains/gurba/objects/clothing/
gurba-0.40/lib/domains/gurba/objects/weapons/
gurba-0.40/lib/domains/gurba/vendors/
gurba-0.40/lib/kernel/cmds/admin/
gurba-0.40/lib/kernel/daemons/
gurba-0.40/lib/kernel/include/
gurba-0.40/lib/kernel/lib/
gurba-0.40/lib/kernel/net/
gurba-0.40/lib/kernel/sys/
gurba-0.40/lib/logs/
gurba-0.40/lib/pub/
gurba-0.40/lib/std/modules/languages/
gurba-0.40/lib/std/races/
gurba-0.40/lib/std/races/monsters/
gurba-0.40/lib/wiz/fudge/
gurba-0.40/lib/wiz/spud/
gurba-0.40/src/host/beos/
gurba-0.40/src/host/pc/res/
gurba-0.40/src/kfun/
gurba-0.40/src/lpc/
gurba-0.40/src/parser/
gurba-0.40/tmp/
/* Handle both system wide aliases and wizard aliases. */

mapping player_alias;
mapping wizard_alias;

void restore_me( void );
void save_me( void );

void create( void ) {
  player_alias = ([ ]);
  wizard_alias = ([ ]);
  restore_me();
}

void restore_me( void ) {
  restore_object( "/daemons/data/alias_d.o" );

}

void save_me( void ) {
  save_object( "/daemons/data/alias_d.o" );
}

void add_player_alias( string cmd, string alias ) {
  if( player_alias == 0 )
    player_alias = ([ ]);

  player_alias[cmd] = alias;
  write( "Player alias " + cmd + " added." );
  save_me();
}

void remove_player_alias( string cmd ) {
  if( player_alias == 0 )
    player_alias = ([ ]);

  player_alias[cmd] = 0;
  write( "Player alias " + cmd + " removed." );
  save_me();
}

void add_wizard_alias( string cmd, string alias ) {
  if( wizard_alias == 0 )
    wizard_alias = ([ ]);

  wizard_alias[cmd] = alias;
  write( "Wizard alias " + cmd + " added." );
  save_me();
}

void remove_wizard_alias( string cmd ) {
  if( wizard_alias == 0 )
    wizard_alias = ([ ]);

  wizard_alias[cmd] = 0;
  write( "Wizard alias " + cmd + " removed." );
  save_me();
}

int is_alias( string cmd ) {

  if( player_alias == 0 )
    player_alias = ([ ]);

  if( wizard_alias == 0 )
    wizard_alias = ([ ]);

  if( player_alias[cmd] != 0 )
    return( 1 );

  if( SECURE_D->query_wiz( this_player()->query_name() ) ) {
    if( wizard_alias[cmd] != 0 )
      return( 1 );
  }

  return( 0 );
}

string query_alias( string cmd ) {
  if( player_alias == 0 )
    player_alias = ([ ]);

  if( wizard_alias == 0 )
    wizard_alias = ([ ]);

  if( player_alias[cmd] != 0 )
    return( player_alias[cmd] );

  if( SECURE_D->query_wiz( this_player()->query_name() ) ) {
    if( wizard_alias[cmd] != 0 )
      return( wizard_alias[cmd] );
  }
  return( 0 );
}

string do_expand( string alias, string arg ) {
  string *args;
  int i;

  alias = replace_string( alias, "$*", arg );
    
  if( arg != 0 && arg != "" ) {
    args = explode( arg, " " );
    
    for( i = 0; i < sizeof( args ); i++ ) {
      alias = replace_string( alias, "$"+i, args[i] );
    }
  } 
  return( alias );
}

string expand_alias( string cmd ) {
  string alias;
  string arg;

  if( cmd == 0 || cmd == "" )
    return( "" );

  arg = "";

  sscanf( cmd, "%s %s", cmd, arg );

  if( is_alias( cmd ) ) {
    alias = query_alias( cmd );
    
    return( do_expand( alias, arg ) );
  } else {
    if( arg == 0 || arg == "" )
      return( cmd );
    return( cmd + " " + arg );
  }
}