~kris/9p

glenda

296dda08f6590a7a13b87ec219e1dd8c201a8d54 — Sean Hinchee 8 years ago 26693bb
adding lookman command!
A glenda => glenda +0 -0
A glenda.cfg.bak => glenda.cfg.bak +14 -0
@@ 0,0 1,14 @@
{"Feeds":[{"Feed":{"nickname":"","title":"hg/plan9front Changelog","description":"hg/plan9front Changelog","link":"http://code.9front.org/hg/plan9front/","updateurl":"http://code.9front.org/hg/plan9front/rss-log","image":{"title":"","url":"","height":0,"width":0},"items":[{"title":"g: revert accidental change, document missing file type","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e10f897e73798\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003etip\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#103;\u0026#108;\u0026#101;\u0026#110;\u0026#100;\u0026#97;\u0026#64;\u0026#99;\u0026#105;\u0026#114;\u0026#110;\u0026#111;\u0026#46;\u0026#108;\u0026#111;\u0026#99;\u0026#97;\u0026#108;\u0026#100;\u0026#111;\u0026#109;\u0026#97;\u0026#105;\u0026#110;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003eg: revert accidental change, document missing file type\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003erc/bin/g\u003cbr /\u003esys/man/1/grep\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/10f897e73798","date":"2018-02-27T10:08:23-05:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/10f897e73798","enclosures":null,"read":false},{"title":"games/mix: fix incorrect line numbers","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003eeb9fe7e53905\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#103;\u0026#108;\u0026#101;\u0026#110;\u0026#100;\u0026#97;\u0026#64;\u0026#99;\u0026#105;\u0026#114;\u0026#110;\u0026#111;\u0026#46;\u0026#108;\u0026#111;\u0026#99;\u0026#97;\u0026#108;\u0026#100;\u0026#111;\u0026#109;\u0026#97;\u0026#105;\u0026#110;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003egames/mix: fix incorrect line numbers\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003erc/bin/g\u003cbr /\u003esys/src/games/mix/mix.c\u003cbr /\u003esys/src/games/mix/mix.h\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/eb9fe7e53905","date":"2018-02-26T22:39:49-05:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/eb9fe7e53905","enclosures":null,"read":false},{"title":"ns: remove left over vararg check pragma","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e5f45d5f27853\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003ens: remove left over vararg check pragma\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/src/cmd/ns.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/5f45d5f27853","date":"2018-02-26T19:58:54+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/5f45d5f27853","enclosures":null,"read":false},{"title":"vmx: allow setting mac address of using ea:nnnnnnnnnnnn! prefix, use genrandom() to generate mac globally unique mac address","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e3509dbfef951\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003evmx: allow setting mac address of using ea:nnnnnnnnnnnn! prefix, use genrandom() to generate mac globally unique mac address\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/man/1/vmx\u003cbr /\u003esys/src/cmd/vmx/virtio.c\u003cbr /\u003esys/src/cmd/vmx/vmx.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/3509dbfef951","date":"2018-02-25T21:11:41+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/3509dbfef951","enclosures":null,"read":false},{"title":"devloopback: reassign device letter from #X to #λ to avoid collision with devvmx","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e449fb7d19e25\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003edevloopback: reassign device letter from #X to #λ to avoid collision with devvmx\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/man/3/loopback\u003cbr /\u003esys/src/9/port/devloopback.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/449fb7d19e25","date":"2018-02-25T19:06:37+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/449fb7d19e25","enclosures":null,"read":false},{"title":"kernel: properly handle bad attach specifiers","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003efac8441d65bb\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003ekernel: properly handle bad attach specifiers\u003cbr/\u003e\n\u003cbr/\u003e\n- only accept decimal for numeric device id's\u003cbr/\u003e\n- exclude negative device id's\u003cbr/\u003e\n- device id's out of range yield Enodev\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/src/9/ip/devip.c\u003cbr /\u003esys/src/9/pc/devvga.c\u003cbr /\u003esys/src/9/port/devaudio.c\u003cbr /\u003esys/src/9/port/devbridge.c\u003cbr /\u003esys/src/9/port/devether.c\u003cbr /\u003esys/src/9/port/devflash.c\u003cbr /\u003esys/src/9/port/devloopback.c\u003cbr /\u003esys/src/9/port/devsd.c\u003cbr /\u003esys/src/9/port/devsdp.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/fac8441d65bb","date":"2018-02-25T17:11:18+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/fac8441d65bb","enclosures":null,"read":false},{"title":"mines: documentation and chronometric control of supernatural apparitions","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e04d9a137960e\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#97;\u0026#105;\u0026#106;\u0026#117;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003emines: documentation and chronometric control of supernatural apparitions\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/man/1/games\u003cbr /\u003esys/man/1/mines\u003cbr /\u003esys/src/games/mines/mines.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/04d9a137960e","date":"2018-02-25T03:38:25Z","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/04d9a137960e","enclosures":null,"read":false},{"title":"ghost in the minesweeper shell","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003ebe05d2ec0a31\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#97;\u0026#105;\u0026#106;\u0026#117;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003eghost in the minesweeper shell\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/src/games/mines/dat.h\u003cbr /\u003esys/src/games/mines/fns.h\u003cbr /\u003esys/src/games/mines/ghost.c\u003cbr /\u003esys/src/games/mines/mines.c\u003cbr /\u003esys/src/games/mines/mkfile\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/be05d2ec0a31","date":"2018-02-25T02:50:24Z","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/be05d2ec0a31","enclosures":null,"read":false},{"title":"devether: remove (unimplemented) detach, allow device creation on attach","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e02da29d43bcb\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003edevether: remove (unimplemented) detach, allow device creation on attach\u003cbr/\u003e\n\u003cbr/\u003e\nwe allow devether to create ethernet cards on attach. this is useull\u003cbr/\u003e\nfor virtual cards like the sink driver, so we can create a sink\u003cbr/\u003e\nby simply: bind -a '#l2:sink ea=112233445566' /net\u003cbr/\u003e\n\u003cbr/\u003e\nthe detach routine was never called, so remove it from the few drivers\u003cbr/\u003e\nthat attempted to implement it.\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/src/9/pc/etherm10g.c\u003cbr /\u003esys/src/9/pc/wavelan.c\u003cbr /\u003esys/src/9/port/devether.c\u003cbr /\u003esys/src/9/port/etherif.h\u003cbr /\u003esys/src/9/port/netif.c\u003cbr /\u003esys/src/9/xen/etherxen.c\u003cbr /\u003esys/src/9/zynq/dat.h\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/02da29d43bcb","date":"2018-02-25T03:42:38+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/02da29d43bcb","enclosures":null,"read":false},{"title":"devip: fix crash on negative dev id on attach","summary":"\n              \n\t\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003echangeset\u003c/th\u003e\n\t\t\u003ctd\u003e1d539e27eac8\u003c/td\u003e\n              \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;\"\u003etag\u003c/th\u003e\n\t\t\u003ctd\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003euser\u003c/th\u003e\n\t\t\u003ctd\u003e\u0026#99;\u0026#105;\u0026#110;\u0026#97;\u0026#112;\u0026#95;\u0026#108;\u0026#101;\u0026#110;\u0026#114;\u0026#101;\u0026#107;\u0026#64;\u0026#102;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#102;\u0026#102;\u0026#46;\u0026#110;\u0026#101;\u0026#116;\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003edescription\u003c/th\u003e\n\t\t\u003ctd\u003edevip: fix crash on negative dev id on attach\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003cth style=\"text-align:left;vertical-align:top;\"\u003efiles\u003c/th\u003e\n\t\t\u003ctd\u003esys/src/9/ip/devip.c\u003cbr /\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/table\u003e\n\t","content":"","category":"","link":"http://code.9front.org/hg/plan9front/rev/1d539e27eac8","date":"2018-02-25T03:32:29+01:00","DateValid":false,"id":"http://code.9front.org/hg/plan9front/rev/1d539e27eac8","enclosures":null,"read":false}],"itemmap":{"http://code.9front.org/hg/plan9front/rev/02da29d43bcb":{},"http://code.9front.org/hg/plan9front/rev/04d9a137960e":{},"http://code.9front.org/hg/plan9front/rev/10f897e73798":{},"http://code.9front.org/hg/plan9front/rev/1d539e27eac8":{},"http://code.9front.org/hg/plan9front/rev/3509dbfef951":{},"http://code.9front.org/hg/plan9front/rev/449fb7d19e25":{},"http://code.9front.org/hg/plan9front/rev/5f45d5f27853":{},"http://code.9front.org/hg/plan9front/rev/be05d2ec0a31":{},"http://code.9front.org/hg/plan9front/rev/eb9fe7e53905":{},"http://code.9front.org/hg/plan9front/rev/fac8441d65bb":{}},"refresh":"2018-02-28T04:59:28.516724632Z","unread":10},"Recent":["ns: remove left over vararg check pragma","games/mix: fix incorrect line numbers","g: revert accidental change, document missing file type"]},{"Feed":{"nickname":"","title":"glenda feed","description":"List of commits for the glenda repository.","link":"https://bitbucket.org/","updateurl":"https://bitbucket.org/henesy/glenda/rss?token=64dd75062016d504f073a1a8cac44e16","image":{"title":"","url":"","height":0,"width":0},"items":[{"title":"time fix (thanks danny)","summary":"\n            time fix (thanks danny)\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/070310f25403/x/mux/man.go\"\u003e\n                          x/mux/man.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/070310f25403","date":"2018-02-18T00:25:57Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/070310f25403","enclosures":null,"read":false},{"title":"added unsubscribe; added regular dump tied to Listener()","summary":"\n            added unsubscribe; added regular dump tied to Listener()\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/84d1948f9c2d/mux.go\"\u003e\n                          mux.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/84d1948f9c2d/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/84d1948f9c2d","date":"2018-02-11T22:27:45Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/84d1948f9c2d","enclosures":null,"read":false},{"title":"test","summary":"\n            test\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/78879b25654f/TODO\"\u003e\n                          TODO\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/78879b25654f","date":"2018-02-10T08:11:22Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/78879b25654f","enclosures":null,"read":false},{"title":"hopefully rss works now, hopefully","summary":"\n            hopefully rss works now, hopefully\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/e32f0ddc0fe1/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/e32f0ddc0fe1","date":"2018-02-10T08:09:48Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/e32f0ddc0fe1","enclosures":null,"read":false},{"title":"beer update","summary":"\n            beer update\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/47629486c43a/TODO\"\u003e\n                          TODO\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/47629486c43a/mux.go\"\u003e\n                          mux.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/47629486c43a/x/mux/misc.go\"\u003e\n                          x/mux/misc.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/47629486c43a","date":"2018-02-09T02:01:56Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/47629486c43a","enclosures":null,"read":false},{"title":"revised foods, hope it works","summary":"\n            revised foods, hope it works\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/55c4d0ac9016/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/55c4d0ac9016/x/mux/config.go\"\u003e\n                          x/mux/config.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/55c4d0ac9016","date":"2018-02-08T01:02:43Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/55c4d0ac9016","enclosures":null,"read":false},{"title":"fixed(?) a bug(?) in feed subscription","summary":"\n            fixed(?) a bug(?) in feed subscription\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/381ed631d47b/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/381ed631d47b","date":"2018-02-01T15:47:03Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/381ed631d47b","enclosures":null,"read":false},{"title":"tweaks working on subscribe","summary":"\n            tweaks working on subscribe\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/67a1d41fc1fc/TODO\"\u003e\n                          TODO\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/67a1d41fc1fc/main.go\"\u003e\n                          main.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/67a1d41fc1fc/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/67a1d41fc1fc/x/mux/config.go\"\u003e\n                          x/mux/config.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/67a1d41fc1fc","date":"2018-02-01T01:45:40Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/67a1d41fc1fc","enclosures":null,"read":false},{"title":"fixed a bug in feed subscription","summary":"\n            fixed a bug in feed subscription\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/bf0796c6b395/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/bf0796c6b395","date":"2018-01-31T07:36:41Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/bf0796c6b395","enclosures":null,"read":false},{"title":"fixed a bug in man url processing. switched to man.postnix.us. (thanks lewellyn❣)","summary":"\n            fixed a bug in man url processing. switched to man.postnix.us. (thanks lewellyn❣)\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/7dcfdc94153c/x/mux/man.go\"\u003e\n                          x/mux/man.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/7dcfdc94153c","date":"2018-01-31T07:29:10Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/7dcfdc94153c","enclosures":null,"read":false},{"title":"tweaks","summary":"\n            tweaks\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/2fbf8900bcc5/x/mux/man.go\"\u003e\n                          x/mux/man.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/2fbf8900bcc5","date":"2018-01-30T07:44:08Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/2fbf8900bcc5","enclosures":null,"read":false},{"title":"ideas","summary":"\n            ideas\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/b049cb879dd6/TODO\"\u003e\n                          TODO\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/b049cb879dd6","date":"2018-01-30T07:37:03Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/b049cb879dd6","enclosures":null,"read":false},{"title":"improved g!man functionality and search formatting. (thanks lewellyn❣)","summary":"\n            improved g!man functionality and search formatting. (thanks lewellyn❣)\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/31f3eac6ee22/x/mux/man.go\"\u003e\n                          x/mux/man.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/31f3eac6ee22","date":"2018-01-30T07:34:42Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/31f3eac6ee22","enclosures":null,"read":false},{"title":"added rudimentary man support","summary":"\n            added rudimentary man support\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/237e95849f58/TODO\"\u003e\n                          TODO\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/237e95849f58/mux.go\"\u003e\n                          mux.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/237e95849f58/x/mux/commits.go\"\u003e\n                          x/mux/commits.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/237e95849f58/x/mux/man.go\"\u003e\n                          x/mux/man.go\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/237e95849f58","date":"2018-01-30T07:14:30Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/237e95849f58","enclosures":null,"read":false},{"title":"hr","summary":"\n            hr\n            \n              \n                \n                  \u003cul\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/d85561d55ea1/LICENSE\"\u003e\n                          LICENSE\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                      \n                      \u003cli\u003e\n                        \u003ca href=\"https://bitbucket.org/henesy/glenda/src/d85561d55ea1/LICENSE-disgord\"\u003e\n                          LICENSE-disgord\n                        \u003c/a\u003e\n                      \u003c/li\u003e\n                    \n                  \u003c/ul\u003e\n                \n              \n            \n          ","content":"","category":"","link":"https://bitbucket.org/henesy/glenda/commits/d85561d55ea1","date":"2018-01-30T05:25:16Z","DateValid":false,"id":"https://bitbucket.org/henesy/glenda/commits/d85561d55ea1","enclosures":null,"read":false}],"itemmap":{"https://bitbucket.org/henesy/glenda/commits/070310f25403":{},"https://bitbucket.org/henesy/glenda/commits/237e95849f58":{},"https://bitbucket.org/henesy/glenda/commits/2fbf8900bcc5":{},"https://bitbucket.org/henesy/glenda/commits/31f3eac6ee22":{},"https://bitbucket.org/henesy/glenda/commits/381ed631d47b":{},"https://bitbucket.org/henesy/glenda/commits/47629486c43a":{},"https://bitbucket.org/henesy/glenda/commits/55c4d0ac9016":{},"https://bitbucket.org/henesy/glenda/commits/67a1d41fc1fc":{},"https://bitbucket.org/henesy/glenda/commits/78879b25654f":{},"https://bitbucket.org/henesy/glenda/commits/7dcfdc94153c":{},"https://bitbucket.org/henesy/glenda/commits/84d1948f9c2d":{},"https://bitbucket.org/henesy/glenda/commits/b049cb879dd6":{},"https://bitbucket.org/henesy/glenda/commits/bf0796c6b395":{},"https://bitbucket.org/henesy/glenda/commits/d85561d55ea1":{},"https://bitbucket.org/henesy/glenda/commits/e32f0ddc0fe1":{}},"refresh":"2018-02-28T04:56:29.128970845Z","unread":15},"Recent":["hopefully rss works now, hopefully","added unsubscribe; added regular dump tied to Listener()","time fix (thanks danny)"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}
orks now, hopefully","added unsubscribe; added regular dump tied to Listener()","time fix (thanks danny)"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}

dump tied to Listener()","time fix (thanks danny)"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}

hanks danny)"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}
","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}
:["hopefully rss works now, hopefully","added unsubscribe; added regular dump tied to Listener()","time fix (thanks danny)"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}
:[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"407769928448475137","SubID":1}]}

s://bitbucket.org/henesy/glenda/commits/78879b25654f":{},"https://bitbucket.org/henesy/glenda/commits/7dcfdc94153c":{},"https://bitbucket.org/henesy/glenda/commits/b049cb879dd6":{},"https://bitbucket.org/henesy/glenda/commits/bf0796c6b395":{},"https://bitbucket.org/henesy/glenda/commits/d85561d55ea1":{},"https://bitbucket.org/henesy/glenda/commits/e29da20ff55c":{},"https://bitbucket.org/henesy/glenda/commits/e32f0ddc0fe1":{}},"refresh":"2018-02-11T22:26:58.32402767Z","unread":15},"Recent":["","test","hopefully rss works now, hopefully"]}],"Subs":[{"ChanID":"337986157835059201","SubID":0},{"ChanID":"197138317492486144","SubID":1},{"ChanID":"407769928448475137","SubID":1}]}
ChanID":"197138317492486144","SubID":0}]}

ChanID":"407769928448475137","SubID":1}]}

M mux.go => mux.go +3 -1
@@ 32,7 32,9 @@ func init() {
	
	Router.Route("unsubscribe", "Unsubscribe current channel to a given feed id.", Router.Unsubscribe)
	
	Router.Route("man", "Display a given Plan 9 manual page (From 9front for now).", Router.Man)
	Router.Route("man", "Link a given Plan 9 manual page (From 9front for now).", Router.Man)

	Router.Route("lookman", "Search for a string in the Plan 9 manual pages (From 9front for now).", Router.Lookman)

	Router.Route("about", "General information about the bot.", Router.About)
	

M x/README.md => x/README.md +2 -17
@@ 1,19 1,4 @@
# Disgord Experimental
[![Discord Gophers](https://img.shields.io/badge/Discord%20Gophers-%23info-blue.svg)](https://discord.gg/0f1SbxBZjYq9jLBk)
<img align="right" src="https://raw.githubusercontent.com/wiki/bwmarrin/disgord/images/gourd.jpg">
# Utility Libraries

Dis**go**rd is an example of or starting point for creating an easy to use and 
extensible Discord bot using the [DiscordGo](https://github.com/bwmarrin/discordgo) 
library.
mux: Command multiplexer

**This folder contains various experimental packages that can be used with Disgord
or DiscordGo. The packages here may change wildly - so be sure you look for 
changes before pulling in updates.**

If you would like to help the Disgord or DiscordGo package please use 
[this link](https://discordapp.com/oauth2/authorize?client_id=173113690092994561&scope=bot)
to add the official DiscordGo test bot **dgo** to your server. This provides 
indispensable help to this project.

**For help with this program or general Go discussion, please join the [Discord 
Gophers](https://discord.gg/0f1SbxBZjYq9jLBk) chat server.**

M x/mux/commits.go => x/mux/commits.go +3 -2
@@ 15,7 15,7 @@ import (
func Listener() {
	for {
		for p, _ := range Config.Feeds {
			fmt.Print("Updating feed: ", Config.Feeds[p].Feed.Title, "\n")
			//fmt.Print("Updating feed: ", Config.Feeds[p].Feed.Title, "\n")
			// maybe only do at init step?
			str := Config.Feeds[p].Feed.UpdateURL
			feed, err := rss.Fetch(str)


@@ 29,13 29,14 @@ func Listener() {
				additem := true
				for j, _ := range Config.Feeds[p].Recent {
					if Config.Feeds[p].Recent[j] == Config.Feeds[p].Feed.Items[0].Title {
						fmt.Println("Checking Recent ", j, " against ", Config.Feeds[p].Feed.Items[0].Title)
						//fmt.Println("Checking Recent ", j, " against ", Config.Feeds[p].Feed.Items[0].Title)
						additem = false
						break
					}
				}
				if additem {
					// x y z → x y z 0 → y z 0
					fmt.Println("Updating: ", Config.Feeds[p].Feed.Title)
					Config.Feeds[p].Recent = append(Config.Feeds[p].Recent, Config.Feeds[p].Feed.Items[0].Title)
					Config.Feeds[p].Recent = Config.Feeds[p].Recent[1:]
					Notify(p)

A x/mux/lookman/README => x/mux/lookman/README +4 -0
@@ 0,0 1,4 @@
This is a copy of lookman/mkindex modified to handle a lookman index for a unix OS to query.

The lookman script relies on being run in rc with (9) sed. A path can be set for sed.


A x/mux/lookman/junkwords => x/mux/lookman/junkwords +509 -0
@@ 0,0 1,509 @@

a
about
above
according
across
act
action
after
again
against
ago
air
all
allowed
almost
along
already
also
although
always
american
among
an
and
another
any
anything
appear
appears
appropriate
are
area
areas
argument
arguments
around
as
asked
associated
at
available
away
b
back
be
became
because
become
been
before
began
begin
beginning
begins
behind
being
below
best
better
between
big
board
body
both
boy
brought
business
but
by
c
call
called
calls
came
can
cannot
car
case
cause
causes
certain
change
changed
changes
changing
children
church
city
close
college
come
command
commands
community
company
contain
containing
contents
corresponding
could
country
course
court
currently
d
day
days
death
depending
description
development
did
didnt
different
do
does
doesnt
done
dont
door
down
during
e
each
early
economic
effect
either
element
elements
else
empty
encountered
end
enough
even
ever
every
example
examples
experience
eyes
f
face
fact
family
far
federal
feet
felt
few
field
find
first
five
followed
following
follows
for
force
form
found
four
free
from
function
functions
g
gave
general
get
give
given
gives
giving
go
god
going
good
got
government
great
group
h
had
half
hand
hands
has
have
having
he
head
heard
held
help
her
here
high
him
himself
his
history
home
house
how
however
human
i
if
ignored
im
immediately
implemented
important
in
including
individual
information
initial
instead
interest
interpreted
into
is
it
its
itself
j
job
john
just
k
keep
kind
knew
know
known
l
large
last
later
law
least
left
less
let
life
light
like
line
little
local
long
look
looked
love
m
made
major
make
makes
making
man
many
marked
matter
may
me
meaning
means
members
men
might
mind
miss
moment
money
more
most
mr
mrs
much
multiple
must
my
n
name
named
national
need
never
new
next
night
no
nonzero
normal
normally
not
nothing
now
number
numbers
o
of
off
office
often
old
on
once
one
only
open
or
order
other
others
otherwise
our
out
over
own
p
part
passed
past
people
per
perhaps
period
place
placed
point
political
position
possible
power
preceded
present
president
previous
probably
problem
problems
program
public
put
q
question
quite
r
rather
really
reason
represented
respectively
result
right
room
s
said
same
saw
say
school
second
see
seemed
seems
seen
sense
separate
separated
sequence
service
set
sets
several
shall
she
should
show
side
simple
since
single
small
so
social
society
some
something
south
special
specified
start
starting
state
states
still
street
study
subsequent
such
supplied
sure
synopsis
system
t
take
taken
tell
terminated
terminating
than
that
the
their
them
themselves
then
there
these
they
thing
things
think
this
those
though
thought
three
through
thus
to
today
together
told
too
took
top
toward
trailing
treated
true
turn
turned
two
u
under
united
until
up
upon
us
use
used
useful
uses
usually
v
very
w
want
war
was
water
way
we
week
well
went
were
west
what
when
where
whether
which
while
white
who
whole
whose
why
will
with
within
without
word
words
work
world
would
x
y
year
years
yet
york
you
young
your
z
zero
zeros

A x/mux/lookman/lookman => x/mux/lookman/lookman +43 -0
@@ 0,0 1,43 @@
#!/bin/rc
# Usage: lookman key ...
#	prints out the names of all manual pages containing all the given keywords
rfork e

# Don't forget to change the bottom sed replacement path (variables don't work)
sed=/usr/local/plan9port/bin/sed
MIRROR=/usr/share/mirror/plan9front
index=$MIRROR/sys/lib/man/lookman/index
LIB=$MIRROR/sys/man

t1=/tmp/look1.$pid
t2=/tmp/look2.$pid
fn sigexit {
	rm -f $t1 $t2
	exit
}
fn sigint sighup sigterm {
	rm -f $t1 $t2
	exit note
}

*=`{echo $*|tr A-Z a-z|tr -dc 'a-z0-9_. \012'}	# fold case, delete funny chars
if(~ $#* 0){
	echo Usage: lookman key ... >> /dev/stderr
	exit usage
}
look $1 $index | $sed 's/.*	//' | sort -u >$t1
shift
for(i in $*){
	look $i $index | $sed 's/.*	//' | sort -u |
		awk 'BEGIN {
			while (getline < "'$t1'" > 0)
				table[$0] = 1
			}
			{ if (table[$0]) print }
		' > $t2
	mv $t2 $t1
}
sort $t1 | $sed 's;'$LIB'/;;
	s;(.*)/(.*);man \1 \2 # \2(\1);'
exit ''


A x/mux/lookman/mkindex => x/mux/lookman/mkindex +21 -0
@@ 0,0 1,21 @@
#!/bin/rc
# creates the index used by lookman

MIRROR=/usr/share/mirror/plan9front
index=$MIRROR/sys/lib/man/lookman/index
LIB=$MIRROR/sys/man

>index
for(i in $LIB^/[0-9]*/[a-z0-9:]*){
	p=`{echo $i | sed 's@^$LIB^/\([^ ]\)/\([^ ]*\)$@\2(\1)@'}
	deroff -w_ < $i |
	tr 'A-Z' 'a-z' |
	sort -u |
	comm -23 - junkwords |
	sed 's@$@	'$p'@' >>index		# stick file name on end of line
}
sort -o index index

# Drop our index into the plan9front tree
mv index $index


M x/mux/man.go => x/mux/man.go +70 -13
@@ 8,23 8,25 @@ import (
	"io/ioutil"
	"time"
	"strconv"
	"os/exec"
)

var desc []string = []string{
	"Section (1) for general publicly accessible commands.",
	"Section (2) for library functions, including system calls.",
	"Section (3) for kernel devices (accessed via bind (1)).",
	"Section (4) for file services (accessed via mount).",
	"Section (5) for the Plan 9 file protocol.",
	"Section (6) for file formats.",
	"Section (7) for databases and database access programs.",
	"Section (8) for things related to administering Plan 9."}


// Fetch a man page
func (m *Mux) Man(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
	resp := "\n"
	var err error 
	var desc []string = []string{
		"Section (1) for general publicly accessible commands.",
		"Section (2) for library functions, including system calls.",
		"Section (3) for kernel devices (accessed via bind (1)).",
		"Section (4) for file services (accessed via mount).",
		"Section (5) for the Plan 9 file protocol.",
		"Section (6) for file formats.",
		"Section (7) for databases and database access programs.",
		"Section (8) for things related to administering Plan 9."}
	
	var err error

	page := ""
	section := ""
	if len(ctx.Fields) == 3 {


@@ 74,7 76,7 @@ func (m *Mux) Man(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
				}
				resp += string(url) + "\n"
			}
			time.Sleep(50 * time.Millisecond)
			time.Sleep(20 * time.Millisecond)
		}
		
		// No matches


@@ 105,10 107,65 @@ func (m *Mux) Man(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {

// Fetch a summary of a man page
func (m *Mux) Sum(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
	

}

// Call lookman on a given query
func (m *Mux) Lookman(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
	resp := "\n"

	if len(ctx.Fields) >= 2 {
		// g!lookman vmx
		s := ctx.Fields[1:]
		// Match 10 keys max
		MAXKEYS := 10
		args := make([]string, 0, MAXKEYS)
		for p, v := range s {
			if p < MAXKEYS {
				args = append(args, v)
			} else {
				break
			}
		}
	
		// rc or get out
		//fmt.Println("Running: ", args)
		out, err := exec.Command("./x/mux/lookman/lookman", args...).Output()
		fmt.Println("", err)
		if err != nil {
			resp += "No lookman script found."
			goto END
		} else {
			if len(out) < 2 {
				resp += "No matching manual page(s) found."
				goto END
			}
			
			top := true
			str := string(out)
			lines := strings.Split(str, "\n")
			for p, l := range lines {
				if p == len(lines) -1 {
					break
				}
				fields := strings.Split(l, " ")
				i := fields[1]
				page := fields[2]
				
				url := "http://man.postnix.us/9front/" + i + "/" + page + " # " + fields[4] + "\n"
	
				if top {
					top = false
					first, _ := strconv.Atoi(i)
					resp += desc[first-1] + "\n"
				}
				
				resp += url
			}
		}
	}

	END:
	resp += "\n"
	_, _ = ds.ChannelMessageSend(dm.ChannelID, resp)
}