* mdocml version 1.12.1 available
@ 2012-03-24 2:26 Kristaps Dzonsons
0 siblings, 0 replies; only message in thread
From: Kristaps Dzonsons @ 2012-03-24 2:26 UTC (permalink / raw)
To: discuss
[-- Attachment #1: Type: text/plain, Size: 728 bytes --]
Hello,
I'm pleased to announce mdocml 1.12.1, now at http://mdocml.bsd.lv/.
Among many, many improvements, this release has an improved mandocdb(8)
and the constellation of UNIX manpage tools (apropos(1), whatis(1),
man.cgi(7)). I snuck a controversial bit into apropos(1) and whatis(1):
if the terminal is a TTY, one can choose output from a list and see the
manpage for it. These tools will need a lot of work -- the legacy tools
have seen many years of polish and development -- but it's a start.
For a full list of changes, see the attached ChangeLog. An abbreviated
list of changes is on the NEWS section of the web-site.
As usual, sources are at http://mdocml.bsd.lv/snapshots/mdocml.tar.gz.
Thanks,
Kristaps
[-- Attachment #2: ChangeLog --]
[-- Type: text/plain, Size: 45027 bytes --]
2012-03-23 22:18 kristaps
* apropos.c: Forgot chdir(2) into volume path.
2012-03-23 22:07 kristaps
* apropos.c, index.sgml: Small tweaks for release.
2012-03-23 21:54 kristaps
* Makefile, index.sgml, whatis.1: Get ready for a version.
2012-03-23 21:46 kristaps
* apropos.1, apropos.c, apropos_db.c, apropos_db.h, cgi.c: Be
insane. Make apropos(1) subsume man(1).
2012-03-23 20:31 kristaps
* apropos.c, apropos_db.c, apropos_db.h, cgi.c: Simplify by not
pre-filtering the result vector for satisfied matches: we can do
this in the frontend.
2012-03-23 20:30 kristaps
* man.cgi.7: Whitespace fix.
2012-03-23 05:03 kristaps
* cgi.c: Knock out useless & confusing whatis mode.
2012-03-23 02:52 kristaps
* mandocdb.c: Improve mandocdb's ability to handle NAME sections by
sucking the entire shebang into a buffer and parsing it that way.
This improves on many cruddy -man manuals in the wild.
2012-03-23 01:50 kristaps
* mdoc_argv.c, mdoc_validate.c: Make the `-width' field to `Bl' not
puke if it doesn't have an argument. This makes mandoc work
much, much nicer with Mac OSX manpages.
2012-03-23 01:45 kristaps
* mandocdb.c: Clean up code a bit by pushing warnings into WARNING
macro.
2012-03-23 01:07 kristaps
* apropos_db.c, mandocdb.c: Merge some/most of schwarze@'s OpenBSD
changes into mandoc: many more warnings about grokking manpages
in their respective directories. DO NOT, however, import his
temporary-file routines (I don't plan on staying with a
recno/btree split) nor the realpath() routines, which destroy
relative path-ness.
Also pull in the lorder bits.
There are some changes I started to make then stopped relating to
reporting errors in the correct directories. I'll clean this up
in subsequent commits.
This puts us more or less on parity with OpenBSD.
2012-03-23 01:05 kristaps
* Makefile: Remove some Mac OS crap in the Makefile.
2012-03-22 22:53 kristaps
* Makefile: Don't run superfluous mkdir when installing.
2012-03-22 22:52 kristaps
* apropos.c, mandocdb.h: Revert to mandocdb.{index,db} for database
files.
2012-03-04 18:53 schwarze
* TODO: two reminders
2012-02-26 16:47 schwarze
* st.in: Correct the expansion of -xbd5; from Philip Guenther
<guenther at openbsd dot org>. OK Werner Lemberg <wl at gnu dot
org>.
2012-02-16 15:51 joerg
* mandoc.h, read.c: Add mparse_readmem, which allows application to
run the parser directly from memory, e.g. after de-compressing a
document.
2012-02-05 11:46 joerg
* read.c: Don't silently skip non-ASCII characters, but replace
them with ``?''. This is less likely to break the syntax of
macros.
2012-01-28 18:46 joerg
* lib.in: Add libquota
2012-01-28 09:04 joerg
* lib.in: Add libisns, libppath and libsaslc from NetBSD. Fix
formatting of librt.
2012-01-28 09:02 joerg
* arch.in: Add x86 pseudo architecure
2012-01-22 20:41 joerg
* TODO: Add entry about the .TP / .RS crash before I forget about
it again.
2012-01-13 10:27 joerg
* mandoc.3: Reflect reality, mandoc_escape does not skip the "\"
itself, but expects the caller to have done that.
2012-01-04 19:43 schwarze
* mdoc_macro.c: Fix previous such that all .It HEADs are unparsed,
not just the first one in each -diag list. While here, drop the
needless if-statement and choose a more precise wording for the
comment. ok kristaps@
2012-01-03 10:17 kristaps
* catman.c: Local variable initialisation.
2012-01-03 10:16 kristaps
* man.7, man.c, man.h, man_html.c, man_macro.c, man_term.c,
man_validate.c: Add support for `OP', one of the extended man
macros. This also requires some man(7) changes to accomodate for
the an-ext compatibility.
2012-01-03 05:18 kristaps
* mdoc.7, st.in: Accommodate for ISO C11. groff applied the same
`St' argument on 03/01/2012. From a tweaked patch (isoC-11 ->
isoC-2011) by Ulrich Sporlein: thanks!
2012-01-02 10:48 kristaps
* TODO, mdoc_macro.c: `-diag' lists aren't parsed, unlike other
list types. This fixes a TODO entry raised by deraadt@.
2011-12-31 13:48 kristaps
* man-cgi.css: Fix ID vs. CLASS for man.cgi CSS selector on results
table and vertically align.
2011-12-31 13:47 kristaps
* apropos.c, mandocdb.c: When parsing catpages, read from the first
section (NAME, we hope) until the next section. Also, remove the
limit of 72 characters and enforce this, instead in the apropos
frontend.
2011-12-27 19:32 schwarze
* mandocdb.c: Do not skip manuals shared across architectures when
building databases.
2011-12-25 16:00 schwarze
* mandocdb.8: Update the whatis.db database format. While here,
reference apropos(1) from the description, inspired by the
makewhatis(8) manual.
2011-12-25 14:35 kristaps
* apropos.1, catman.8, demandoc.1, mandoc.1, preconv.1, whatis.1:
State default usage before listing arguments of a utility.
Inspired by a patch to mandocdb.8 by schwarze@ some time ago. Ok
jmc@.
2011-12-25 14:31 kristaps
* mandocdb.c: First memory leak in mandocdb.c freeing "struct of".
Also properly const-ify several strings.
2011-12-25 12:49 kristaps
* Makefile, catman.c, cgi.c: Continue changing mandoc.{index,db}
into whatis.{index,db}. Use mandocdb.h to do so.
2011-12-25 11:53 schwarze
* apropos.1, mandocdb.8, mandocdb.c, mandocdb.h, whatis.1: Use the
traditional name "whatis.db" for the mandocdb(8) databases.
Requested by deraadt@, ok kristaps@.
2011-12-25 09:58 schwarze
* apropos_db.c, mandocdb.c, mandocdb.h: For binary compatability of
the databases across architectures, use pointers to arrays, not
pointers to structs. It is now possible to create databases on
sparc64 and use them on i386 and vice versa. Kristaps@ can't
think of anything else that might be required, either. Put this
in now such that we can move on.
2011-12-25 08:08 schwarze
* mandocdb.8, mandocdb.c: Implement test mode (makewhatis -t),
required for pkg_create(8). Always do all consistency checks;
when any one fails, decide whether to print a message, or skip
the file, or both, or none.
While here, do some cleanup as well: * Bail out on conflicting
options. * Do not crash with -a if there are plain files in the
root dir. * Collect some related variables into structs.
Feedback and OK kristaps@.
2011-12-24 17:37 kristaps
* apropos.1, catman.8, manpath.c, whatis.1: Support leading,
trailing and double colons in MANPATH to prepend, append or
insert the man.conf(5) default path; compatible with GNU
manpath(1), implementation by kristaps@, heavily tweaked by
schwarze@.
Updates to MANPATH documentation applied to whatis.1, apropos.1,
and catman.8 also.
2011-12-20 16:41 schwarze
* apropos_db.c, mandocdb.c: Do not cast void pointers to pointers
requiring alignment. This makes mandocdb(8)/apropos(1) work on
strict alignment architectures. Basic way to fix this confirmed
by deraadt@ and kettenis@, thanks. ok kristaps@
This now works on both sparc64 and i386, but note that the binary
database format is still machine-dependent.
2011-12-18 13:51 kristaps
* catman.8, catman.c: Give catman(8) the -C flag (like apropos and
friends) and merge in some documentation from apropos(1) to be
consistent.
2011-12-18 09:27 kristaps
* compat_fgetln.c, compat_getsubopt.c, compat_strlcat.c,
compat_strlcpy.c: Make compat files actually use compat.h.
Ooops.
2011-12-16 15:06 kristaps
* apropos_db.c, cgi.c: Two lint fixes.
2011-12-16 15:05 kristaps
* cgi.c: Fix assertion found when plugging legacy man.cgi query
string into my man.cgi.
2011-12-16 14:18 kristaps
* man-cgi.css: Edge in a little style. Why not.
2011-12-16 13:37 kristaps
* cgi.c: When routing to a "result" page in the cgi, remember our
input parameters and repeat them in the search bar. This is
handy. While here, make the QUERY_STRING parser a bit simpler.
2011-12-16 10:05 kristaps
* man-cgi.css: Have results table inherit the small font.
2011-12-16 07:07 kristaps
* apropos_db.c: Make sure that "any" is UINT64_MAX, not just
INT_MAX, else "any" won't cover all types. Found after some
database trawling.
2011-12-16 07:06 kristaps
* apropos_db.c, apropos_db.h, catman.c, cgi.c, mandocdb.8,
mandocdb.c: Make the stored "cat"/"mdoc"/"man" strings just be
c/d/a single-character bytes. This cuts down a little in index
size and allows for cleaner extraction of information.
2011-12-16 03:04 kristaps
* catman.c, cgi.c, mandocdb.8, mandocdb.c: Make paths in the
mandocdb(8) index relative to the databases' path prefix. This
means that an index in, say, /usr/share/man will point to
man1/foo.1 instead of /usr/share/man/man1/foo.1. Not only does
this save a lot of space, it also allows manual trees to be moved
around without any side effects to the mandocdb(8) databases.
2011-12-15 07:44 kristaps
* man-cgi.css: Don't make man.cgi default font-size dictate manual
style.
2011-12-15 07:18 kristaps
* cgi.c, example.style.css, man-cgi.css: Further tweaks for output
consistency.
2011-12-15 07:07 kristaps
* man.cgi.7: Update man.cgi.7 with new CSS files.
2011-12-15 07:05 kristaps
* Makefile, cgi.c, example.style.css, man-cgi.css, man.cgi.css:
Some presentation polish in man.cgi:
- include search bar above result page (I relent: it's annoying
to
follow three links then press back three times to get a search
page);
- make man.cgi.css into man-cgi.css so Apache isn't confused by
two
handlers (css, cgi);
- finally consolidate example.style.css to be under the
div.mandoc css
selector;
- put catman pages under div.catman;
- put search bar under div#mancgi;
- reflect this properly in the bundled CSS files.
2011-12-14 18:17 kristaps
* index.sgml: Note that archives are being hosted at gmane.
2011-12-14 08:36 kristaps
* cgi.c, man.cgi.7: Unbreak man.cgi's css directories when CSS_DIR
isn't specified.
2011-12-13 16:09 kristaps
* manpath.c: Remove stray warnx() left in the manpath.c code.
2011-12-13 15:56 kristaps
* manpath.c, manpath.h: Have manpath.c properly use manpath(1),
that is, using -C and -m and so on. This also cleans up the code
a little bit. While here, make some functions static that are
only used within manpath.c.
2011-12-13 06:26 kristaps
* Makefile, compat_fgetln.c, config.h.post, config.h.pre,
test-fgetln.c: Compatibility support fgetln() on Linux. This
uses the BSD-licensed implementation from NetBSD tnftpd, Christos
Zoulas (copyright message retained in the compat_fgetln.c file).
Patch verified by schwarze@. He notes that you'll need -pthread
for -static binaries (due to libdb), so I've noted that -static
should really only be used for BSD UNIX.
While here, add some forgotten goop to the Makefile, building and
cleaning extra manpages.
2011-12-11 21:00 schwarze
* apropos.1, apropos.c, catman.c, cgi.c, mandocdb.8, mandocdb.c,
manpath.c, manpath.h, whatis.1: implement -C (alternative config
file) for apropos(1) and mandocdb(8), including various tweaks to
the whatis(8) manual; ok kristaps@
2011-12-10 19:38 schwarze
* roff.7: Explain where .so paths are rooted, and why, and
discourage its use; feedback and ok jmc@, suggested by and ok
kristaps@.
2011-12-10 19:24 kristaps
* man.cgi.7: Ugh, environmental variables are Ev, not Er. Fix
typos.
2011-12-10 19:23 kristaps
* man.cgi.7: Note CSS_DIR in man.cgi.7.
2011-12-10 19:22 kristaps
* cgi.c: When 303'ing a search directly to a page, remember to
specify its manroot. 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.
2011-12-10 18:44 kristaps
* index.sgml, man.cgi.7: Begin working on release notes. Also
whitespace-fix man.cgi.7.
2011-12-10 18:31 kristaps
* man.cgi.7: Update man.cgi.7 to note compatibility and running
with multiple roots.
2011-12-10 18:09 kristaps
* cgi.c: Slip in a fix to allow for empty cache directories.
2011-12-10 18:04 kristaps
* cgi.c: Finishing touches on multi-manroot man.cgi. If more than
one root is specified, write them out using a SELECT box. Else
write nothing (the manroot will still be checked if it's
specified).
2011-12-10 17:45 kristaps
* cgi.c: Switch on "manpath=" handling, which I call the "manroot"
(as "manpath" is 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.
2011-12-10 17:20 kristaps
* cgi.c: Encode "manroot" into file URL and parse it properly.
Right now this just uses the first manroot by default.
2011-12-10 17:01 schwarze
* mandocdb.c: Avoid leaking index records: Before allocating a
record for a file, first make sure we actually want to use the
file.
2011-12-10 16:51 kristaps
* cgi.c: Big upgrade and polish for cgi.c.
- 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.
2011-12-10 16:46 kristaps
* apropos_db.c: Plug a memory leak in single_search().
2011-12-10 11:53 schwarze
* mandocdb.c: Fix selection of arch-specific manuals: (1) Correctly
compare cat vs. man paths. (2) Compare arch (and section) names
case-insensitively. Problem noticed by kristaps@.
2011-12-10 06:00 kristaps
* Makefile: Adding some missing "install" bits to Makefile.
2011-12-10 05:59 kristaps
* cgi.c: FreeBSD's man.cgi uses a "default" value for no arch.
2011-12-09 19:06 kristaps
* cgi.c: Add some periods (just to see if mlmmj is working
again...).
2011-12-09 18:18 kristaps
* cgi.c: Forgot to make whatis the default during abstraction. Do
it again.
2011-12-09 06:29 kristaps
* cgi.c: Abstract query extraction code. Perform some readability
fixes while here.
2011-12-09 06:18 kristaps
* apropos_db.c: When specifying an architecture to
whatis(1)/apropos(1)/man.cgi(7), do a comparison only if the
manual specifies an architecture, otherwise let it through.
Looked over by schwarze@. This brings us much more in line with
OpenBSD's behaviour.
2011-12-09 06:16 schwarze
* mandocdb.c: Tweak pformatted(): * If the first section is empty,
use the file name as .Nd. * No need to check (len > 0) after
successful fgetln(3). * Improve some comments and strip trailing
whitespace. ok kristaps@
2011-12-08 20:21 kristaps
* mandocdb.c: Considerably tidy mandocdb(8) catman descriptions by
skipping to the first hyphen-space combo, not the last hyphen as
done previously.
2011-12-08 19:49 kristaps
* mandocdb.c: Strip backspace encoding from preformatted manuals.
This cleans up a lot of catpage entries in the mandoc databases.
2011-12-08 17:47 kristaps
* cgi.c: If no man.cgi `whatis' results are found, offer a quick
link to the apropos query mode.
2011-12-08 13:39 kristaps
* cgi.c: Fix stupid typo: strlcpy() instead of strlcat().
2011-12-08 04:19 kristaps
* mandocdb.c: Clean up grok of preformatted manual description.
(1) put fclose() at the end, as line isn't valid afterward (see
fgetln()) (2) clean up loops to be more readable to my old eyes
(3) mandate trailing newline, nul-terminate, and use strrchr
2011-12-07 21:24 schwarze
* mandocdb.c: bugfix: make reclaiming of index slots actually work;
index_prune always counted the free slots, but didn't tell
anybody about them, so they weren't reused
2011-12-07 20:00 kristaps
* mandocdb.c: If arguments are passed to mandocdb(8) in "default"
mode, then use realpath() to convert them into absolute paths
before putting the traversed subdirectory filenames into the
index.
2011-12-07 19:48 kristaps
* cgi.c: Look for man.cgi files in the cache, not under the volume
path.
2011-12-07 19:20 kristaps
* catman.c: First, remove the catman(8) jobstart() stuff. It only
copies files. Second, when creating the destination filename,
append the index's file (which is an absolute path) to the cache
directory, not to the index's directory name.
2011-12-07 11:18 kristaps
* cgi.c: Tweak to make man.cgi's search results validate properly.
2011-12-07 11:08 kristaps
* apropos.c, cgi.c: Apropos and man.cgi should strcasecmp their
output sorting. man.cgi should sort in the first place -- it
wasn't before. Revert uppercasing of man.cgi title.
2011-12-07 10:55 kristaps
* cgi.c, man.cgi.css: Add skeleton man.cgi.css file. I don't think
this should become more complicated than this. Also make the
title be printed out in caps as it is in apropos(1) and
whatis(1).
2011-12-07 10:12 kristaps
* cgi.c: Accept old-school man.cgi parameters like "sektion" and
"query". This still 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.
2011-12-07 08:00 kristaps
* Makefile, cgi.c, man.cgi.7: Have a whatis/apropos mode, with the
default (hitting enter within the 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.
2011-12-07 06:59 kristaps
* Makefile: Make installing CGI a bit easier.
2011-12-07 06:52 kristaps
* Makefile, cgi.c: By default, man.cgi should compile with -static
(this was unset by mistake). Also, set a custom CSS for man.cgi
catman files.
2011-12-06 20:57 schwarze
* mandocdb.c: Implement search support for 24 additional macros,
extract more information from Fn, and lift section restrictions
from An Cd Er Ev Fn Fo In Pa St Va Vt by removing 4 handler
functions and 50 lines of code. ok kristaps@
2011-12-06 19:23 kristaps
* cgi.c: Add cat2html functionality. This keeps track of
italic/bold mode per line 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).
2011-12-04 19:41 schwarze
* TODO: must ignore \h with quoted argument
2011-12-04 18:10 schwarze
* man_term.c, term.h, term_ascii.c: Implement mdoc(7)-like output
style variant for man(7) documents: * one instead of three blank
lines after the page header; * one instead of three blank lines
before the page footer; * source instead of title(section) in the
lower right corner. Select this style variant with the
undocumented command line option -Omdoc. In the long run, we
hope to unify the ouput of both languages and to pull this out
again, but that requires coordination with groff.
Grudgingly ok and, (as usual,-) more comments requested by
kristaps@
2011-12-04 17:52 kristaps
* catman.8, catman.c, cgi.c, man.cgi.7: Make catman and man.cgi
understand the index type-field. 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.
2011-12-04 09:23 schwarze
* mandocdb.c: Fix parsing of file names given on the command line;
i broke it when adding support for formatted manual pages.
2011-12-03 19:44 schwarze
* man_html.c, man_macro.c, man_term.c: Jumping out of man_unscope()
for the root node is a bad idea because that will skip root node
validation, potentially entering rendering modules will NULL
pointers lurking in the meta data. Instead, always validate the
root node and (as suggested by joerg@) assert validity of the
meta data before using it in the renderers. ok joerg@
2011-12-03 18:59 schwarze
* mdoc_macro.c: Remove an OpenBSD-specific tweak regarding .Xr
spacing and make it compatible with groff-1.21. This tweak was
originally added for compatibility with groff-1.15, which is no
longer needed.
ok jmc@ kristaps@
2011-12-03 13:47 kristaps
* apropos_db.c, mandocdb.c: Back out lorder, which doesn't seem
necessary (?). I think this means all fields are endian-neutral,
although the recno(3) key is unknown.
2011-12-03 11:58 schwarze
* mdoc_validate.c: When processing .Sh HEAD, as soon as we know
which section this is, fix up the section attributes of the HEAD,
it's parent BLOCK, and all its (text) children. This is required
because the section attributes get set when each node is
allocated, i.e. before processing the content of the node itself.
Thus, the listed nodes got the section attribute of the
preceding section. No need to fix up the BODY, all is fine there
already. Found while implementing TYPE_Sh for mandocdb(8). OK
and comment requested by kristaps@.
2011-12-03 11:08 schwarze
* mandoc.c: ISO style "%Y-%m-%d" dates are common in man(7) .TH.
They have been considered valid in the past, but were reformatted
to the mdoc(7) "Month day, year" style. To make page footers
more similar to groff, no longer reformat them, just print them
as they are. This doesn't change anything with respect to what's
considered valid or what is warned about.
ok kristaps@
2011-12-03 07:09 kristaps
* apropos_db.c, mandocdb.c: Make sure the btree(3) goop is also BE.
This covers both the DB metadata and prior commits handle the
contained binary fields.
2011-12-01 20:37 schwarze
* Makefile, libmandoc.h, libmdoc.h, man.7, man_validate.c,
mdoc_validate.c, msec.c: In man(7), when no explicit volume name
is given, use the default volume name for the respective manual
section, just like in mdoc(7). This gives us nicer page headers
for cvs(1), lynx(1), tic(1), mkhybrid(8), and many curses(3)
manuals.
ok kristaps@
To not break compatibility, i wrote a corresponding patch for GNU
troff which Werner Lemberg accepted upstream at rev. 1.65 of:
http://cvs.savannah.gnu.org/viewvc/groff/tmac/an-old.tmac?root=groff
2011-12-01 19:21 kristaps
* apropos_db.c, config.h.post, mandocdb.8, mandocdb.c: This is a
little gross: Linux and Apple need lots some cajoling to work
with byte-swapping. Tested on Mac. Any Linux machines somebody
can test on? Anybody?
While here, note the correct byte-size in mandocdb(8) and also
note field widths and endianness. The btree is now
endian-neutral.
2011-12-01 18:55 kristaps
* apropos_db.c, mandocdb.c: Use OpenBSD's endian functions. Make
btree type also be endian-neutral.
2011-12-01 18:46 kristaps
* apropos_db.c, mandocdb.c: In apropos_db.c, move all btree reading
(and safety checks) into the btree_read() function. Also, add a
forgotten free() for the type of grokked record.
Then in both mandocdb.c and apropos_db.c, make the "rec" field of
the btree by in network-order.
2011-12-01 16:05 kristaps
* mandocdb.8, mandocdb.c: Fix mandocdb(8) to pass over the type
when pruning the database. This fixed `-d' perpetually adding
the same files. While here, clean up the code and document it.
Remove -vv (complain if you want it back in). Document the error
messages in a DIAGNOSTICS section of mandocdb(8).
2011-11-29 06:21 kristaps
* index.sgml: Add whatis(1) to www and start version information.
While here, change "mdoc macro compiler" to "UNIX manpage
compiler", which is more correct. I'm not sold on this language;
I may end up just going with mandoc(1)'s notation. Note also
that our archives are now hosted at gmane.
2011-11-29 06:17 kristaps
* mandocdb.8: Note that mandocdb(8) record type is 64-bit and show
all possible values. Also slightly clarify the role of
mdoc/man/cat. Finally, remove mandoc(1) reference (it's not
mentioned in the manual).
2011-11-29 05:59 kristaps
* apropos.1, whatis.1: Snip some whitespace from apropos(1) and
remove mandoc(1) ref from whatis(1) (both apropos/whatis aren't
related to mandoc from an operator's perspective).
2011-11-29 05:53 kristaps
* apropos.1, apropos.c, apropos_db.c: Make `-i' only apply to
regular expressions. For the equality operator (and thus the
default), always use strcasestr(). Discussed on tech@ with
schwarze@. While here, fix the apropos.c usage() message to be
consistent with apropos(1) and clean up the EXAMPLES in
apropos(1).
2011-11-28 19:41 kristaps
* apropos.1: Add tables of matchable keys into apropos.1. Ok and
with feedback by schwarze@.
2011-11-28 19:34 schwarze
* mandocdb.c: chdir(2) to the right man page tree before parsing
manuals; ok kristaps@
2011-11-28 05:10 schwarze
* Makefile: Backout -DUSE_MANPATH that sneaked in; ok kristaps@.
2011-11-28 04:44 schwarze
* apropos.c, apropos_db.c, whatis.1: Tweak whatis(1): * Bugfix: Use
all arguments, not just the last one. * Use 'Nm~' instead of
'Nm,Nd~' to match OpenBSD behaviour. * For the progname, accept
'^whatis', not '^whatis$' to ease testing. ok kristaps@
2011-11-27 20:37 schwarze
* mandocdb.8: Discuss the default behaviour up front before talking
about options modifying it; based on a remark by kristaps@.
While here, mention parsing of unformatted files and the changed
index format and fix a few minor issues.
2011-11-27 18:27 schwarze
* mandocdb.c: Reimplement the global command line options -a and -v
as static global variables, reducing the maze of arguments passed
around among various static functions. Suggested by kristaps@.
2011-11-27 18:11 schwarze
* apropos_db.c, apropos_db.h, mandocdb.c: Save the manual type
(mdoc, man, or cat) in the index file of the mandoc databases, as
suggested by kristaps@. Given the well-structured code, this is
surprisingly simple.
This changes the mandoc.index database format. Run "sudo
mandocdb" to regenerate your databases.
2011-11-27 17:57 schwarze
* mandocdb.c: Rudimentary handling of formatted manuals ("cat
pages"). Coded on the train back from p2k11 in Budapest.
Kristaps has seen the patch and agreed with the direction.
2011-11-27 13:54 kristaps
* apropos.c, apropos_db.c, apropos_db.h, whatis.1: Get us a
whatis(1) mode for apropos(1). This is from a patch to tech@ as
critiqued by schwarze@, checked in to get the ball rolling.
2011-11-27 06:46 kristaps
* Makefile, catman.c, cgi.c, man.cgi.7: Removing INSECURE mode.
This is a work in progress! Logic for formatting manpages is now
linked into man.cgi.
2011-11-26 17:38 schwarze
* apropos.1, apropos.c, apropos_db.c, apropos_db.h, mandocdb.c,
manpath.c: Sync to OpenBSD, mostly gratuitous and whitespace
differences, but a few serious things as well: * -M overrides
MANPATH * -m prepends to the path * put back database close calls
that got lost in mandocdb * missing sys/types.h in manpath.c,
needed for size_t ok kristaps@
2011-11-26 14:54 kristaps
* catman.8, catman.c, manup.8, manup.c: Rename manup(8) to
catman(8), which Linux already uses for a similar tool.
2011-11-26 06:23 schwarze
* mandocdb.8, mandocdb.c: Store page titles in the correct case,
and by default, only put stuff into the database that man(1) will
be able to retrieve. However, support an option to use all
directories and files. feedback and ok kristaps@
2011-11-24 07:54 kristaps
* mandocdb.c: I say that mandocdb(8) uses "man(1)'s method", but it
doesn't. It just uses the configuration file and ignores
MANPATH. Everybody else uses MANPATH (being apropos and man), so
why shouldn't we?
2011-11-24 07:43 kristaps
* Makefile, man.cgi.7: Make a small manual for how to run man.cgi.
This exists almost entirely to document that /tmp must exist in a
jailed Apache directory for dbopen() not to fail. This was a
massive headache to track down.
2011-11-24 07:27 kristaps
* cgi.c: Let man.cgi run in two modes:
(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.
2011-11-24 07:22 kristaps
* manup.c: Have manup(8) put relative paths in its output man.conf.
This lets us have arbitrarily-located cache directories for
man.cgi.
2011-11-24 05:44 kristaps
* manpath.c, manpath.h: Allow man.conf file to be assignable.
2011-11-24 05:43 kristaps
* manpath.c, manpath.h: Export the manpath_manconf() function,
slightly reorderng manpath.c while doing so. This will be used
by a jailed man.cgi, as the cache built by manup(8) creates a
man.conf for it to use.
2011-11-24 05:33 kristaps
* Makefile, manup.8, manup.c: Add manup(8). This runs through
mandocdb(8) databases (in the same way that apropos(1) does so)
and updates an HTML fragment cache for use by man.cgi. Right now
man.cgi is "online" in that it requires mandoc(1) in its path,
but this doesn't work for, say, OpenBSD's apache chroot(1). This
allows a cache to be maintained.
2011-11-23 05:26 kristaps
* index.sgml: Add pkgsrc to downstream. Ok'd Thomas Klausner.
2011-11-23 05:09 kristaps
* apropos.1, mandoc_char.7: Fix whitespace in manuals.
2011-11-23 05:01 kristaps
* cgi.c: man.cgi works for the non-jailed case. 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.
2011-11-23 04:56 kristaps
* Makefile: Adjust Makefile for manpath.{c,h} linking.
2011-11-23 04:55 kristaps
* apropos_db.c, apropos_db.h: Let apropos_db.h export the volume of
manpages for a parsed record. This is necessary since an array
of records can have duplicate record numbers in different
mandoc.index files. The volume [right now] is just the index of
the parsed mandoc.index in the manpaths. This is sensible
because the order of the manpath is significant (it's the order
of duplicate-named manuals displayed by man(1)) and is thus not
likely to change.
2011-11-23 04:52 kristaps
* mandocdb.8, mandocdb.c: Have mandocdb(8) take advantage of
manpath.h. This brings it in line with makewhatis(8), which,
like apropos(1), will use man.conf (or manpath(1)) if no manpath
entries are provided.
2011-11-23 04:50 kristaps
* apropos.c: Have apropos(1) take advantage of manpath.h instead of
doing the work itself.
2011-11-23 04:47 kristaps
* manpath.c, manpath.h: Support for Open/NetBSD's /etc/man.conf and
others' manpath(1). Most of this code (except the manpath part)
written by schwarze@. This isn't hooked into anything yet.
2011-11-22 21:12 schwarze
* roff.7: typo reported by Steffen Daode Nurpmeso <sdaoden at
googlemail dot com> and remove a trailing blank noticed by jmc@
2011-11-21 17:19 kristaps
* roff.7: Update historical record to be historical and not
made-up. Data from <manpages.bsd.lv/history.html>. Ok schwarze@
(with modifications) and Jason McIntyre.
2011-11-20 16:36 kristaps
* Makefile, apropos.1, apropos.c: Initial support for
man.conf/makepath(1).
2011-11-20 11:29 kristaps
* apropos.1, apropos.c, apropos_db.c: Clarify some behaviour,
bringing schwarze@'s patch and mine closer together (although I
still don't have -M, which is a big piece).
First, the default search path is the cwd. This will change to
use -M once I look over that code.
If MANPATH is specified, this replaces the cwd.
Both of these are augmented by -m.
If paths don't exist or don't have databases, they're silently
ignored. This makes perfect sense: you may be given a superset
of possible paths. The corner case of no paths (where, say,
MANPATH consists of bogus paths or the cwd is unreadable) simply
means that no paths are searched.
2011-11-20 10:45 kristaps
* apropos_db.c: Ooops... tiny type error slipped in.
2011-11-20 10:43 kristaps
* apropos.1, apropos.c, apropos_db.c, apropos_db.h: Integrate a
moderately-patched version of schwarze@'s support for multiple
directories containing mandocdb(8) databases. Some changes
follow:
(1) don't support -M yet;
(2) fall back to cwd if no prior manpath has been specified;
(3) resolve manpages using realpath() to prevent consecutive
chdir()'s
over relative paths;
(4) note where further error-reporting is required;
(5) fix leaking memory on exit in several cases.
2011-11-20 07:46 kristaps
* apropos_db.c: Fix white-space in apropos_db.c to make merging
cleaner.
2011-11-20 07:39 kristaps
* apropos_db.c, cgi.c, mandocdb.c, mandocdb.h: Merge schwarze@'s
work for 64-bit types. This is based on a tweaked patch
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.
2011-11-19 08:29 schwarze
* mdoc_validate.c: Improve misleading comment: * Not sure there
were any text nodes, might have been other stuff instead. * Not
sure it was just one node, maybe several were deleted. * No
problem if some nodes were deleted, as long as some valid ones
are left. * We do not leave early, but after cleaning out all
the crap. * We are not "bailing", but we consider the block
valid after cleanup.
2011-11-18 12:06 joerg
* man_macro.c: Fix condition. Not enough tea.
2011-11-18 12:05 joerg
* man_html.c: Don't depend on snprintf to handle NULL strings. Deal
with missing date.
2011-11-18 12:04 joerg
* man_term.c: Don't crash if the date can't be extracted. Don't
depend on snprintf handling NULL strings.
2011-11-18 11:43 joerg
* man_macro.c: Slightly adjust last: return successful as some
times the correct error is raised later.
2011-11-18 11:39 joerg
* man_macro.c: Convert an assert into an explicit check.
man_unscope can be triggered on unknown macros.
2011-11-18 09:58 joerg
* mdoc_validate.c: Bail out explicitly on invalid .Rs content like:
.Rs plain text .Re
This avoids a crash on invalid.
2011-11-18 02:02 kristaps
* apropos.1, apropos.c, apropos_db.c, apropos_db.h: Evaluation with
logical subexpressions. This allows support for arbitrary,
nested logical subexpressions with AND (-a) and OR (-o) support.
2011-11-17 12:41 schwarze
* TODO: using undefined macros or strings should define them to be
empty
2011-11-17 09:57 kristaps
* mandocdb.h: Guard mandocdb.h inclusion.
2011-11-16 17:39 joerg
* man.c: Correctly handle constructs like .TP 8 .SH foo
2011-11-14 10:10 schwarze
* mandoc_char.7: Add lots of information about special characters
that's actually needed in practice, and discourage using fancy
characters in manuals. Text about "Dashes and Hyphens" by jmc@.
Feedback and ok jmc@, grudgingly ok kristaps@.
2011-11-14 05:07 kristaps
* apropos.c, apropos_db.c, apropos_db.h: Have exprcomp() accept a
string instead of an array-pointer. Also, collapse the arguments
in apropos(1) into a single string passed to exprcomp(). Ok
schwarze@.
2011-11-13 10:33 schwarze
* man_term.c: Make the man(7) page footer the same as in groff.
2011-11-13 09:50 schwarze
* mandoc.1: typo: overful -> overfull; thanks to jmc@
2011-11-13 08:15 schwarze
* man_term.c, mandoc.1, mdoc_term.c, term.h, term_ascii.c: Make the
default left text margin configurable from the command line, just
like the default right margin already is. This may be useful for
people with expensive screen real estate. Besides, it helps
automated man(7) to mdoc(7) output comparisons to validate -Tman
output. ok kristaps@ on an earlier version
2011-11-13 06:10 schwarze
* apropos.c, apropos_db.c, apropos_db.h: Rewrite the expression
parser for a more concise syntax:
apropos [search_type[,...]=]substring
apropos search_type[,...][,i]~regex
... and expression evaluation must take the search type into
account.
This allows to: * drop the global -I option and * drop the enum
match, just using a boolean int.
"go ahead" kristaps@
2011-11-13 05:49 schwarze
* Makefile, apropos_db.c, apropos_db.h, cgi.c, mandocdb.c,
mandocdb.h: Inventing new keywords for mostly the same thing when
a well-established 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.
2011-11-13 05:12 schwarze
* Makefile, apropos.c, apropos.h, apropos_db.c, apropos_db.h,
cgi.c, db.c: Less misleading file names; ok kristaps@.
2011-11-13 05:02 schwarze
* TODO: another detail to implement; long live the tricky
exceptions!
2011-11-12 19:53 schwarze
* mandocdb.c: Fix two crashes that occur when walking very large
(i.e. real-world) trees: 1) Avoid excessive, needless recursion,
lest you overflow the stack; 2) Close all dir file descriptors,
lest you run out of descriptors. ok kristaps@
2011-11-09 18:31 kristaps
* db.c: Use proper infix expressions and provide a default. (Exact
match.)
2011-11-09 17:05 kristaps
* apropos.c, apropos.h, cgi.c, db.c: Make apropos's lookup use a
find(1)-like expression. I'll write more on 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.
2011-11-09 05:53 kristaps
* apropos.1, apropos.c: Change getopt() to be more like schwarze@'s
suggestions.
2011-11-08 20:24 kristaps
* Makefile, apropos.c, apropos.h, cgi.c, db.c: Split apropos.c into
db.c and apropos.h with simpler code (re-written, but 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.
2011-11-07 19:15 kristaps
* chars.c, mandoc.3, mandoc.h: Const-ify some mchars arguments. I
think these are non-const for historical dumbness on my part.
2011-11-06 20:24 schwarze
* TODO, libman.h, man.c, man_macro.c, man_validate.c, mandoc.h,
read.c: When the HEAD scope of .TP is broken by another block
macro, do not abort with a FATAL error, but report a report a
WARNING, remove the broken .TP from the syntax tree, and prod on.
Reported repeatedly by ports people, at least by brad@ and
jeremy@. Also fixes rendition(4) in Xenocara. ok kristaps@
2011-11-06 09:43 kristaps
* mandoc.c, roff.7: Accomodate for \f(Cx formatting. Noted by
Andreas Vogele, thanks!
2011-11-03 16:48 schwarze
* man_validate.c: When .TH sets no data, leave the date field in
the page footer blank, do not use the current date. This removes
a gratuitous output difference with respect to groff. ok
kristaps@
2011-11-03 16:36 schwarze
* mdoc_term.c, mdoc_html.c: Correct .Eo spacing: no space between
the delimiters and the enclosed text. The mdoc_html.c part was
added by kristaps; ok kristaps@.
2011-11-01 10:59 schwarze
* mdoc.7: Clean up the description of .Dt: - Volume and arch are
both optional and not alternatives. - Zap verbiage about what's
obvious from the synopsis. - For fixed argument strings, use
.Cm, not .Ar. Using lots of input from jmc@.
Also, state that the list of valid architectures varies by OS.
If a downstream distribution wants to provide a specific list,
maintaining a local patch is the way to go.
2011-10-24 17:47 schwarze
* mdoc_man.c: Implement missing enclosures (Ao Do Qo Qq So Bro Brq)
and enclosure-like in-line macros (Ad Cd Dv Er Ev Li Ms Tn). The
.No macro works without explicit implementation.
ok kristaps@
2011-10-24 17:41 schwarze
* roff.c: Handle infinite recursion the same way as groff: When
string expansion exceeds the recursion limit, drop the whole
input line, instead of leaving just the string unexpanded.
ok kristaps@
2011-10-24 16:30 schwarze
* mandoc.c: Handle \N numbered character escapes the same way as
groff: If \N is followed by a digit, ignore \N and the digit. If
\N is followed by a non-digit, the next non-digit ends the
character number; the two delimiters need not match. Kristaps
calls that "gross, but not our fault".
For now, i'm fixing \N only. Other escapes taking numeric
arguments may or may not need similar handling, but \N is by far
the most important for practical purposes.
ok kristaps@
2011-10-20 16:27 schwarze
* mdoc_man.c: Implement the missing text production macros (Bsx Bx
Dx Fx Nx Ox Ux Bt Ud). Some macros work without explicit
implementation (At Db Os St). ok kristaps@
2011-10-18 09:25 kristaps
* mandoc.3: Fix mandoc_escape() function argument names. From a
fix by Abhinav Upadhyay, thanks!
2011-10-16 12:25 schwarze
* arch.in, lib.in: Sync to groff, and add tier I and II NetBSD
architectures. ok kristaps@
2011-10-16 08:20 schwarze
* man_validate.c, mdoc_html.c, mdoc_macro.c, mdoc_term.c,
mdoc_validate.c, term_ps.c: Remove a bunch of useless
assignments, and assert that print_bvspace cannot be called on
NULL pointers. No change in behaviour, none of these were bugs,
but the code becomes easier to understand. Based on a clang
report posted by joerg@; ok kristaps@.
2011-10-09 18:10 schwarze
* man_html.c, mdoc_html.c: Always print <table> column widths in
-T[x]html; if desired, they can be overridden in the CSS file.
Suggested by kristaps@, and i always like to simplify code.
2011-10-09 17:37 schwarze
* mandoc.1: A bit more precision and nicer wording in the
descriptions of -Ofragment and -Tman; using input from jmc@ and
kristaps@.
2011-10-09 06:46 kristaps
* apropos.c: Make apropos results-gathering able to error out and
clean up before making the utility exit non-zero.
2011-10-09 06:37 kristaps
* apropos.c: Remove some unnecessary variables and note that
mchars_alloc never returns NULL.
2011-10-09 06:35 kristaps
* apropos.c: Use a binary tree (for now, unbalanced) for deduping
the records in the results array. This is much faster than the
previous method, a linear search, at a small cost. Note that
array offsets are used instead of storing the res pointer because
we may realloc the results vector.
2011-10-09 04:56 kristaps
* mandocdb.8: The documented flags in mandocdb (-u, -d) were
switched. Fix this.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2012-03-24 2:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-24 2:26 mdocml version 1.12.1 available Kristaps Dzonsons
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).