asa: Rewrite to fix line termination issue.The standard is somewhat unclear, but on the balance, I believe that thephrase “the rest of the input line” should be interpreted to mean therest of the
asa: Rewrite to fix line termination issue.The standard is somewhat unclear, but on the balance, I believe that thephrase “the rest of the input line” should be interpreted to mean therest of the input line including the terminating newline if and only ifthere is one. This means the current implementation is incorrect on twopoints:- First, it suppresses the previous line's newline in the '1' case.- Second, it unconditionally emits a newline at the end of the output for non-empty input, even if the input did not end with a newline.Resolve this by rewriting the main loop. Instead of special-casing thefirst line and then assuming that every line ends with a newline, weremember how each line ends and emit that either at the beginning ofthe next line or at the end of the file except in the one case ('+')where the standard explicitly says not to.While here, try to reduce diff to upstream a little and update theirRCS tag to reflect the fact that while we've diverged significantlyfrom them, we've incorporated all their changes. Remove the uselesssecond RCS tag.We also update the tests to account for the change in interpretationof the '1' case and add a test case for unterminated input.MFC after: 1 weekSponsored by: Klara, Inc.Reviewed by: kevansDifferential Revision: https://reviews.freebsd.org/D43326(cherry picked from commit c2356a440db91c106867d45c94b3d6d7bc0e50f0)
show more ...
asa: Add some unit tests.MFC after: 1 weekSponsored by: Klara, Inc.Reviewed by: markjDifferential Revision: https://reviews.freebsd.org/D40564