summaryrefslogtreecommitdiffstats
path: root/cgi.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Unbreak man.cgi's css directories when CSS_DIR isn't specified.Kristaps Dzonsons2011-12-141-1/+1
|
* implement -C (alternative config file) for apropos(1) and mandocdb(8),Ingo Schwarze2011-12-121-2/+2
| | | | | including various tweaks to the whatis(8) manual; ok kristaps@
* When 303'ing a search directly to a page, remember to specify its manroot.Kristaps Dzonsons2011-12-111-56/+53
| | | | | | Also allow for a CSS_DIR to specify alternate CSS locations. Finally, some clutter as I assume that "css" and "progname" are already HTML-safe.
* Slip in a fix to allow for empty cache directories.Kristaps Dzonsons2011-12-101-1/+1
|
* Finishing touches on multi-manroot man.cgi. If more than one root isKristaps Dzonsons2011-12-101-4/+23
| | | | | specified, write them out using a SELECT box. Else write nothing (the manroot will still be checked if it's specified).
* Switch on "manpath=" handling, which I call the "manroot" (as "manpath" isKristaps Dzonsons2011-12-101-28/+45
| | | | | | | | reserved for paths within a manroot). This functionality is bare-bones: right now, the default manroot is the first one scanned from the cache directory. At some point this will be sexy and smooth, but it's easy to upgrade functionality by modifying pathgen() and so forth. If a manroot isn't parsed from the "manpath=", results are always empty.
* Encode "manroot" into file URL and parse it properly. Right now thisKristaps Dzonsons2011-12-101-13/+26
| | | | just uses the first manroot by default.
* Big upgrade and polish for cgi.c.Kristaps Dzonsons2011-12-101-162/+283
| | | | | | | | | | | | | | | | | | | - Deprecate kvals (key/value pairs for QUERY_STRING values). Since there's only one place that uses this, kval_parse (now http_parse()) dumps directly into struct query, which is more high-level. - Put query values directly into struct req. - The biggest difference is dynamic support for multiple "manroots". A "manroot" is a path with an "etc/catman.conf" file. When the cgi starts, it (prefix) recurses through its CACHE_DIR searching for "etc" directories. When one's found, it sees if a catman.conf file exists. This is marked as a manroot and appended to a list. The name of a manroot is the path without slashes (e.g., OpenBSD/4.9 -> "OpenBSD 4.9"). Right now "manroot" isn't enabled. The first manroot is chosen as the real one. I'll add the interface to it in the next checkins, but it'll be quite simple.
* FreeBSD's man.cgi uses a "default" value for no arch.Kristaps Dzonsons2011-12-101-3/+10
|
* Add some periods (just to see if mlmmj is working again...).Kristaps Dzonsons2011-12-101-2/+2
|
* Forgot to make whatis the default during abstraction. Do it again.Kristaps Dzonsons2011-12-091-2/+4
|
* Abstract query extraction code. Perform some readability fixes while here.Kristaps Dzonsons2011-12-091-137/+153
|
* If no man.cgi `whatis' results are found, offer a quick link to the aproposKristaps Dzonsons2011-12-081-3/+41
| | | | query mode.
* Fix stupid typo: strlcpy() instead of strlcat().Kristaps Dzonsons2011-12-081-1/+1
|
* Look for man.cgi files in the cache, not under the volume path.Kristaps Dzonsons2011-12-081-2/+2
|
* Tweak to make man.cgi's search results validate properly.Kristaps Dzonsons2011-12-071-0/+3
|
* Apropos and man.cgi should strcasecmp their output sorting.Kristaps Dzonsons2011-12-071-4/+14
| | | | | man.cgi should sort in the first place -- it wasn't before. Revert uppercasing of man.cgi title.
* Add skeleton man.cgi.css file. I don't think this should become moreKristaps Dzonsons2011-12-071-20/+27
| | | | | complicated than this. Also make the title be printed out in caps as it is in apropos(1) and whatis(1).
* Accept old-school man.cgi parameters like "sektion" and "query". This stillKristaps Dzonsons2011-12-071-0/+17
| | | | | | needs work because specifying an arch with "arch=i386" will return results that don't have an arch specified. I think this is weird, but it will need to be supported if we want backwards compatibility.
* Have a whatis/apropos mode, with the default (hitting enter within theKristaps Dzonsons2011-12-071-41/+55
| | | | | | | expression text) be whatis. This is a much nicer default than apropos, which can be scary. While here, fix the cat.css location (erroneously put in the response page instead of the catman page) and add bits for a default style-sheet.
* By default, man.cgi should compile with -static (this was unset by mistake).Kristaps Dzonsons2011-12-071-3/+17
| | | | Also, set a custom CSS for man.cgi catman files.
* Add cat2html functionality. This keeps track of italic/bold mode per lineKristaps Dzonsons2011-12-071-56/+183
| | | | | | | | | | | | and properly handles some funny troff-isms we've exposed. I originally wanted to use man2html.c (found on W3's website with no known author) but the code is dodgy. This will need some more work (links, etc.) but does a decent job thusfar. Note: I think it's better style NOT to use <pre>, and instead have each line employ <BR> afterward. This allows browsers to break the lines if necessary. This can be changed trivially (replacing the newline and pre tags with the <BR> and new tag).
* Make catman and man.cgi understand the index type-field.Kristaps Dzonsons2011-12-041-16/+61
| | | | | | | Also make catman's man.conf be generated as catman.conf to avoid clobbering a real man.conf file. Finally, add a placeholder catman() function to man.cgi for preformatted manuals in the cache.
* Removing INSECURE mode. This is a work in progress! Logic forKristaps Dzonsons2011-11-271-58/+36
| | | | formatting manpages is now linked into man.cgi.
* Let man.cgi run in two modes:Kristaps Dzonsons2011-11-241-27/+90
| | | | | | | | | | | | | (1) Insecure. This means that we're operating over the full file-system with access to mandoc(1). In this mode, mandocdb entries are formatted on-the-fly. The $INSECURE environment variable must be passed to man.cgi for this mode to work. (2) Secure. Manuals are assumed to be pre-formatted in a cache directory, which may be set with $CACHE_DIR but default to /cache/man.cgi. This mode works with manup(8), which updates the cached pages from outside of the jail. man.cgi simply locates the manual file and outputs it to stdout.
* man.cgi works for the non-jailed case.Kristaps Dzonsons2011-11-231-80/+421
| | | | | | | In other words, if you smash this into a cgi-bin directory, it will Just Work for your system's manuals (it of course needs access to mandoc(1) and your file-system, hence "non-jailed"). The notion of a jailed case is much more subtle and being worked on now.
* Merge schwarze@'s work for 64-bit types. This is based on a tweaked patchKristaps Dzonsons2011-11-201-0/+1
| | | | | | | submitted to tech@ on 16/11/2011, 01:39. It has been updated to account for the logical-operator functions and to avoid keeping a live pointer into the DBT value, which is not guaranteed to be consistent across calls into the bdb library.
* Inventing new keywords for mostly the same thing when a well-establishedIngo Schwarze2011-11-131-1/+2
| | | | | | | | | | set of keywords already exists is a bad idea, so reuse the mdoc(7) macro names as apropos(1) search types. This is a gain in brevity as well. Some time ago, kristaps@ agreed in principle. The search type bit field constants are used by both mandocdb(8) and apropos(1) and should better stay in sync, so give them their own header file.
* Less misleading file names; ok kristaps@.Ingo Schwarze2011-11-131-1/+1
|
* Make apropos's lookup use a find(1)-like expression. I'll write more onKristaps Dzonsons2011-11-091-2/+10
| | | | | | | | | | this when it completes; this is to keep it in-tree. Right now this uses prefix notation. Ignore it. I'll make this into infix notation real soon. The goal of this (exprcomp and exprexec) is to have arbitrary logical expressions.
* Split apropos.c into db.c and apropos.h with simpler code (re-written, butKristaps Dzonsons2011-11-091-0/+303
inspired by apropos.c and mandoc-tools' mandoc-cgi.c). This uses UTF-8 right now for its re-writing, but will soon accomodate for the regular suspects (this is a rather simple matter). I also introduce man.cgi (cgi.c), which is a standalone CGI that replaces mandoc-tools' mandoc.cgi. Right now it's just a framework.