Up to [cvsweb.bsd.lv] / mandoc
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.80 / (download) - annotate - [select for diffs], Sun Jun 27 17:57:54 2021 UTC (3 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6,
HEAD
Changes since 1.79: +2 -2 lines
Diff to previous 1.79 (unified) to selected 1.38 (unified)
add a style message about overlong text lines, trying very hard to avoid false positives, not at all trying to catch as many cases as possible; feature originally suggested by tb@, OK tb@ kn@ jmc@
Revision 1.79 / (download) - annotate - [select for diffs], Fri Apr 3 11:35:01 2020 UTC (4 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.78: +6 -3 lines
Diff to previous 1.78 (unified) to selected 1.38 (unified)
Remove some stray argument names from function prototypes, for consistency with the dominant style used in mandoc. No functional change. Patch from Martin Vahlensieck <academicsolutions dot ch>.
Revision 1.78 / (download) - annotate - [select for diffs], Sun Jan 19 16:44:50 2020 UTC (4 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.77: +4 -3 lines
Diff to previous 1.77 (unified) to selected 1.38 (unified)
Align to the new, sane behaviour of the groff_mdoc(7) .Dd macro: without an argument, use the empty string, and always concatenate all arguments, no matter their number. This allows reducing the number of arguments of mandoc_normdate() and some other simplifications, at the same time polishing some error messages by adding the name of the macro in question.
Revision 1.77 / (download) - annotate - [select for diffs], Fri Dec 21 17:15:18 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_5
Changes since 1.76: +2 -2 lines
Diff to previous 1.76 (unified) to selected 1.38 (unified)
Rename mandoc_getarg() to roff_getarg() and pass it the roff parser struct as an argument such that after copy-in, it can call roff_expand() once again, which used to be called roff_res() before this. This fixes a subtle low-level roff(7) parsing bug reported by Fabio Scotoni <fabio at esse dot ch> in the 4.4BSD-Lite2 mdoc.samples(7) manual page, because that page used an escaped escape sequence in a macro argument. To expand escaped escape sequences in quoted mdoc(7) arguments, too, stop bypassing the call to roff_getarg() in mdoc_argv.c, function args() for this case. This does not solve the case of escaped escape sequences in quoted .Bl -column phrases yet. Because roff_expand() can make the string longer, roff_getarg() can no longer operate in-place but needs to malloc(3) the returned string. In the high-level parsers, free(3) that string after processing it.
Revision 1.76 / (download) - annotate - [select for diffs], Fri Dec 14 06:33:14 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.75: +4 -6 lines
Diff to previous 1.75 (unified) to selected 1.38 (unified)
Cleanup, no functional change: Now that message handling is properly encapsulated, remove struct mparse pointers from four structs (roff, roff_man, tbl_node, eqn_node) and from the argument lists of five functions (roff_alloc, roff_man_alloc, mandoc_getarg, tbl_alloc, eqn_alloc). Except for being passed to the main program as an opaque object, it now only occurs in read.c, as it should, and not across 15 files like in the past.
Revision 1.75 / (download) - annotate - [select for diffs], Fri Dec 14 01:18:25 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.74: +1 -6 lines
Diff to previous 1.74 (unified) to selected 1.38 (unified)
Major cleanup; may imply minor changes in edge cases of error reporting. Finally, drop support for the run-time configurable mandocmsg() callback. It was over-engineered from the start, never used for anything in a decade, and repeatedly caused maintenance headaches. Consolidate reporting infrastructure into two files, mandoc.h and mandoc_msg.c, mopping up the bits and pieces that were scattered around main.c, read.c, mandoc_parse.h, libmandoc.h, the prototypes of four parsing-related functions, and both parser structs.
Revision 1.74 / (download) - annotate - [select for diffs], Fri Aug 24 23:12:33 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.73: +23 -12 lines
Diff to previous 1.73 (unified) to selected 1.38 (unified)
Rudimentary implementation of the roff(7) .while request. Needed for example by groff_hdtbl(7). There are two limitations: It does not support nested .while requests yet, and each .while loop must start and end in the same scope. The roff_parseln() return codes are now more flexible and allow OR'ing options.
Revision 1.73 / (download) - annotate - [select for diffs], Thu Aug 23 19:33:27 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.72: +4 -3 lines
Diff to previous 1.72 (unified) to selected 1.38 (unified)
The upcoming .while request will have to re-execute roff(7) lines parsed earlier, so they will have to be saved for reuse - but the read.c preparser does not know yet whether a line contains a .while request before passing it to the roff parser. To cope with that, save all parsed lines for now. Even shortens the code by 20 lines.
Revision 1.72 / (download) - annotate - [select for diffs], Thu Aug 23 14:29:38 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.71: +5 -2 lines
Diff to previous 1.71 (unified) to selected 1.38 (unified)
Implement the roff(7) .shift and .return requests, for example used by groff_hdtbl(7) and groff_mom(7). Also correctly interpolate arguments during nested macro execution even after .shift and .return, implemented using a stack of argument arrays. Note that only read.c, but not roff.c can detect the end of a macro execution, and the existence of .shift implies that arguments cannot be interpolated up front, so unfortunately, this includes a partial revert of roff.c rev. 1.337, moving argument interpolation back into the function roff_res().
Revision 1.71 / (download) - annotate - [select for diffs], Mon Apr 9 22:27:04 2018 UTC (6 years, 5 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_4
Changes since 1.70: +2 -2 lines
Diff to previous 1.70 (unified) to selected 1.38 (unified)
When accessing an undefined number register, define it to be zero, like the previous commit for strings and macros, only technically simpler. Desired behaviour also mentioned by Werner Lemberg in 2011. This diff adds functionality but is -21 +19 LOC. :-)
Revision 1.70 / (download) - annotate - [select for diffs], Sat Jul 8 17:52:49 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_3,
VERSION_1_14_2
Changes since 1.69: +2 -6 lines
Diff to previous 1.69 (unified) to selected 1.38 (unified)
Simplify by creating struct roff_node syntax tree nodes for tbl(7) right from roff_parseln() rather than delegating to read.c, similar to what i just did for eqn(7). The interface function roff_span() becomes obsolete and is deleted, the former interface function roff_addtbl() becomes static, the interface functions tbl_read() and tbl_cdata() become void, and minus twelve linus of code. No functional change.
Revision 1.69 / (download) - annotate - [select for diffs], Sat Jul 8 14:51:04 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.68: +1 -4 lines
Diff to previous 1.68 (unified) to selected 1.38 (unified)
1. Eliminate struct eqn, instead use the existing members of struct roff_node which is allocated for each equation anyway. 2. Do not keep a list of equation parsers, one parser is enough. Minus fifty lines of code, no functional change.
Revision 1.68 / (download) - annotate - [select for diffs], Sun Jun 11 19:37:00 2017 UTC (7 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.67: +2 -2 lines
Diff to previous 1.67 (unified) to selected 1.38 (unified)
Style message about legacy man(7) date format in mdoc(7) documents and operating system dependent messages about missing or unexpected Mdocdate; inspired by mdoclint(1).
Revision 1.67 / (download) - annotate - [select for diffs], Sat Apr 29 12:45:41 2017 UTC (7 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.66: +1 -3 lines
Diff to previous 1.66 (unified) to selected 1.38 (unified)
Parser unification: use nice ohashes for all three request and macro tables; no functional change, minus two source files, minus 200 lines of code.
Revision 1.66 / (download) - annotate - [select for diffs], Sat Feb 18 13:43:52 2017 UTC (7 years, 7 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_1,
VERSION_1_13
Changes since 1.65: +2 -2 lines
Diff to previous 1.65 (unified) to selected 1.38 (unified)
preconv_encode() can take a const input buffer; diff from <christos at NetBSD>
Revision 1.65 / (download) - annotate - [select for diffs], Fri Feb 17 14:31:52 2017 UTC (7 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.64: +2 -2 lines
Diff to previous 1.64 (unified) to selected 1.38 (unified)
Be consistent in protecting __attribute__ attributes with __; from Christos Zoulas <christos @ NetBSD>.
Revision 1.64 / (download) - annotate - [select for diffs], Tue Jul 19 13:36:13 2016 UTC (8 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.63: +3 -5 lines
Diff to previous 1.63 (unified) to selected 1.38 (unified)
Use __attribute__((__format__ throughout. Triggered by a smaller patch from Christos Zoulas. While here, unify style, move several config tests to config.h, and delete the useless MANDOC_CONFIG_H.
Revision 1.63 / (download) - annotate - [select for diffs], Thu Jul 7 19:19:01 2016 UTC (8 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_4
Changes since 1.62: +1 -2 lines
Diff to previous 1.62 (unified) to selected 1.38 (unified)
update developer documentation
Revision 1.62 / (download) - annotate - [select for diffs], Sat Nov 7 14:01:16 2015 UTC (8 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.61: +1 -4 lines
Diff to previous 1.61 (unified) to selected 1.38 (unified)
In private header files, __BEGIN_DECLS and __END_DECLS are pointless. Because these work slightly differently on different systems, they are becoming a maintenance burden in the portable version, so delete them. Besides, one of the chief design goals of the mandoc toolbox is to make sure that nothing related to documentation requires C++. Consequently, linking mandoc against any kind of C++ program would defeat the purpose and is not supported. I don't understand why kristaps@ added them in the first place.
Revision 1.61 / (download) - annotate - [select for diffs], Tue Oct 13 22:59:54 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.60: +2 -3 lines
Diff to previous 1.60 (unified) to selected 1.38 (unified)
Major character table cleanup: * Use ohash(3) rather than a hand-rolled hash table. * Make the character table static in the chars.c module: There is no need to pass a pointer around, we most certainly never want to use two different character tables concurrently. * No need to keep the characters in a separate file chars.in; that merely encourages downstream porters to mess with them. * Sort the characters to agree with the mandoc_chars(7) manual page. * Specify Unicode codepoints in hex, not decimal (that's the detail that originally triggered this patch). No functional change, minus 100 LOC, and i don't see a performance change.
Revision 1.60 / (download) - annotate - [select for diffs], Sun Apr 19 14:25:41 2015 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.59: +1 -5 lines
Diff to previous 1.59 (unified) to selected 1.38 (unified)
Unify some node handling functions that use TOKEN_NONE. * mdoc_word_alloc(), man_word_alloc() -> roff_word_alloc() * mdoc_word_append(), man_word_append() -> roff_word_append() * mdoc_addspan(), man_addspan() -> roff_addtbl() * mdoc_addeqn(), man_addeqn() -> roff_addeqn() Minus 50 lines of code, no functional change.
Revision 1.59 / (download) - annotate - [select for diffs], Sun Apr 19 13:50:25 2015 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.58: +1 -3 lines
Diff to previous 1.58 (unified) to selected 1.38 (unified)
Unify node handling functions: * node_alloc() for mdoc and man_node_alloc() -> roff_node_alloc() * node_append() for mdoc and man_node_append() -> roff_node_append() * mdoc_head_alloc() and man_head_alloc() -> roff_head_alloc() * mdoc_body_alloc() and man_body_alloc() -> roff_body_alloc() * mdoc_node_unlink() and man_node_unlink() -> roff_node_unlink() * mdoc_node_free() and man_node_free() -> roff_node_free() * mdoc_node_delete() and man_node_delete() -> roff_node_delete() Minus 130 lines of code, no functional change.
Revision 1.58 / (download) - annotate - [select for diffs], Sat Apr 18 17:28:36 2015 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.57: +8 -9 lines
Diff to previous 1.57 (unified) to selected 1.38 (unified)
Unify {mdoc,man}_{alloc,reset,free}() into roff_man_{alloc,reset,free}(). Minus 80 lines of code, no functional change. Written on the train from Koeln to Wolfsburg returning from p2k15.
Revision 1.57 / (download) - annotate - [select for diffs], Sat Apr 18 17:01:58 2015 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.56: +3 -1 lines
Diff to previous 1.56 (unified) to selected 1.38 (unified)
Move mdoc_hash_init() and man_hash_init() to libmandoc.h and call them from mparse_alloc() and choose_parser(), preparing unified allocation of struct roff_man.
Revision 1.56 / (download) - annotate - [select for diffs], Sat Apr 18 16:06:39 2015 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.55: +19 -20 lines
Diff to previous 1.55 (unified) to selected 1.38 (unified)
Replace the structs mdoc and man by a unified struct roff_man. Almost completely mechanical, no functional change. Written on the train from Exeter to London returning from p2k15.
Revision 1.55 / (download) - annotate - [select for diffs], Thu Jan 15 04:26:39 2015 UTC (9 years, 8 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_3
Changes since 1.54: +3 -3 lines
Diff to previous 1.54 (unified) to selected 1.38 (unified)
Fatal errors no longer exist. 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.
Revision 1.54 / (download) - annotate - [select for diffs], Wed Jan 14 22:58:16 2015 UTC (9 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.53: +2 -3 lines
Diff to previous 1.53 (unified) to selected 1.38 (unified)
downgrade ".so with absolute path" from FATAL to ERROR; allows to get rid of ROFF_ERR
Revision 1.53 / (download) - annotate - [select for diffs], Sun Dec 28 14:42:27 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.52: +3 -2 lines
Diff to previous 1.52 (unified) to selected 1.38 (unified)
mdoc(7) already uses the mandoc(1) -Ios argument in the footer line 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>.
Revision 1.52 / (download) - annotate - [select for diffs], Sun Dec 21 14:14:35 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.51: +1 -2 lines
Diff to previous 1.51 (unified) to selected 1.38 (unified)
ISO C99 explicitly forbids forward references to enum types (6.7.2.3.3.); patch from daniel@
Revision 1.51 / (download) - annotate - [select for diffs], Mon Dec 1 08:05:52 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_2
Changes since 1.50: +6 -1 lines
Diff to previous 1.50 (unified) to selected 1.38 (unified)
header cleanup: * add missing forward declarations * remove needless header inclusions * some style unification
Revision 1.50 / (download) - annotate - [select for diffs], Mon Dec 1 04:05:32 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.49: +1 -5 lines
Diff to previous 1.49 (unified) to selected 1.38 (unified)
remove unneccessary inclusion protection; patch from deraadt@
Revision 1.49 / (download) - annotate - [select for diffs], Fri Nov 28 06:27:05 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.48: +5 -5 lines
Diff to previous 1.48 (unified) to selected 1.38 (unified)
Simplify by making the eqn and tbl steering functions void; no functional change, minus 15 lines of code.
Revision 1.48 / (download) - annotate - [select for diffs], Sat Nov 1 06:03:13 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.47: +2 -3 lines
Diff to previous 1.47 (unified) to selected 1.38 (unified)
Use struct buf in libroff, it is very natural there and reduces the number of arguments of many functions. While here, sprinkle some KNF. No functional change.
Revision 1.47 / (download) - annotate - [select for diffs], Sat Nov 1 04:08:43 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.46: +4 -4 lines
Diff to previous 1.46 (unified) to selected 1.38 (unified)
Refactor, no functional change: Remove the parse point from struct buf. Some functions need multiple parse points, some none at all, and it varies whether any of them need to be passed around. So better pass them as a separate argument, and only when needed.
Revision 1.46 / (download) - annotate - [select for diffs], Tue Oct 28 17:36:19 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.45: +2 -2 lines
Diff to previous 1.45 (unified) to selected 1.38 (unified)
Make the character table available to libroff so it can check the validity of character escape names and warn about unknown ones. This requires mchars_spec2cp() to report unknown names again. Fortunately, that doesn't require changing the calling code because according to groff, invalid character escapes should not produce output anyway, and now that we warn about them, that's fine.
Revision 1.45 / (download) - annotate - [select for diffs], Sat Oct 25 01:03:52 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.44: +10 -1 lines
Diff to previous 1.44 (unified) to selected 1.38 (unified)
integrate preconv(1) into mandoc(1); enhances functionality and reduces code and docs by more than 300 lines
Revision 1.44 / (download) - annotate - [select for diffs], Thu Oct 16 01:11:20 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.43: +1 -7 lines
Diff to previous 1.43 (unified) to selected 1.38 (unified)
Implement in-line equations, much needed by Xenocara manuals. Put the steering into the roff parser rather than into the mdoc parser such that it works for all macro languages and on both text and macro lines. Line breaks and blank characters generated before and after in-line equations are not perfect yet, but let's do one thing at a time.
Revision 1.43 / (download) - annotate - [select for diffs], Sat Sep 6 22:39:36 2014 UTC (10 years ago) by schwarze
Branch: MAIN
Changes since 1.42: +2 -1 lines
Diff to previous 1.42 (unified) to selected 1.38 (unified)
Move main format autodetection from the parser dispatcher to the roff parser where .Dd and .TH are already detected, anyway. This improves robustness because it correctly handles whitespace or an alternate control character before Dd. In the parser dispatcher, provide a fallback looking ahead in the input buffer instead of always assuming man(7). This corrects autodetection when Dd is preceded by other macros or macro-like handled requests like .ll. Triggered by reports from Daniel Levai about issues on Slackware Linux.
Revision 1.42 / (download) - annotate - [select for diffs], Wed Jul 9 11:31:43 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_1,
VERSION_1_12_4,
VERSION_1_12
Changes since 1.41: +3 -2 lines
Diff to previous 1.41 (unified) to selected 1.38 (unified)
mark defos as const; nobody needs to change it, and it is occasionally useful to be able to pass literal strings
Revision 1.41 / (download) - annotate - [select for diffs], Sun Apr 20 16:46:04 2014 UTC (10 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.40: +11 -11 lines
Diff to previous 1.40 (unified) to selected 1.38 (unified)
KNF: case (FOO): -> case FOO:, remove /* LINTED */ and /* ARGSUSED */, remove trailing whitespace and blanks before tabs, improve some indenting; no functional change
Revision 1.40 / (download) - annotate - [select for diffs], Wed Mar 19 21:51:20 2014 UTC (10 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.39: +3 -3 lines
Diff to previous 1.39 (unified) to selected 1.38 (unified)
Generalize the mparse_alloc() and roff_alloc() functions by giving 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().
Revision 1.39 / (download) - annotate - [select for diffs], Mon Jan 6 21:34:31 2014 UTC (10 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.38: +2 -2 lines
Diff to previous 1.38 (unified)
Another 25% speedup for mandocdb(8) -Q mode, found with gprof(1). For /usr/share/man, we only need 56% of the time of makewhatis(8) now. In groff, user-defined macros clashing with mdoc(7) or man(7) standard macros are cleared when parsing the .Dd or .TH macro, respectively. Of course, we continue doing that in standard mode to assure full groff bug compatibility. However, in -Q mode, full groff bug compatibility makes no sense when it's unreasonably expensive, so skip this step in -Q mode. Real-world manuals hardly ever redefine standard macros, that's terrible style, and if they do, it's pointless to do so before .Dd or .TH because it has no effect. Even if someone does, it's extremely unlikely to break mandocdb(8) -Q parsing because we abort the parse sequence after the NAME section, anyway. So if you manually redefine .Sh, .Nm, .Nd, or .SH in a way that doesn't work at all and rely on .Dd or .TH to fix it up for you, your broken manual will no longer get a perfect apropos(1) entry until you re-run mandocdb(8) without -Q. It think that consequence is acceptable in order to get a 25% speedup for everyone else.
Revision 1.38 / (download) - annotate - [selected], Sun Jan 5 20:26:36 2014 UTC (10 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.37: +3 -3 lines
Diff to previous 1.37 (unified)
Add an option -Q (quick) to mandocdb(8) for accelerated generation of reduced-size databases. Implement this by allowing the parsers to optionally abort the parse sequence after the NAME section. While here, garbage collect the unused void *arg attribute of struct mparse and mparse_alloc() and fix some errors in mandoc(3). This reduces the processing time of mandocdb(8) on /usr/share/man by a factor of 2 and the database size by a factor of 4. However, it still takes 5 times the time and 6 times the space of makewhatis(8), so more work is clearly needed.
Revision 1.37 / (download) - annotate - [select for diffs], Sun Jan 5 19:10:56 2014 UTC (10 years, 8 months ago) by joerg
Branch: MAIN
Changes since 1.36: +4 -1 lines
Diff to previous 1.36 (unified) to selected 1.38 (unified)
Tag functions with format strings as arguments as printf-like. Fix one case where a non-literal is used as format string. Fix another case where a variable is formatted using the wrong type.
Revision 1.36 / (download) - annotate - [select for diffs], Tue Dec 31 23:23:10 2013 UTC (10 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.35: +2 -2 lines
Diff to previous 1.35 (unified) to selected 1.38 (unified)
Simplify: Remove an unused argument from the mandoc_eos() function. No functional change.
Revision 1.35 / (download) - annotate - [select for diffs], Sun Dec 15 21:23:52 2013 UTC (10 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_3
Changes since 1.34: +2 -2 lines
Diff to previous 1.34 (unified) to selected 1.38 (unified)
The "value" argument to the roff(7) .nr requests ends right before the first non-digit character. While here, implement and document an optional sign, requesting increment or decrement, as documented in the Ossanna/Kernighan/Ritter troff manual and supported by groff. Reported by bentley@ on discuss@.
Revision 1.34 / (download) - annotate - [select for diffs], Sat Oct 5 22:15:03 2013 UTC (10 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.33: +3 -3 lines
Diff to previous 1.33 (unified) to selected 1.38 (unified)
Expand references to number registers in exactly the same way as references to user-defined strings. While here, make number registers signed int, like in groff. Inspired by NetBSD roff.c rev. 1.8 and read.c rev. 1.7 written by Christos Zoulas on March 21, 2013, but implemented in a completely different way, without hacking into read.c, where this functionality really doesn't belong.
Revision 1.33 / (download) - annotate - [select for diffs], Sat Oct 5 22:08:12 2013 UTC (10 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.32: +4 -9 lines
Diff to previous 1.32 (unified) to selected 1.38 (unified)
Support setting arbitrary roff(7) number registers, preserving read support for the ".nr nS" SYNOPSIS state register. Inspired by NetBSD roff.c rev. 1.18 (Christos Zoulas, March 21, 2013), but implemented differently. I don't want to have yet another different implementation of a hash table in mandoc - it would be the second one in roff.c alone and the fifth one in mandoc grand total. Instead, i designed and implemented roff_setreg() and roff_getreg() to be similar to roff_setstrn() and roff_getstrn(). Once we feel the need to optimize, we can introduce one common hash table implementation for everything in mandoc.
Revision 1.32 / (download) - annotate - [select for diffs], Mon Nov 19 17:57:23 2012 UTC (11 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_2
Changes since 1.31: +3 -3 lines
Diff to previous 1.31 (unified) to selected 1.38 (unified)
In groff, trying to redefine standard man(7) macros before .TH has no effect; after .TH, it works. Trying to redefine standard mdoc(7) macros before .Dd works when calling groff with the -mdoc command line option, but does not when calling groff with -mandoc; after .Dd, it always works. Arguably, one might call that buggy behaviour in groff, but it is very unlikely that anybody will change groff in this respect (certainly, i'm not volunteering). So let's be bug-compatible. This fixes the vertical spacing in sox(1). Merging from OpenBSD libmandoc.h 1.18, read.c 1.8, roff.c 1.47, June 2, 2012.
Revision 1.31 / (download) - annotate - [select for diffs], Tue Jun 12 20:21:04 2012 UTC (12 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.30: +3 -2 lines
Diff to previous 1.30 (unified) to selected 1.38 (unified)
Add `cc' support. This was reported by espie@ and in the TODO. Caveat: `cc' has buggy behaviour when invoked in groff(1) and followed by a line-breaking control character macro, e.g., in a -man doc, .cc | .B foo 'B foo |cc 'B foo will cause groff(1) to behave properly for `.B' but inline the macro definition for `B' when invoked with the line-breaking macro.
Revision 1.30 / (download) - annotate - [select for diffs], Sun May 27 17:48:57 2012 UTC (12 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.29: +2 -2 lines
Diff to previous 1.29 (unified) to selected 1.38 (unified)
Support -Ios='OpenBSD 5.1' to override uname(3) as the source of the default value for the mdoc(7) .Os macro. Needed for man.cgi on the OpenBSD website. Problem with man.cgi first noticed by deraadt@; beck@ and deraadt@ agree with the way to solve the issue. "Please check them in and I'll look into them later!" kristaps@
Revision 1.29 / (download) - annotate - [select for diffs], Fri Dec 2 01:37:14 2011 UTC (12 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_1
Changes since 1.28: +2 -1 lines
Diff to previous 1.28 (unified) to selected 1.38 (unified)
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
Revision 1.28 / (download) - annotate - [select for diffs], Thu Jul 28 14:17:11 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_12_0,
VERSION_1_11_7,
VERSION_1_11_6
Changes since 1.27: +2 -1 lines
Diff to previous 1.27 (unified) to selected 1.38 (unified)
An implementation of `tr'. This routes allocations of TEXT nodes through libroff, which does the appropriate translations of `tr'. This is SLOW: it uses the backend of `ds' and `de', which is a simple linear list. However, unlike `ds' and `de', it iterates over EACH CHARACTER of the entire file looking for replacements.
Revision 1.27 / (download) - annotate - [select for diffs], Wed Jul 27 12:41:02 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.26: +3 -1 lines
Diff to previous 1.26 (unified) to selected 1.38 (unified)
Disable in-line eqn processing for a bit.
Revision 1.26 / (download) - annotate - [select for diffs], Wed Jul 27 07:32:26 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.25: +1 -2 lines
Diff to previous 1.25 (unified) to selected 1.38 (unified)
Move mandoc_hyph() into roff_parsetext() as a single conditional. While here, do some function renames for clarity and make all function prototypes be in one place.
Revision 1.25 / (download) - annotate - [select for diffs], Mon Jul 25 15:37:00 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.24: +5 -1 lines
Diff to previous 1.24 (unified) to selected 1.38 (unified)
Implement the first steps of equation parsing from within libmdoc. This consists of a shim around the text parser that calls out to libroff if equation components exist on the line. Right now this will do nothing, as the equation delimiter always returns nil.
Revision 1.24 / (download) - annotate - [select for diffs], Thu Jul 21 15:21:13 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_5
Changes since 1.23: +2 -2 lines
Diff to previous 1.23 (unified) to selected 1.38 (unified)
Support `size' constructs in eqn.7. Generalise mandoc_strontou to this effect.
Revision 1.23 / (download) - annotate - [select for diffs], Mon Jul 18 07:46:41 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.22: +7 -33 lines
Diff to previous 1.22 (unified) to selected 1.38 (unified)
Make `struct roff' be passed into libmdoc and libman upon creation. This is required for supporting in-line equations. While here, push registers properly into roff and add an set/get/mod interface.
Revision 1.22 / (download) - annotate - [select for diffs], Sun Jul 17 11:14:53 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.21: +1 -2 lines
Diff to previous 1.21 (unified) to selected 1.38 (unified)
Remove prototype since moved into mandoc.h.
Revision 1.21 / (download) - annotate - [select for diffs], Sat May 14 16:06:09 2011 UTC (13 years, 4 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_4,
VERSION_1_11_3
Changes since 1.20: +2 -1 lines
Diff to previous 1.20 (unified) to selected 1.38 (unified)
Move roff.c's strtol into libmandoc.h for use by other parts of the code (which will come).
Revision 1.20 / (download) - annotate - [select for diffs], Tue Apr 19 16:38:48 2011 UTC (13 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_2
Changes since 1.19: +2 -3 lines
Diff to previous 1.19 (unified) to selected 1.38 (unified)
Clean up parsing of delimiters in -mdoc. First, remove the "dowarn" variable from mandoc_getarg() so that it prints the warning every time. Then, remove the warning from args_checkpunct(). This way, warnings are being posted at the correct time. This makes the flag argument to mdoc_zargs() superfluous, so make it be zero when it's invoked. Finally, move the args() flags into mdoc_argv.c and make them enums.
Revision 1.19 / (download) - annotate - [select for diffs], Sun Apr 17 09:08:19 2011 UTC (13 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.18: +3 -2 lines
Diff to previous 1.18 (unified) to selected 1.38 (unified)
Get mdoc_argv.c ready to use [some of] mandoc_getarg() by giving said function a parameter to suppress warnings.
Revision 1.18 / (download) - annotate - [select for diffs], Sat Apr 9 15:29:40 2011 UTC (13 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (unified) to selected 1.38 (unified)
Remove a2roffdeco() and mandoc_special() functions and replace them with a public (mandoc.h) function mandoc_escape(), which merges the functionality of both prior functions. Reason: code duplication. The a2roffdeco() and mandoc_special() functions were pretty much the same thing and both quite complex. This allows one function to receive improvements in (e.g.) subexpression handling and performance, instead of having to replicate functionality. As such, the mandoc_escape() function already handles a superset of the escapes handled in previous versions and has improvements in performance (using strcspn(), for example) and reliable handling of subexpressions. This code Works For Me, but may need work to catch any regressions. Since the benefits are great (leaner code, simpler API), I'd rather have it in-tree than floating as a patch.
Revision 1.17 / (download) - annotate - [select for diffs], Mon Mar 28 23:52:13 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_1
Changes since 1.16: +2 -1 lines
Diff to previous 1.16 (unified) to selected 1.38 (unified)
Have libman and libmdoc use mandoc_getcontrol() to determine whether a macro has been invoked. libroff is next.
Revision 1.16 / (download) - annotate - [select for diffs], Tue Mar 22 14:05:45 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.15: +10 -13 lines
Diff to previous 1.15 (unified) to selected 1.38 (unified)
Move mandoc_isdelim() back into libmdoc.h. This fixes an unreported error where (1) -man pages were punctuating delimiters (e.g., `.B a ;') and where (2) standalone punctuation in -mdoc or -man (e.g., ";" on its own line) would also be punctuated. This introduces a small amount of complexity of mdoc_{html,term}.c must manage their own spacing with running print_word() or print_text(). The check for delimiting now happens in mdoc_macro.c's dword().
Revision 1.15 / (download) - annotate - [select for diffs], Tue Mar 22 10:02:50 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.14: +2 -2 lines
Diff to previous 1.14 (unified) to selected 1.38 (unified)
Step 3: consolidate manuals. The parse functions in mdoc.h, roff.h, and man.h are now part of libmandoc.h, so remove these from their respective manuals (they're no longer public-facing and we don't need a libmandoc.3 (yet?)). Before that, move the juicy data (parse tree syntax) into new-born mandoc.3. Peck around in Makefile and index.sgml to reflect reality.
Revision 1.14 / (download) - annotate - [select for diffs], Tue Mar 22 09:48:13 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.13: +90 -11 lines
Diff to previous 1.13 (unified) to selected 1.38 (unified)
Step 1 of restructuring: libmandoc.h. Move all compiler-set-specific stuff into libmandoc.h, including old mdoc.h/man.h/roff.h functions now used by read.c. The motivation behind this is to tighten the relationship between the underlying compilers while keeping parse data hidden from general callers (e.g., main.c). While here, also move register values from mandoc.h into libmandoc.h as noted by schwarze@. See above for explanation.
Revision 1.13 / (download) - annotate - [select for diffs], Sun Mar 20 16:02:05 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.12: +11 -7 lines
Diff to previous 1.12 (unified) to selected 1.38 (unified)
Consolidate messages. Have all parse-time messages (in libmdoc, libroff, etc., etc.) route into mandoc_msg() and mandoc_vmsg(), for the time being in libmandoc.h. This requires struct mparse to be passed into the allocation routines instead of mandocmsg and a void pointer. Then, move some of the functionality of the old mmsg() into read.c's mparse_mmsg() (check against wlevel and setting of file_status) and use main.c's mmsg() as simply a printing tool.
Revision 1.12 / (download) - annotate - [select for diffs], Thu Mar 17 08:49:34 2011 UTC (13 years, 6 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_10
Changes since 1.11: +1 -4 lines
Diff to previous 1.11 (unified) to selected 1.38 (unified)
Move mandoc_{realloc,malloc,calloc} out of libmandoc.h and into mandoc.h so that everybody can use them. This follows the convention of libXXXX.h being internal to a library and XXXX.h being the external interface. Not only does this allow the removal of lots of redundant NULL-checking code, it also sets the tone for adding new mandoc-global routines.
Revision 1.11 / (download) - annotate - [select for diffs], Mon Mar 7 01:35:51 2011 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.10: +2 -6 lines
Diff to previous 1.10 (unified) to selected 1.38 (unified)
Clean up date handling, as a first step to get rid of the frequent petty warnings in this area: - always store dates as strings, not as seconds since the Epoch - for input, try the three most common formats everywhere - for unrecognized format, just pass the date though verbatim - when there is no date at all, still use the current date Originally triggered by a one-line patch from Tim van der Molen, <tbvdm at xs4all dot nl>, which is included here. Feedback and OK on manual parts from jmc@. "please check this in" kristaps@
Revision 1.10 / (download) - annotate - [select for diffs], Mon Jan 3 22:42:37 2011 UTC (13 years, 8 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_10_9
Changes since 1.9: +2 -1 lines
Diff to previous 1.9 (unified) to selected 1.38 (unified)
Unify roff macro argument parsing (in roff.c, roff_userdef()) and man macro argument parsing (in man_argv.c, man_args()), both having different bugs, to use one common macro argument parser (in mandoc.c, mandoc_getarg()), because from the point of view of roff, man macros are just roff macros, hence their arguments are parsed in exactly the same way. While doing so, fix these bugs: * Escaped blanks (i.e. those preceded by an odd number of backslashes) were mishandled as argument separators in unquoted arguments to user-defined roff macros. * Unescaped blanks preceded by an even number of backslashes were not recognized as argument separators in unquoted arguments to man macros. * Escaped backslashes (i.e. pairs of backslashes) were not reduced to single backslashes both in unquoted and quoted arguments both to user-defined roff macros and to man macros. * Escaped quotes (i.e. pairs of quotes inside quoted arguments) were not reduced to single quotes in man macros. OK kristaps@ Note that mdoc macro argument parsing is yet another beast for no good reason and is probably afflicted by similar bugs. But i don't attempt to fix that right now because it is intricately entangled with lots of unrelated high-level mdoc(7) functionality, like delimiter handling and column list phrase handling. Disentagling that would waste too much time now.
Revision 1.9 / (download) - annotate - [select for diffs], Sun Jul 18 17:00:26 2010 UTC (14 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_10_8,
VERSION_1_10_7,
VERSION_1_10_6,
VERSION_1_10_5_PREPDF,
VERSION_1_10_5
Changes since 1.8: +3 -3 lines
Diff to previous 1.8 (unified) to selected 1.38 (unified)
Text ending in a full stop, exclamation mark or question mark should not flag the end of a sentence if: 1) The punctuation is followed by closing delimiters and not preceded by alphanumeric characters, like in "There is no full stop (.) in this sentence" or 2) The punctuation is a child of a macro and not preceded by alphanumeric characters, like in "There is no full stop .Pq \&. in this sentence" "looks fine" to kristaps@; tested by jmc@ and sobrado@
Revision 1.8 / (download) - annotate - [select for diffs], Sat Jun 19 20:46:27 2010 UTC (14 years, 3 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_4,
VERSION_1_10_3,
VERSION_1_10_2
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (unified) to selected 1.38 (unified)
Churn as I finish email address migration kth.se -> bsd.lv.
Revision 1.7 / (download) - annotate - [select for diffs], Wed Jun 9 19:22:56 2010 UTC (14 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (unified) to selected 1.38 (unified)
Squash bug noted by Ulrich Spoerlein where "-" were being converted to ASCII_HYPH, as per normal, but were screwing up mandoc_special(). Fixed by making mandoc_special() first check isspace() instead of ! isgraph(), then normalise its string as it passes out. This require de-constifying some validation routines not already de-constified (those in libman), but that's ok, because I'd like to be pushing actions into validation routines to save on space and redundant calculations.
Revision 1.6 / (download) - annotate - [select for diffs], Tue May 25 12:37:20 2010 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_1
Changes since 1.5: +2 -1 lines
Diff to previous 1.5 (unified) to selected 1.38 (unified)
Modified version of Ingo Schwarze's patch for hyphen-breaking. Breakable hyphens are cued in the back-ends (with ASCII_HYPH) and acted upon in term.c or ignored in html.c. Also cleaned up XML decl printing (no need for extra vars).
Revision 1.5 / (download) - annotate - [select for diffs], Wed May 12 17:08:03 2010 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_25
Changes since 1.4: +2 -1 lines
Diff to previous 1.4 (unified) to selected 1.38 (unified)
Put the eos-checker into libmandoc.h. Added bits in mdoc.7 and man.7 about EOS spacing.
Revision 1.4 / (download) - annotate - [select for diffs], Mon Nov 2 06:22:45 2009 UTC (14 years, 10 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_24,
VERSION_1_9_23,
VERSION_1_9_22,
VERSION_1_9_21,
VERSION_1_9_20,
VERSION_1_9_19,
VERSION_1_9_18,
VERSION_1_9_17,
VERSION_1_9_16,
VERSION_1_9_15-pre2,
VERSION_1_9_15-pre1,
VERSION_1_9_15,
VERSION_1_9_14,
VERSION_1_9_13
Changes since 1.3: +6 -1 lines
Diff to previous 1.3 (unified) to selected 1.38 (unified)
Added mandoc_a2time() for proper date conversion. Fitted TH and Dd handlers to use mandoc_a2time(). Documented date syntax for -man, fixed documentation for -mdoc.
Revision 1.3 / (download) - annotate - [select for diffs], Fri Oct 30 05:58:37 2009 UTC (14 years, 11 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_12
Changes since 1.2: +1 -2 lines
Diff to previous 1.2 (unified) to selected 1.38 (unified)
libmdoc and libman now using non-recoverable allocations (simpler code).
Revision 1.2 / (download) - annotate - [select for diffs], Wed Oct 28 19:21:59 2009 UTC (14 years, 11 months ago) by kristaps
Branch: MAIN
Changes since 1.1: +6 -1 lines
Diff to previous 1.1 (unified) to selected 1.38 (unified)
Slow movement of internal allocations to fail completely.
Revision 1.1 / (download) - annotate - [select for diffs], Sat Jul 4 09:01:55 2009 UTC (15 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_9,
VERSION_1_9_8,
VERSION_1_9_7,
VERSION_1_9_6,
VERSION_1_9_5,
VERSION_1_9_2,
VERSION_1_9_11,
VERSION_1_9_10,
VERSION_1_9_1,
VERSION_1_9_0,
VERSION_1_8_5,
VERSION_1_8_4,
VERSION_1_8_3,
VERSION_1_8_2,
VERSION_1_8_1,
VERSION_1_8_0,
VERSION_1_7_24,
VERSION_1_7_23,
VERSION_1_7_22,
VERSION_1_7_21
Diff to selected 1.38 (unified)
Moved escape validation into libmandoc.h/mandoc.c (common between libman/libmdoc1). libman supports MAN_IGN_ESCAPE (like MDOC_IGN_ESCAPE). All popular escapes now handled consistently.