summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Reduce code duplication, no functional change:Ingo Schwarze2015-04-051-50/+44
| | | | | Both partial and full implicit blocks can break explicit blocks. Put the code to handle both cases into a common function.
* Arguments to end macros of broken partial explicit blocksIngo Schwarze2015-04-051-9/+7
| | | | | | | | must go inside the breaking block. For example, in .It Ic cmd Oo .Ar optional_arg Oc Ar mandatory_arg the mandatory_arg is still inside the .It block. Used for example by mutella(1).
* allow using an alternate mandoc binaryIngo Schwarze2015-04-051-1/+2
|
* Give man(7) section and subsection headers hanging indentation.Ingo Schwarze2015-04-041-0/+12
| | | | | | Reduces groff-mandoc differences in base by about 2.5% due to various Perl manuals having long section titles. Quirk found in argtable2(3).
* Rounding rules for horizontal scaling widths are more complicated.Ingo Schwarze2015-04-046-44/+38
| | | | | | | | | | | | | There is a first rounding to basic units on the input side. After that, rounding rules differ between requests and macros. Requests round to the nearest possible character position. Macros round to the next character position to the left. Implement that by changing the return value of term_hspan() to basic units and leaving the second scaling and rounding stage to the formatters instead of doing it in the terminal handler. Improves for example argtable2(3).
* Don't allow breaking the output line after hyphens following escapeIngo Schwarze2015-04-041-0/+2
| | | | | sequences. Improves tic(1), sxpm(1), and a few Perl manuals. Quirk found by naddy@ in milter-greylist(8).
* Fix a quirk with respect to empty .HP.Ingo Schwarze2015-04-041-0/+11
| | | | | Found while writing a regression test for man_macro.c rev. 1.66. Incidentally, this brings rendering of XFreeEventData(3) closer to groff.
* Vastly simplify man(7) block unwinding, similar to mdoc_macro.c 1.171.Ingo Schwarze2015-04-031-118/+33
| | | | | Drop one enum type, two static functions, 70 lines of code. Also fixes the mpeg_encode(1) manual reported broken by naddy@.
* It turns out the man(7) parser suffers from unintelligible handlingIngo Schwarze2015-04-031-1/+1
| | | | | | | | of block rewinding, just like then mdoc(7) parser did. First step in getting rid of rew_scope(): Replace the only call where the target block is known. This commit is analogous to mdoc_macro.c rev. 1.167. One down, three to go.
* portability: word boundaries in regular expressionsIngo Schwarze2015-04-031-0/+8
|
* No need to hardcode /usr/bin/ as the path to more(1); helps portability.Ingo Schwarze2015-04-034-4/+7
| | | | | We don't hardcode the paths to gunzip(1) and cmp(1) either. Discussed with ajacoutot@.
* Third step towards parser unification:Ingo Schwarze2015-04-0217-117/+111
| | | | | Replace struct mdoc_meta and struct man_meta by a unified struct roff_meta. Written of the train from London to Exeter on the way to p2k15.
* Second step towards parser unification:Ingo Schwarze2015-04-0223-608/+577
| | | | | | | | | Replace struct mdoc_node and struct man_node by a unified struct roff_node. To be able to use the tok member for both mdoc(7) and man(7) without defining all the macros in roff.h, sacrifice a tiny bit of type safety and make tok an int rather than an enum. Almost mechanical, no functional change. Written on the Eurostar from Bruxelles to London on the way to p2k15.
* First step towards parser unification:Ingo Schwarze2015-04-0228-549/+597
| | | | | | Replace enum mdoc_type and enum man_type by a unified enum roff_type. Almost mechanical, no functional change. Written on the ICE train from Frankfurt to Bruxelles on the way to p2k15.
* Let man(1) and apropos(1) work even when the current directoryIngo Schwarze2015-04-011-35/+33
| | | | | | | is unusable: Only change back to the current directory when the directory was changed before and the next path is relative. This is now more similar to what makewhatis(8) does. Issue reported by espie@.
* Escape punctuation characters that have a different meaning in -Tpdf.Ingo Schwarze2015-03-304-50/+46
| | | | | | | | ~, `, and ' get translated to non-ASCII characters by most troff implementations when generating PostScript/PDF output. When the original ASCII character is meant, it needs to be manually escaped. Patch from bentley@.
* refering -> referring; patch from jmc@Ingo Schwarze2015-03-271-1/+1
|
* Actually use the new man.conf(5) "output" directive.Ingo Schwarze2015-03-277-121/+91
| | | | Additional functionality, yet minus 45 lines of code.
* Parse the new man.conf(5) "output" directive.Ingo Schwarze2015-03-2712-132/+212
| | | | The next step will be to actually use the parsed data.
* Modernize documentation by inserting blanks between option lettersIngo Schwarze2015-03-272-59/+56
| | | | | | and option arguments, except for -m because "-m an" and "-m andoc" look just too weird. Of course, the traditional form without the blank will continue to work.
* various tweaks from jmc@Ingo Schwarze2015-03-271-24/+17
|
* oops, forgot to apply the actual patch...Ingo Schwarze2015-03-271-0/+22
|
* Document that certain stand-alone accents need escaping in rare cases toIngo Schwarze2015-03-271-1/+1
| | | | | prevent them from being converted to Unicode replacements in PDF output. Issue found by bentley@, OK jmc@ bentley@.
* Add man.conf(5). After adding some additional functionality,Ingo Schwarze2015-03-274-0/+130
| | | | | one of the next steps will be to use it in addition to manpath(1) rather than as an alternative to it.
* Add a new directive "manpath path"Ingo Schwarze2015-03-261-26/+42
| | | | | | to replace the legacy "_whatdb path/whatis.db". Keep _whatdb support for backward compat, for now. Discussed with many, jmc@ and ajacoutot@ agree with the general direction.
* make MANPATH_DEFAULT compile-time configurableIngo Schwarze2015-03-223-1/+9
|
* when there is no -m, no -M, no MANPATH and no /etc/man.conf,Ingo Schwarze2015-03-211-1/+5
| | | | fall back to /usr/share/man:/usr/X11R6/man:/usr/local/man
* vasprintf(3) needs _GNU_SOURCE on Linux;Ingo Schwarze2015-03-201-0/+4
| | | | pointed out by Christian Neukirchen <chneukirchen at gmail dot com>.
* Patch from Christian Neukirchen <chneukirchen at gmail dot com>:Ingo Schwarze2015-03-201-2/+6
| | | | | He reports that on some platforms, it is not possible to use the same va_list twice. So use va_copy(3) for additional safety.
* The .PD macro can occur in next-line scope. Fixes zshmisc(1).Ingo Schwarze2015-03-201-1/+1
| | | | Issue reported by Christian Neukirchen <chneukirchen at gmail dot com>.
* Simplify by almost halving the number of macro flags:Ingo Schwarze2015-03-202-23/+22
| | | | | | | 1. MAN_EXPLICIT was used iff fp == blk_exp, so just test fp. 2. MAN_FSCOPED was used only for TP, so just test for TP. 3. MAN_NOCLOSE was completely unused. No functional change.
* Compat glue needed for Solaris 9 and 10.Ingo Schwarze2015-03-1910-1/+247
| | | | | | | Thanks to Sevan Janiyan <venture37 at geeklan dot co dot uk> for reporting the Solaris 10 issues, to Jan Holzhueter <jh at opencsw dot org> for some additional insight, and to OpenCSW in general for providing me with a Solaris 9/10/11 testing environment.
* We always use FTS_NOCHDIR, so delete the directory changing code.Ingo Schwarze2015-03-182-170/+15
| | | | | | This not only simplifies matters, but also helps operating systems lacking dirfd(3), for example Solaris 10. Solaris dirfd issue reported by Sevan Janiyan <venture37 at geeklan dot co dot uk>.
* Pass the CC set in configure.local to Makefile.local.Ingo Schwarze2015-03-181-0/+1
| | | | Issue found while testing on opencsw.org.
* Simplify: Now that rc is global anyway, no need to pass it aroundIngo Schwarze2015-03-171-26/+19
| | | | as an argument. No functional change.
* When the user exits the pager before the pager has drained all inputIngo Schwarze2015-03-172-1/+14
| | | | | | | | from man(1), man(1) dies from SIGPIPE. Exiting man(1) is fine in this case, generating more output would be pointless, but without handling SIGPIPE, the exit code from man(1) was wrong and csh(1) printed an ugly message "Broken pipe". Fix this by handling SIGPIPE explicitly. Issue noticed by deraadt@.
* naddy@ found a tough problem - fittingly, in cobfusc(1)...Ingo Schwarze2015-03-161-0/+13
|
* Avoid off-by-one read access to the termacts array, which couldIngo Schwarze2015-03-151-1/+2
| | | | | sometimes result in missing line breaks before subsection headers. Found by carsten dot kunze at arcor dot de on SuSE 13.2.
* Remove the first comma from constructs like ", and," and ", or,":Ingo Schwarze2015-03-131-1/+1
| | | | | | You can use "and" and "or" to join sentence clauses, and you can use commas, but both hinders reading; patch from jmc@.
* release 1.13.3VERSION.1.13.3Ingo Schwarze2015-03-132-2/+117
|
* Fix hardlink detection on platforms having padding in struct inodev,Ingo Schwarze2015-03-131-0/+1
| | | | | | typically 64bit platforms. This was basically broken since forever. Not only is the padding used, but it was used uninitialized. Problem reported by jmc@.
* When manpath(1) is available, enable HAVE_MANPATH even when buildingIngo Schwarze2015-03-111-3/+1
| | | | | without database support. Required now that we have man(1) even without database support.
* When interpreting the -O argument as a macro name fails,Ingo Schwarze2015-03-112-2/+8
| | | | | fall back to showing Nd rather than not showing anything. Issue reported by jmc@.
* Fix previous: size_t is often narrower than off_t.Ingo Schwarze2015-03-111-1/+1
| | | | Cluestick applied by joerg at NetBSD.
* The st_size member of struct stat is off_t, which is signed,Ingo Schwarze2015-03-101-1/+1
| | | | | all required by POSIX. So don't compare it against against an unsigned constant.
* We can keep track of the pager PID without additional complexity.Ingo Schwarze2015-03-101-26/+22
| | | | | No functional change for now, but more robust in case anybody should ever add additional child processes.
* Fix a regression caused in rev. 1.212, reported by kristaps@:Ingo Schwarze2015-03-101-3/+21
| | | | | | | | | | | | When using a pager and the first manual shown is gzip'ed, the gunzip(1) process ended up as a child of the pager process such that the man(1) process couldn't wait for it, preventing proper display of the manual. Solve this by making the pager a child of the man(1) process (instead of the other way round), which requires being a bit more careful about properly closing file descriptors after use and waiting for the pager before exiting man(1).
* update for 1.13.3Ingo Schwarze2015-03-091-90/+25
|
* use \(dq rather than \*q; patch from bentley@Ingo Schwarze2015-03-091-22/+22
|
* Fix vertical spacing at the beginning of tables.Ingo Schwarze2015-03-063-9/+4
| | | | | | man(7) always prints a blank line, mdoc(7) doesn't. Problem in mdoc(7) reported by kristaps@. mdoc(7) part of the patch tested by kristaps@.