aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* Traditional roff(7) explicitly allows certain control charactersIngo Schwarze2015-01-222-9/+12
| | | | | | | in the input stream (SOH, STX, ETX, ENQ, ACK, BEL, BS) for specific purposes (leaders, backspace, delimiters, .tr), but making sure these don't leak through to the output is tricky, so mark them as unsupported for now.
* Don't let a failing mparse_open() clobber the filename pointer;Ingo Schwarze2015-01-221-3/+7
| | | | | fixes error message content and a use after free for .so with non-existent target when -Wall or -Tlint is given.
* improve wording; patch from jmc@Ingo Schwarze2015-01-221-3/+3
|
* Support homebrew-style linking on Mac OS X.Ingo Schwarze2015-01-213-5/+23
| | | | Idea found together with Alexis Hildebrandt <surryhill at gmail dot com>.
* Rudimentary implementation of the roff(7) \o escape sequence (overstrike).Ingo Schwarze2015-01-216-24/+61
| | | | | | This is of some relevance because the pod2man(1) preamble abuses it for the icelandic letter Thorn, instead of simply using \(TP and \(Tp. Missing feature found by sthen@ in DateTime::Locale::is_IS(3p).
* Improve overstriking. When overstriking a wider character with aIngo Schwarze2015-01-211-4/+34
| | | | | | narrower one, center the latter horizontally. After a group of characters printed in the same position, advance by the width of the widest one among them.
* pass empty request lines through to tbl(7); sometimes, they end a layoutIngo Schwarze2015-01-211-11/+10
|
* blank lines in tables do not need special handling; simplifies codeIngo Schwarze2015-01-213-31/+18
| | | | and reduces groff/mandoc differences in OpenBSD base by about 1%
* typo fixes from jmc@Ingo Schwarze2015-01-202-6/+6
|
* Split the -Werror message level into -Werror (broken manual, probablyIngo Schwarze2015-01-207-122/+1282
| | | | | | | | | | | | | using mandoc is better than using groff) and -Wunsupp (manual using unsupported low-level roff(7) feature, probably using groff is better than using mandoc). Once this feature is complete, it is intended to help porting, making the decision whether to USE_GROFF easier. As a first step, distinguish four classes of roff(7) requests: 1. Supported (currently 24 requests) 2. Currently ignored because unimportant (120) -> no message 3. Ignored for good because insecure (14) -> -Werror 4. Currently unsupported (68) -> these trigger the new -Wunsupp messages
* change spelling of centre to center: consistent with other man pagesIngo Schwarze2015-01-205-19/+19
| | | | and the name of the syntax elements being described; from tedu@
* Make the man(1) and apropos(1) options -s and -S much less expensive:Ingo Schwarze2015-01-201-49/+23
| | | | | | | | | | | | | | Do not append an SQL clause looking into the large "keys" table. Instead, filter the result of the SQL query in buildnames() where equivalent data from the much smaller "mlinks" table is already available for free. This is relevant because man(1) uses the equivalent of "-S ${MACHINE}" by default since main.c rev. 1.216, to make sure that manuals for the current architecture are shown. With many ports installed, this patch can speed up man(1) by a factor of more than a hundred. Slowness reported by Theo Buehler <theo at math dot ethz dot ch>, thanks!
* Let man(1) show manuals for the current architecture by default,Ingo Schwarze2015-01-161-1/+6
| | | | | and support the MACHINE environment variable as documented in man(1). Missing feature reported by pascal@.
* Parse and ignore .IX (generate index entry) macros because pod2man(1)Ingo Schwarze2015-01-161-1/+3
| | | | | emits them, by default without defining them, relying on the roff(7) quirk that undefined macros have no effect.
* Fatal errors no longer exist.Ingo Schwarze2015-01-1512-172/+105
| | | | | | If a file can be opened, mandoc will produce some output; at worst, the output may be almost empty. Simplifies error handling and frees a message type for future use.
* downgrade .so failure from FATAL to ERRORIngo Schwarze2015-01-153-31/+30
|
* downgrade ".so with absolute path" from FATAL to ERROR;Ingo Schwarze2015-01-144-13/+14
| | | | allows to get rid of ROFF_ERR
* simplify by getting rid of ROFF_ERR in tbl(7) parsing; no functional changeIngo Schwarze2015-01-144-17/+16
|
* To get rid of SYSERR entries in enum mandocerr, downgrade problems withIngo Schwarze2015-01-143-48/+30
| | | | | | missing and unreadable files from SYSERR to ERROR. Needed for upcoming work. As a bonus, this minimally simplifies code and documentation.
* if earlier files set a non-zero exit status,Ingo Schwarze2015-01-141-7/+13
| | | | do not allow later files to reset it to zero
* Simplify handling of system errors: just exit(3).Ingo Schwarze2015-01-142-43/+17
| | | | | We already do the same for malloc(3) failure. The is no virtue in trying to survive failure of fork(2) and the like.
* Be developer-friendly, 'cause OpenBSD devs like to:Ingo Schwarze2015-01-131-5/+106
| | | | | | | | | | | | | cd /usr/src/share/man/man4; vi newdev.4 Makefile; make install; man newdev When a manual is missing from an outdated database, let man(1) show it anyway, using a KISS file system lookup as a fallback. Requested by deraadt@. 87 new lines of code doesn't seem too much bloat to me. Of course, keeping your mandoc.db(5) files up to date with makewhatis(8) or weekly(8) is still required for apropos(1) to find your new pages.
* do not spawn a pager when there is no output; issue pointed out by deraadt@Ingo Schwarze2015-01-131-25/+36
|
* Bugfix: When the invocation of a user-defined macro follows a roffIngo Schwarze2015-01-071-1/+2
| | | | | conditional request on the same input line, don't skip the first few bytes of its content.
* Fix a potential NULL pointer access in an error message after waitpid()Ingo Schwarze2015-01-031-23/+16
| | | | | failure; found using detailed information provided by Ulrich Spoerlein <uqs at FreeBSD> about FreeBSD Coverity CID 1261304.
* Given the excessively technical description in the old mdoc_samples(7)Ingo Schwarze2015-01-031-8/+17
| | | | | | | | | | manual and its successor groff_mdoc(7), i always considered .Ql as purely physical markup, but it turns out describing it better allows to give it a semantic meaning (in-line literal display) that doesn't contradict existing usage. One less physical, one more semantic macro, yay! Found in a discussion with Steffen Nurpmeso <sdaoden at yandex dot com>.
* Explicitly set the *data member of struct ohash_info to NULL.Ingo Schwarze2015-01-021-2/+4
| | | | | | | It is never dereferenced, but it gets copied around, which worries static analysis tools and might also confuse human auditors. FreeBSD Coverity CID 1261298, 1261299, 1261300, reported by Pedro Giffuni and Ulrich Spörlein <pfg@ and uqs@ at FreeBSD>.
* Fix a buffer overrun triggered by a trailing backslash at EOF inIngo Schwarze2015-01-011-5/+7
| | | | | | | an unclosed conditional body. If the memory contained the byte sequence "\}" after the end of the buffer before the next NUL, this could even write beyond the end of the buffer, specifically '&' to the location of the '}'. Found by jsg@ with afl.
* Fix a read buffer overrun triggered by trailing \s- or trailing \s+Ingo Schwarze2015-01-011-4/+4
| | | | without the required subsequent argument; found by jsg@ with afl.
* Don't dereference NULL pointers when formatting missing denominators,Ingo Schwarze2015-01-012-11/+14
| | | | | subscripts, superscripts, or "from" or "to" arguments. Found by jsg@ with afl.
* If man(1) only has one single argument, always interpret it as a name,Ingo Schwarze2015-01-011-2/+3
| | | | | | never as a section. Who would have thought that people call their manual pages 7z(1), 9c(1), 9p(1), and 9p(3)... Patch from Sebastien Marie <semarie dash openbsd at latrappe dot fr>.
* describe .Ql more precisely;Ingo Schwarze2014-12-311-4/+7
| | | | defect pointed out by Steffen Nurpmeso <sdaoden at yandex dot com>
* When showing more than one formatted manual page, insert horizontal linesIngo Schwarze2014-12-313-4/+24
| | | | | | between pages. Suggested by Theo Buehler <theo at math dot ethz dot ch>. Even in UTF-8 output mode, do not use fancy line drawing characters such that you can easily use /^--- to skip to the next manual in your pager.
* fix wrong paths below FILES; from Theo Buehler <theo at math dot ethz dot ch>Ingo Schwarze2014-12-301-6/+6
|
* When a file is given on the command line, actually exists, and its nameIngo Schwarze2014-12-301-1/+2
| | | | | | | relative to the respective manual tree is longer than PATH_MAX, do not leak the memory allocated to hold the name. Not sure that can actually happen, but better safe than sorry. FreeBSD Coverity Scan CID 1261303, reported by Pedro Giffuni <pfg@>.
* Improve documentation of the header/footer macros .Dt, .Os, .TH:Ingo Schwarze2014-12-282-30/+32
| | | | | | * State the defaults for .Os and the fourth .TH argument. * Sync the section titles, and stop advertising obscure sections that aren't actually fully supported and certainly not recommended for use.
* mdoc(7) already uses the mandoc(1) -Ios argument in the footer lineIngo Schwarze2014-12-287-13/+28
| | | | | | when .Os has no argument, so do the same for man(7) when .TH has less than four arguments; there is no reason to treat both differently. Issue found following a question from Thomas Klausner <wiz at NetBSD>.
* improve previous: do the size check up front to avoid leaking memoryIngo Schwarze2014-12-281-7/+5
|
* Reduce memory and time consumption on certain malformed input filesIngo Schwarze2014-12-252-5/+14
| | | | | | by limiting the length of expanded input lines during the (usually recursive) expansion of user defined strings. Resource hogging found by jsg@ with afl.
* Support negative indentations for mdoc(7) displays and lists.Ingo Schwarze2014-12-243-81/+87
| | | | | | Not exactly recommended for use, rather for groff compatibility. While here, introduce similar SHRT_MAX limits as in man(7), fixing a few cases of infinite output found by jsg@ with afl.
* For .RS, we need to save the information how much we actually indentedIngo Schwarze2014-12-242-29/+16
| | | | | | | because negative indents can get truncated, in which case we no longer know how to restore the original indent at the end of the block. This also solves another case of effectively infinite output found by jsg@ with afl, triggered by very large negative indents.
* Prevent unsigned integer underflow when a number is too wideIngo Schwarze2014-12-241-4/+8
| | | | | for a table cell with an "nz" layout specification, causing essentially infinite output as found by jsg@ with afl.
* When a man(7) document contains unreasonably large numbers forIngo Schwarze2014-12-242-12/+23
| | | | | | | | | | | indentations or paragraph distances, large output may be generated, which is practically the same as an endless loop; found by jsg@ with afl. Reject such unreasonably large numbers beyond arbitrary limits similar to those used by groff (max. 65 blank lines between paragraphs and max. SHRT_MAX characters per output line) and fall back to defaults when exceeded. Having the limits behave in exactly the same way is not relevant.
* support negative horizontal widths in man(7);Ingo Schwarze2014-12-237-136/+100
| | | | minus twenty lines of code in spite of enhanced functionality
* fix typo in previousIngo Schwarze2014-12-231-3/+3
|
* some scaling unit fixes:Ingo Schwarze2014-12-236-75/+55
| | | | | - .sp with an invalid argument is .sp 1v, not .sp 0v - in man(1), trailing garbage doesn't make scaling units invalid
* even if the second argument to .IP is invalid, don't print itIngo Schwarze2014-12-231-4/+3
|
* Fix vertical scaling. Obviously, nobody ever had a serious look at this.Ingo Schwarze2014-12-231-8/+19
| | | | | Basic units, centimeters, points, ens, ems, and the rounding algorithm were all wrong, only inches, pica, and the default vertical span worked.
* In a2roffsu(), do not parse the number twice.Ingo Schwarze2014-12-231-44/+13
| | | | | Gets rid of 25 lines of code and one static buffer. No functional change for numbers shorter than BUFSIZ characters.
* correctly handle scaling units after .PDIngo Schwarze2014-12-231-3/+5
|