inherit COMMAND_BASE;
string query_usage() {
return "mudlist -dimntsS [mud]\n\n"
" -d[driver] Driver filter\n"
" -i[ip] IP filter\n"
" -m[mudlib] Mudlib filter\n"
" -n[name] Name filter\n"
" -t[type] Type filter\n"
" -s[status] Status filter\n"
" -S[services] Available service filter:\n"
" a - auth n - new\n"
" A - amcp N - NNTP\n"
" c - channel P - FTP\n"
" e - emote r - RCP\n"
" f - finger s - SMTP\n"
" F - file t - tell\n"
" h - HTTP u - ucache\n"
" l - locate w - who\n"
" m - mail\n";
} /* query_usage() */
int cmd(string arg) {
mapping flags = ([ ]);
string *parts, *mud = ({ }), str = "";
notify_fail(query_usage());
if (!arg) {
tell_object(TP, INTERMUD_H -> mudlist(mud, flags));
return 1;
}
// Strip WS
for (int i = 0; i < strlen(arg); i++)
if (arg[i] == ' ') {
if (arg[i + 1] != ' ')
str += sprintf("%c", arg[i]);
} else {
str += sprintf("%c", arg[i]);
}
parts = explode(str, " ");
for (int j = 0; j < sizeof(parts); j++)
if (parts[j][0] == '-')
switch (parts[j][1]) {
default:
tell_object(TP, "Invalid flag.\n"
"Type 'mudlist -h' for help.\n");
return 1;
case 'h':
return 0;
case 'd': case 'i': case 'm':
case 'n': case 't': case 's':
flags[sprintf("%c", parts[j][1])] = parts[j][2..];
break;
case 'S': // Services
flags["S"] = ({ });
for (int k = 2; k < sizeof(parts[j]); k++)
switch (parts[j][k]) {
default:
tell_object(TP, "Invalid intermud service specified.\n"
"Type 'mudlist -h' for help.\n");
return 1;
case 'a': case 'A': case 'c': case 'e': case 'f':
case 'F': case 'h': case 'l': case 'm': case 'n':
case 'N': case 'P': case 'r': case 's': case 't':
case 'u': case 'w':
flags["S"] += ({ sprintf("%c", parts[j][k]) });
}
if (!sizeof(flags["S"]))
map_delete(flags, "S");
}
else
mud += ({ parts[j] });
tell_object(TP, INTERMUD_H -> mudlist(implode(mud, " "), flags));
return 1;
} /* cmd() */