Root clases: FILE -- generic unix file stuff sub expand_path { # pathname NETSERVER -- socket code for being a network server sub startlistener { # Socket fd, port# CONFIGFILE -- generic config file handling (replace w/profile someday) sub readconfig { STASH -- tied hash with arbitrary sized data and initial "section" key. HTML -- generic HTML generation code sub print_html_head { # title sub print_status_page { # title HTTP -- generic HTTP processing code sub getmimeheaders { # fd, return (len, string) sub getmimecontent { # fd, return string sub getpostfields { # line server classes: HTTP::SERVER -- code for server generics sub process_get { # database, path sub process_post { # database, path, FD sub process_debug_post { sub http_handle_unknown { sub http_handle_get { sub http_handle_post { sub http_handle_common { sub http_bad_request { # type, value sub process_server_get { #?? kittenweb classes: KITTENWEB::RENDER -- take a string and massage it. sub renderempty { # text, name sub renderitemize { # rawpagedata sub rendersafe { # rawpagedata sub renderhtml { # rawpagedata sub replaceword { # db, word, pw sub renderpage { # db, raw page data, pagename, password sub getrefs { # pagedata KITTENWEB -- code that handles the KittenWeb features sub commitpage { # rawpagedata, db, pagename sub commitlink { # rawpagedata, db, pagename sub buildlookup { sub doeditlinks { sub doedit { sub printeditpage { # db, page name, pw data sub printeditlinks { # db, page name, pw data sub printallpages { # db sub printrefspage { # db, page name, pw data sub main { sub checkpassword { # database tag content{pw} KITTENWEB::BULKDATA -- bulk data features sub makebackup { # db sub loadbackup { #db, dir sub rebuild_invrefs { # database KITTENWEB::REPORT -- generate report pages sub report_expandword { # orig word sub report_replaceword { # word found sub dumpreport { # database, tag