Sync-to-go: src/src-troff..
commit8f5b72242f67753283215995057d8a574aa52e43
authorSteffen Nurpmeso <sdaoden@users.sf.net>
Thu, 25 Jun 2015 13:51:40 +0000 (25 15:51 +0200)
committerSteffen Nurpmeso <sdaoden@users.sf.net>
Tue, 14 Jul 2015 14:28:36 +0000 (14 16:28 +0200)
tree0f09bf4552dbc8bdc692a2fefaa0e9598f8ec96a
parent1d7899c260a2f1733ced1326aac70a280149c627
Sync-to-go: src/src-troff..

We don't have the .class request, yet don't have the .lsm request,
yet miss some break type extensions, but otherwise we are
practically in sync.  (Some code changes i will do differently,
and it is better that way.)

Changesets "in" due to NetBSD et. al.:

- [2b2c1dd], 2009-11-20:
    * */*.cpp: Replace `printf(string);' with `printf("%s", string);'.

- Quite some compiler-warning fixes.

Changesets "taken":

- [ee5cfb6], 2009-02-21:
    Add a new `file' warning category.

  I have taken this simple changeset (i.e., something equivalent).
  It is indeed needed since the [file_case] topic branch commit
  (Encapsulate searchpath:: FILE*'s in new class file_case) that
  i blindly patched in from the diff that applied to (then)
  current GNU troff uses WARN_FILE.

- [a2a502f], 2009-04-10:
     Fix a memory leak in troff for -Thtml.
     Reported by Urs Eggli <Urs.Eggli@zuerich.ch>.

  Yes, but we use NULL not 0: change the constructors accordingly,
  too.

- [977b833], 2009-12-31:
    Make patterns with uppercase letters work.
    Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.

  The manual update for that was committed in [sync.2015-05-20]
  (Sync-to-go: man..).
  Do it differently: don't use the magical number 256 anywhere,
  instead use UCHAR_MAX+1, which is effectively what is going in
  anywhere in input.cpp.

- [2ff8567], 2010-05-28:
    Don't use obsolete intermediate output command `F'.
    Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>

- [24f89b0], 2010-12-15:
    Use enum to increase readability.

  Yes, but place it in the class as break_char_node::break_types
  and use a generic BT_ "break-type" prefix.

- [a521e59], 2010-12-15:
    Remove unused code.

- [e6ee17f], 2011-03-18:
    [troff] Improve error message.

    * src/roff/troff/input.cc (token::delimiter): Improve error message.
    Suggested by Doug McIlroy <doug@cs.dartmouth.edu>.

- [54405b9], 2014-09-27:
    Set `transparent' flag for `\[cq].
    Problem reported by Dave Kemper <saint.snit@gmail.com>.

TODO Changesets taken partially:

- [1be43b5], 2009-11-24:
    Fix double frees and memory leaks.

  . Fix the leak in environment::make_tag() the same as in
    do_underline_special().
  . Didn't take the hunk for input_stack::check_end_diversion()
    since i have to look more deeply in why i can simply overtake
    ownership of the object the input_iterator points to.
  . Ditto interpolate_arg() hunk.

- [fcf9280], 2014-09-24, Keith Marshall:
    Refactor psbb line input function; avoid a buffer overrun.

  Avoid the buffer overrun.  The rest is fluffy and in fact this
  entire stuff should be moved into the library since psrm.cpp
  also requires and implements the functionality.

TODO Changesets not taken:

- [2edd6b2], 2009-02-14:
    Implement a leading spaces macro request, `lsm', in analogy to
    `blm'.
    Implement two new number registers, \n[lsn] and \n[lss], which hold
    the number of spaces and the horizontal space, respectively, which
    would be inserted if the macro registered by `lsm' wasn't called.

  TODO The changeset is straight forward and i will take it after i
  TODO have checked 'space_width.to_units() * nspaces' against
  TODO 'space_width * nspaces'.

- [b345704], 2009-05-07:
    Accept \0 and friends within \o.
    Reported by Doug McIlroy <doug@cs.dartmouth.edu>.

  TODO Also implements TOKEN_HORIZONTAL_SPACE and uses it for
  TODO \0, \|, \^, and \h.
  TODO Need to see this in action, we need something similar.

- [1cb8dd7], 2010-12-13:
    Implement support for character classes.

  TODO Big one not taken that implements glyph_to_unicode()
  TODO (or makes the functionality available under this name),
  TODO .class and a lot of charinfo stuff around that:
  TODO o The new `class' request assigns a short name to a set of
  TODO   characters which can be referred to in the `cflags'
  TODO   request.  This is especially useful to control
  TODO   line-breaking and hyphenation rules in CJK languages.
  TODO So not having this will last; i want to do something with
  TODO S-CText regarding this; i can't tell wether it'll be
  TODO compatible.  It takes more than that to support CJK anyway.

- [140d7dc], 2010-12-13:
    Add wide character support to grotty

  Well this will be done with S-CText.  This commit is actually
  wrong since it uses wcwidth(3) with Unicode codepoints.  I've
  mentioned that on the list, i think they've changed it in the
  meanwhile.

- [38e6049], 2010-12-18:   -->  And [18dae4e], 2010-12-20:
    Improve CJK support with new values for `.cflags'.

    This patch introduces three new values to `.cflags':

      don't break before character: 128
      don't break after character:  256
      allow inter-character break:  512

    They are handled differently if compared to other cflags
    values:[..]

  TODO I'm in doubt about that, and we miss [1cb8dd7] anyway.
  TODO In general we need Unicode awareness as those are the
  TODO specialists and have put decades of effort into their
  TODO data and algorithms.  It'll come in via S-CText.
  TODO However, the completely different approach of [18dae4e]
  TODO i think we'll add once we're running.

- [a9269fd], 2010-12-20:
    Speed up access to cflags values.

    We now recompute the cflags values for all charinfo objects if
    `.class' has been called.

  We don't have this request.
man/l_roff_diff.7.in
man/src-troff.1.in
src/troff/env.cpp
src/troff/input.cpp
src/troff/node.cpp
src/troff/node.h
src/troff/number.cpp
src/troff/troff.h