aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* Almost complete implementation of roff(7) numerical expressions.Ingo Schwarze2014-04-072-76/+289
| | | | | | | Support all binary operators except ';' (scale conversion). Fully support chained operations and nested parentheses. Use this for the .nr, .if, and .ie requests. While here, fix parsing of integer numbers in roff_getnum().
* bugfix: make sure all variables are properly initializedIngo Schwarze2014-04-051-6/+6
| | | | when rendering .ll (line length) requests. oops.
* Implement the roff(7) .rr (remove register) request.Ingo Schwarze2014-04-052-9/+41
| | | | | As reported by sthen@, the perl-5.18 pod2man(1) preamble thinks cool kids use that in manuals. I hope *you* know better.
* In -p (picky) mode, warn unless each filename (aka mlink)Ingo Schwarze2014-04-041-25/+30
| | | | | appears as a name in the NAME section. While here, garbage collect two unused variables, both called "match".
* Warn about missing mlinks.Ingo Schwarze2014-04-041-1/+41
| | | | | | This is really expensive, more than tripling database build times, so only do it when the -p (picky) option was given, but none of the following options were given: -Q (quick), -d, -u, or -t.
* Remember which names are in the NAME section.Ingo Schwarze2014-04-044-57/+64
| | | | | | | This helps to find missing MLINKS. Database build times do not change and database growth is minimal (1.2% with -Q, 0.7% without -Q in /usr/share/man), so making this optional would be pointless.
* merge OpenBSD rev. 1.20, describing new featuresIngo Schwarze2014-04-041-4/+22
|
* When the -n or -t flag is given to makewhatis(8),Ingo Schwarze2014-04-042-10/+44
| | | | | | write names and decriptions to stdout, in a format similar to apropos(1) output. Inspired by espie@'s makewhatis.
* Instead of silently doing nothing at all,Ingo Schwarze2014-04-031-1/+6
| | | | | | | | | | warn and return non-zero when the manpath is empty, that is, when /etc/man.conf is non-existent or unreadable AND the environment variable MANPATH is unset or empty AND no directories were given on the command line. Inspired by the error handling in espie@'s makewhatis(8), except that one doesn't know about MANPATH.
* Rename the -W option to -p (mnemonics: picky, print to stderr):Ingo Schwarze2014-04-032-19/+26
| | | | | | | That letter was already chosen by espie@ for OpenBSD 2.7, so avoid being gratuitiously different more than a decade later. Accept -v for backward compatibility with espie@'s makewhatis, even though it does nothing right now.
* The -v option of mandocdb(8) clashes with the -v option of espie@'sIngo Schwarze2014-04-032-21/+19
| | | | | makewhatis(8), which traditionally does something different, so rename it to -D (mnemonics: Debug, Dump, Display).
* document -Q and -T; from OpenBSDIngo Schwarze2014-04-031-8/+24
|
* Support the CONTEXT section for kernel manual pages found in Solaris andIngo Schwarze2014-03-314-6/+20
| | | | | OpenBSD manuals. It describes which contexts you can call functions in. from dlg@, ok jmc@ deraadt@
* Improve formatting of broken blocks in -Tman,Ingo Schwarze2014-03-301-3/+12
| | | | | somewhat similar to what mdoc_term.c already does for -Tascii. OpenBSD rev. 1.58.
* Allow ERRORS in section 4; OpenBSD rev. 1.121.Ingo Schwarze2014-03-301-3/+5
|
* Support relative arguments to .ll (increase or decrease line length).Ingo Schwarze2014-03-307-22/+63
|
* Implement the roff(7) .ll (line length) request.Ingo Schwarze2014-03-3019-31/+129
| | | | | Found by naddy@ in the textproc/enchant(1) port. Of course, do not use this in new manuals.
* Allow leading and trailing vertical lines,Ingo Schwarze2014-03-283-7/+19
| | | | | | | and format them in the same way as groff. While here, do not require whitespace before vertical lines in layout specifications. Issues found by bentley@ in mpv(1).
* Properly initialize malloc(3)ed memory.Ingo Schwarze2014-03-281-1/+2
| | | | | With this bug fix, partly unitialized memory could sometimes be returned, sometimes causing crashes by bogus free(3)s in apropos(1).
* Without bloating mandoc(1) itself, let mandocdb(8) support filesIngo Schwarze2014-03-261-17/+81
| | | | | called manN/X.N.gz and catN/X.0.gz, reading them through a pipe(2) from gunzip(1) -c. Asked for by various people in the past.
* Improve error reporting.Ingo Schwarze2014-03-261-34/+52
| | | | | | | | Simplify combining a custom format string with perror(), avoiding many manual calls to strerror(errno). For low-level failures, report attempted function calls. Do not abuse the say() filename argument for files outside the basedir, and even less for other text.
* Skip leading escape sequences in man_deroff(). Helps indexing ofIngo Schwarze2014-03-231-4/+11
| | | | some manuals containing overzealous escaping in their NAME section.
* Retire the old concat() function.Ingo Schwarze2014-03-231-78/+27
| | | | | | | | For .Sh, i wasn't even needed at all. For .Dd, .Nm, and .Os, use the new mdoc_deroff() instead. This gets rid of the last limited-size static buffers in this file, hence eliminates the last explicit MANDOCERR_MEM throwers here, and it shortens the code by 50 lines.
* If an .Nd block contains macros, avoid fragmented entries in mandocdb(8),Ingo Schwarze2014-03-233-28/+47
| | | | instead use the .Nd content recursively.
* If a man(7) NAME section contains macros, avoid truncated or emptyIngo Schwarze2014-03-233-49/+52
| | | | | | entries for .Nd in mandocdb(8), instead use the macro content recursively. This improves indexing of more than 200 manuals in Xenocara, i.e. more than 15%, in particular GL and some Xkb.
* needs mandoc_aux, tooIngo Schwarze2014-03-231-1/+2
|
* avoid repetitive code for asprintf error handlingIngo Schwarze2014-03-235-52/+22
|
* The files mandoc.c and mandoc.h contained both specialised low-levelIngo Schwarze2014-03-232-0/+137
| | | | | | functions used for multiple languages (mdoc, man, roff), for example mandoc_escape(), mandoc_getarg(), mandoc_eos(), and generic auxiliary functions. Split the auxiliaries out into their own file and header.
* The files mandoc.c and mandoc.h contained both specialised low-levelIngo Schwarze2014-03-2334-160/+122
| | | | | | | functions used for multiple languages (mdoc, man, roff), for example mandoc_escape(), mandoc_getarg(), mandoc_eos(), and generic auxiliary functions. Split the auxiliaries out into their own file and header. While here, do some #include cleanup.
* Remove currently unimplemented macros from the lists of used-definedIngo Schwarze2014-03-201-15/+17
| | | | | | | macros to be cleared during .Dd and .TH because clearing them at that point defeats the purpose of backup implementations provided in the manual page itself, some of which _do_ work with mandoc(1). While here, add the new .%C macro to the list to be cleared.
* Register pure .so pages as mlinks, not as mpages.Ingo Schwarze2014-03-191-20/+68
| | | | | | | This doesn't affect /usr/share/man, but improves /usr/X11R6/man: * Eliminates multiple apropos(1) output for such pages. * Reduces X11R6 database size from 450 kB to 240 kB (-47%). * Reduces X11R6 database build time from 1.68s to 1.00s (-40%).
* Without the MPARSE_SO option, if the file contains nothing but aIngo Schwarze2014-03-196-13/+30
| | | | | | single .so request, do not read the file pointed to, but instead let mparse_result() provide the file name pointed to as a return value. To be used by makewhatis(8) in the future.
* cope with mparse_alloc() interface changeIngo Schwarze2014-03-192-4/+4
|
* Generalize the mparse_alloc() and roff_alloc() functions by givingIngo Schwarze2014-03-196-58/+50
| | | | | | | | them an "options" argument, replacing the existing "inttype" and "quick" arguments, preparing for a future MPARSE_SO option. Store this argument in struct mparse and struct roff, replacing the existing "inttype", "parsetype", and "quick" members. No functional change except one tiny cosmetic fix in roff_TH().
* Allow checking that databases are up to date even when you have no writeIngo Schwarze2014-03-181-21/+95
| | | | | | permission on the databases, as requested by espie@ quite some time ago. But make sure to not slow database generation down when you do have write permission, and to not delay error reporting in -Q mode.
* in apropos(1) output, sort names and avoid multiple section numbersIngo Schwarze2014-03-171-7/+55
|
* Sync to OpenBSD:Ingo Schwarze2014-03-171-57/+153
| | | | | | | | * do not talk about shell globbing * describe logical operations * improve examples * add HISTORY * some wording improvements for clarity
* minor sync to OpenBSDIngo Schwarze2014-03-171-6/+28
|
* sync to OpenBSD: .ft is a roff(7) request, not a man(7) macro,Ingo Schwarze2014-03-172-10/+32
| | | | and it is not even used frequently in man(7)
* In -Tutf8 mode, make sure that hyphens get counted against the output lineIngo Schwarze2014-03-131-7/+8
| | | | | | | length even when they are breakable. Before this, a line containing N breakable hyphens could get up to N characters wider than the right margin in -Tutf8 output mode. Issue reported by tedu@ on <bugs at OpenBSD>.
* new bug report from wiz@ regarding Tcl*(3)Ingo Schwarze2014-03-081-1/+11
|
* In .nf mode, use the MAN_LINE flag to detect input line breaksIngo Schwarze2014-03-081-2/+2
| | | | | | instead of the man_node line member. This is required to preserve line breaks contained in user-defined macros called in .nf mode. Found in a code audit triggered by fixing a similar issue in .TP.
* To find out whether .TP head arguments are same-line or next-line arguments,Ingo Schwarze2014-03-083-14/+27
| | | | | | | | use the MAN_LINE flag instead of the man_node line member. This is required such that user-defined macros wrapping .TP work correctly. Issue found by Havard Eidnes in Tcl_NewStringObj(3), reported via the NetBSD bug tracking system and Thomas Klausner <wiz at NetBSD>.
* Improve .if/.ie condition handling.Ingo Schwarze2014-03-082-97/+159
| | | | | | | | | | | | | | * Support string comparisons. * Support negation not only for numerical, but for all conditions. * Switch the `o' condition from false to true. * Handle the `c', `d', and `r' conditions as false for now. * Use int for boolean data instead of rolling our own "enum roffrule"; needed such that we can use the standard ! and == operators. Havard Eidnes reported via the NetBSD bug tracking system that some Tcl*(3) manuals need this, and Thomas Klausner <wiz at NetBSD> forwarded the report to me. This doesn't make the crazy Tcl*(3) macrology maze happy yet, but brings us a bit closer.
* In roff_cond_sub(), make sure that the incorrect input sequence `\\}',Ingo Schwarze2014-03-071-12/+13
| | | | | | | when found on a macro line, does not close a conditional block. The companion function roff_cond_text() already did this correctly, but make the code more readable without functional change. While here, report the correct column number in related error messages.
* Even on macro lines, \} must not cause whitespace.Ingo Schwarze2014-03-071-15/+11
|
* Three bugfixes related to the closing of conditional blocks:Ingo Schwarze2014-03-071-26/+13
| | | | | | | | | | 1. Handle more than one `\}' on macro lines, as it was already done for text lines. 2. Do not treat `\}' as a macro invocation after a dot at the beginning of a line. That allows more than one `\}' to work on lines starting with `.\}'. It also simplifies the code. 3. Do not complain about characters following `\}'. Those are not lost, but handled normally both on text and macro lines.
* In -Tutf8 mode, mandoc_char(7) named accent character escape sequencesIngo Schwarze2014-03-051-12/+12
| | | | | | | | | | | | | | have to render as non-combining accents; if you want combining accents, you have to explicitly specify them using the Unicode character numbers for combining accents, or you can use character escape sequences for accented characters. This lets mandoc behave like groff. Additionally, both the Ossanna/Kernighan/Ritter troff manual and the GNU troff manual say that \' and \` are equivalent to \(aa and \(ga, respectively, so do the same for these. This mitigates issues with man(7) code autogenerated by texinfo2man(1), which mistranslates TeX ` and ' to \` and \' instead of \(oq and \(cq as reported by sthen@ and as analyzed by bentley@.
* - remove index.html, it is now part of the website repoIngo Schwarze2014-03-034-519/+30
| | | | | - install mandocdb, manpage, and apropos - and some general cleanup (e.g., installcgi is .PHONY)
* MANDOCERR_BADTAB needs checking, but .UR/.UE is doneIngo Schwarze2014-03-031-6/+12
|