/* call command, trial out by Turrican for a commands daemon. */
#include <creator.h>
#include <parser.h>
inherit COMMAND_BASE;
#define OPTIONS ({ "off", "call", "call_other", "return", "args", "exec", "heart_beat", })
  
mixed cmd(string arg) {
  string *args;
  int     i, j, trace_arg;
  
  /* ok lets make this clever...
   */
  notify_fail( "Usage: trace <" + implode(OPTIONS, "|") + ">\n" );
  if( !arg ) return 0;
  args = explode( arg, " " );
  
  if( !sizeof( args ) )
    return 0;
  
  for( i = 0; i < sizeof( args ); i++ )
    if( (j = member_array( args[ i ], OPTIONS )) != -1 )
    {
      if( !j )
      {
        trace( 0 );
        write( "Trace off.\n" );
        return 1;
      }
      else
        trace_arg |= ({ 0, 1, 2, 4, 8, 16, 32, 64, 128 })[ j ];
    }
    else if( sscanf( args[ i ], "%d", j ) && j != 64)
      trace_arg |= j;
  trace( trace_arg | 128 );
  write( "Trace level: " + trace_arg + "\n" );
  return 1;
}