/* Copyright (C) 1991, Marcus J. Ranum. All rights reserved. */ #ifndef lint static char RCSid[] = "$Header: /usr/users/mjr/hacks/umud/CMD/RCS/_ldel.c,v 1.1 91/07/04 17:33:23 mjr Rel $"; #endif /* configure all options BEFORE including system stuff. */ #include "config.h" #include "mud.h" #include "match.h" #include "vars.h" /* drop the given item from the named list. */ /* ARGSUSED */ cmd__ldel(ac,av,who,aswho) int ac; char *av[]; char *who; char *aswho; { Obj *op; char *ap; char *ins; char ob[MAXOID]; if(matchlocal(who,av[1],ut_loc(who),MTCH_UNIQ|MTCH_MEOK|MTCH_NONLOC,ob)) return(1); if((op = cache_get(ob)) == (Obj *)0) { say(who,"cannot find object ",av[1],"\n",(char *)0); return(1); } if((ap = objattr(op,av[2],(int *)0)) == (char *)0) { say(who,"no such list #",av[1],".",av[2],"\n",(char *)0); return(1); } if(!attistype(ap,typ_list) || (ap = attdata(ap)) == (char *)0) { say(who,av[1],".",av[2]," is not a list.\n",(char *)0); return(1); } if(lstlook(ap,av[3]) == 0) { say(who,av[3]," isn't in #",av[1],".",av[2],"\n",(char *)0); return(1); } if((ins = lstdel(ap,av[3],(int *)0)) == (char *)0) { say(who,"error dropping #",av[3]," from list.\n",(char *)0); return(1); } if(objsetattr(op,typ_list,av[2],ins)) { say(who,"cannot modify object.\n",(char *)0); return(1); } if(cache_put(op,av[1])) { say(who,"cannot write object ",av[1],"\n",(char *)0); return(1); } return(0); }