/* Hamlet, Mar 1996 */ /* Reworked, Aug, 1997. Hamlet again. */ #include <standard.h> #include <cmd.h> #define MENU_OBJECT "/obj/menu" #define MAN_HAND "/obj/handlers/man" inherit CMD_BASE; void setup(){ position = 1; } string query_usage() { return "man [-d] [-a] [-x] <topic>\n"; } string query_short_help() { return "man gives you the manual page for a given topic.\n" "If no argument is given, or the topic is a directory,\n" "the man menu system is entered.\n\n" "If you wish to enter the menu at the point of a document, " "use -d\nIf you wish to view all files that match a topic, " "use -a\nIf you wish to avoid seeing the cute 'help' " "messages at the bottom of each menu, use -x or add " "the property MENU_EXPERT to yourself.\nThis system now " "accepts full unix-style wildcards at any point,\nso " "something like 'man *string*' works.\n"; } static int cmd(string str, object me) { object man_obj; int match_all, enter_menu, menu_expert; int WAS_MATCH = 1; string *bits; if(!str) str = ""; if(member_array(str, ({ "--rebuild", "--reindex", "--REBUILD", "--REINDEX" })) > -1) { MAN_HAND->rebuild(); tell_object(me, "The index will be rebuilt in a few seconds.\n"); return 1; } bits = explode(str, " ") - ({ "" }); while(sizeof(bits) && WAS_MATCH) { switch(bits[0]) { case "-d" : enter_menu = 1; break; case "-a" : match_all = 1; break; case "-x" : menu_expert = 1; break; default : WAS_MATCH = 0; } if(WAS_MATCH) bits = bits[1..]; } str = implode(bits, " "); if(catch(man_obj = clone_object(MENU_OBJECT)) || !man_obj) { notify_fail("It appears that the manual page displayer is broken.\n"); return 0; } man_obj->do_query(MAN_HAND, str, me, match_all, enter_menu, menu_expert); return 1; } /* cmd() */