inherit "/std/object";
void setup() {
set_name("domainer");
set_long(
"This object shows you all of the creators who are in each domain and those "+
"that don't have directorys, are not cretors and ones who are not in a "+
"domain at all.\nThe command to view all this is \"info\".\n");
} /* setup() */
void init() {
add_action("do_info", "info");
} /* init() */
int do_info(string str) {
string *creators,
*domains,
*mem,
*cre_not,
bit;
mapping no_dir, not_creator;
int i, j, cols;
cols = (int)this_player()->query_cols();
creators = get_dir("/w/");
domains = get_dir("/d/");
no_dir = ([ ]);
not_creator = ([ ]);
cre_not = ({ });
for (i=0;i<sizeof(creators);i++)
if (file_size("/w/"+creators[i]) != -2) {
creators = delete(creators, i, 1);
i--;
} else if (!"/secure/login"->test_creator(creators[i])) {
cre_not += ({ creators[i] });
creators = delete(creators, i, 1);
i--;
}
for (i=0;i<sizeof(domains);i++) {
mem = (string *)("/d/"+domains[i]+"/master")->query_members() +
({ (string *)("/d/"+domains[i]+"/master")->query_lord() });
/* remove the members from the creators domain. */
creators -= mem;
/* Check each one... */
for (j=0;j<sizeof(mem);j++) {
if (file_size("/w/"+mem[j]) != -2)
no_dir[mem[j]] = domains[i];
if (!"/secure/login"->test_creator(mem[j]))
not_creator[mem[j]] = domains[i];
}
/* Ok... print the membership list. */
bit = "Members of "+domains[i]+" are: ";
printf("%s%-=*s\n", bit, cols-strlen(bit), implode(mem, ", ")+".");
}
if (sizeof(no_dir)) {
write("These creators are in domains but do not have a directory:\n");
printf(" %-=*s", cols-5, implode(keys(no_dir), ", ")+".\n");
}
if (sizeof(not_creator)) {
write("These creators are in domains but are not actually creators:\n");
printf(" %-=*s", cols-5, implode(keys(not_creator), ", ")+".\n");
}
if (sizeof(creators)) {
write("These creators are not in any domain:\n");
printf(" %-=*s", cols-5, implode(creators, ", ")+".\n");
}
if (sizeof(cre_not)) {
write("These creators have a directory, but are not creators...:\n");
printf(" %-=*s", cols-5, implode(cre_not, ", ")+".\n");
}
return 1;
} /* do_info() */