// file : cmds/refs/_ilist.c // Shows all files inherited by a particular object // Written by Guile@Ultimud. // Ported to TMI-2 by Guile // #include <mudlib.h> #include <daemons.h> inherit DAEMON; inherit REF_D; #define SYNTAX "Syntax: ilist [-R -T] <object>\n" int show_tree(object ob, int indent); int cmd_ilist(string str) { object ob; string file, *files; int deep_list, i, s; notify_fail(SYNTAX); if(!str) return 0; seteuid(geteuid(previous_object())); if(sscanf(str, "-R %s", file)) deep_list = 1; else if(sscanf(str, "-T %s", file)) deep_list = 2; else file = str; ob = ref_ob(file); if(!ob || !objectp(ob)) { notify_fail("Couldn't find object.\n"); return 0; } write(wrap("Files inherited by " + dump_variable(ob))); if(!deep_list) files = inherit_list(ob); else if(deep_list == 1) files = deep_inherit_list(ob); else if(deep_list == 2) return show_tree(ob, 1); for(i = 0, s = sizeof(files); i < s; i ++) printf(" %d: %s\n", i + 1, files[i]); return 1; } // do_cmd // show_tree() int show_tree(object ob, int indent) { string *list; int i, s; object obj; s = sizeof(list = inherit_list(ob)); if(!s) return 1; for(i = 0; i < s; i ++) { printf("%" + (indent * 4) + "s%d: %s\n", "", i + 1, list[i]); if(catch(call_other(list[i], "???"))) { write("Failed to load: " + list[i] + "\n"); return 1; } obj = find_object(list[i]); show_tree(obj, indent + 1); } return 1; } // show_tree int help(string str) { write(SYNTAX); write(@END Shows the files inherited by another file. If the object is not loaded, this command will not work. Using the optional flag -R will show all files inherited by this object. If the flag -T is used, an inheritance tree will be shown. See also: ref, refs, call, move END ); return 1; } // do_help