/* Copyright (C) 1991, Marcus J. Ranum. All rights reserved. */ #ifndef lint static char RCSid[] = "$Header: /usr/users/mjr/hacks/umud/CMD/RCS/drop.c,v 1.2 91/09/19 12:55:34 mjr Exp $"; #endif /* configure all options BEFORE including system stuff. */ #include "config.h" #include "mud.h" #include "match.h" #include "vars.h" /* ARGSUSED */ cmd_drop(argc,argv,who,aswho) int argc; char *argv[]; char *who; char *aswho; { int x; char *loc; char *dest; char ob[MAXOID]; char *used; char work[MAXOID]; /* Work buffer demanded by ut_dropto() */ loc = ut_loc(who); for(x = 1; x < argc; x++) { if(matchinv(who,argv[x],1,MTCH_UNIQ|MTCH_QUIET,ob) && matchinv(who,argv[x],1,MTCH_FRST,ob)) continue; dest = ut_dropto(ob,loc,work); used = ut_getatt(who,0,typ_obj,var_using,(char *)0); if(used == (char *)0 || strcmp(used,ob)) { if(ut_listdel(who,who,var_cont,ob)) return(1); } else { if(ut_unset(who,who,var_using)) return(1); } if(ut_set(who,ob,typ_obj,var_loc,dest)) return(1); if(ut_listadd(who,dest,var_cont,ob)) return(1); if(!activate(ACTIV_PONLY,who,ob,loc,var_drop,argc,argv)) say(who,"dropped ",ut_name(ob),".\n",(char *)0); if(!activate(ACTIV_ECAST,who,ob,loc,var_odrop,argc,argv)) ut_roombcast(loc,who,ut_name(who)," dropped ",ut_name(ob),".\n",(char *)0);; } return(0); }