//	File	:  /cmds/xtra/_clean.c
//	Creator	:  Unknown
//	Updated	:  Watcher@TMI   (4/10/93)
//
//	This command cleans the inventory of a selected object.
 
#include <mudlib.h>
 
inherit DAEMON;
#define SYNTAX	"Syntax: clean [-d] [object]\n"
 
int cmd_clean(string str) {
   object *obs, ob;
   int i, flag;
    
   if(!str || str == "")  str = "me";
 
   if(sscanf(str, "-d %s", str) == 1)  flag = 1;
 
   str = lower_case(str);
 
   ob = get_object( str );
 
   if(!ob) {
     notify_fail("Clean: Could not locate " + str + ".\n");
   return 0; }
 
   if(flag && interactive(ob) &&
      !adminp(geteuid(this_player()))) {
   	notify_fail("Clean: You do not have permissions to destruct " +
		    "that object.\n");
   return 0; }
 
   obs = all_inventory(ob);
 
   if(!obs || !sizeof(obs)) {
     notify_fail("Clean: " + identify(ob) + " has no inventory.\n");
   return 0; }
 
   write("Cleaning " + (flag ? "and destructing " : "") +
 	 identify(ob) + ".\n");
 
    for (i=0; i<sizeof(obs); i++) {
        if (!living(obs[i]) && !obs[i]->id("board")) {
            write ("  Destructing:  "+file_name(obs[i])+"\n");
            obs[i]->remove();
	    if(obs[i])  destruct(obs[i]);
        }
    }
 
   if(flag) {
     ob->remove();
     if(ob)  destruct(ob);
   }
 
return 1; }
int help() {
 
   write( SYNTAX + "\n" +
     "This command removes all non-living objects in the inventory of\n" +
     "requested object. If the \"d\" flag is used, it will also remove\n" +
     "the object after it has been cleaned. Only admins may use this\n"+
     "option on interactive objects. If no argument is given, the clean\n"+
     "command will clean the inventory of the command giver.\n");
 
return 1; }