/* /lib/command.c * from the Foundation II LPC Library * handles commands of living objects * created by Descartes of Borg 950323 */ #include <lib.h> #include <daemons.h> #include "command.h" private static int Forced; private static string *SearchPath; /* *************** /lib/command.c driver applies *************** */ static void create() { SearchPath = ({ DIR_PLAYER_CMDS, DIR_SECURE_PLAYER_CMDS, DIR_MAGIC_CMDS }); } static string process_input(string cmd) { return cmd; } /* *************** /lib/command.c command lfuns *************** */ static int cmdAll(string cmd) { string file, verb; mixed tmp; verb = query_verb(); if( !(file = (string)CMD_D->GetCommand(verb, SearchPath)) ) { if( !((int)SOUL_D->do_cmd(verb, cmd)) ) { if(GetClient()) receive("<error>"); return 0; } else return 1; } if( !(tmp = (mixed)call_other(file, "cmd", cmd)) ) { if(GetClient()) receive("<error>"); return 0; } else if( stringp(tmp) ) { message("error", tmp, this_object()); return 1; } else return 1; } /* *************** /lib/command.c lfuns *************** */ int Setup() { enable_commands(); add_action( (: cmdAll :), "", 1); } int eventForce(string cmd) { string err; int res; cmd = process_input(cmd); Forced = 1; err = catch(res = command(cmd)); Forced = 0; if(err) error(err); return res; } /* ********** /lib/command.c data manipulation functions ********** */ string *AddSearchPath(mixed val) { if(stringp(val)) val = ({ val }); else if(!pointerp(val)) error("Bad argument 1 to AddSearchPath()\n"); return (SearchPath = distinct_array(SearchPath + val)); } string *RemoveSearchPath(mixed val) { if(stringp(val)) val = ({ val }); else if(!pointerp(val)) error("Bad argument 1 to RemoveSearchPath()\n"); return (SearchPath -= val); } string *GetSearchPath() { return SearchPath; } int GetForced() { return Forced; } string GetClient() { return 0; }