#include <lib.h>
#include <daemons.h>

inherit LIB_DAEMON;

varargs int cmd(string str){
    string tmp, thing, file, *inheriteds;
    object ob;
    if(!str || sscanf(str,"%s %s",file,thing) != 2){
        write("Syntax: inherits FILE THING");
        return 1;
    }

    ob = get_object(thing);
    if(!ob){
        write("Sorry I can't find that thing.");
        return 1;
    }
    thing = (ob->GetShort() || thing);

    if(last(file,2) == ".c") file = truncate(file,2);

    tmp = DEFINES_D->GetDefine(file);

    if(tmp) file = tmp;

    write("Checking " + identify(ob) + " for inheritance of " +
      file + " , just a moment...");
    if(file){
        if(inherits(file, ob)){
            write(thing+" inherits "+file+".");
            return 1;
        }
        inheriteds = deep_inherit_list(ob);
        foreach(string item in inheriteds){
            if(!grepp(item, file)) inheriteds -= ({ item });
        }
    }
    if(!sizeof(inheriteds)){
        write("No matches found. "+ thing +
                " does not appear to inherit that file.");
        return 1;
    }
    write("Exact match not found, but here are some possible matches: ");
    write(implode(inheriteds,"\n"));
    return 1;
}

void help()
{
    write("Syntax: inherits FILE THING\n\n"+
    "Tries to match FILE with the list of inherited files "+
    "for THING.\n\nSee also: showtree, findobj, findfun, showfuns");
}
