Fwd: Filter-1.60
[email protected] (David Christensen) Sat, 15 Jan 2022 11:55:17 -0800
| Newsgroups | perl.module-authors |
|---|---|
| Message-ID | <[email protected]> |
--------------D816905FD494940C10351C31 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit module-authors: I submitted a patch for Filter::Cpp about three months ago to Reini Urban and Paul Marquess, but never heard back from either of them. I seem to recall that I later tested the changes on macOS and FreeBSD, and they failed. Suggestions? David -------- Forwarded Message -------- Subject: Filter-1.60 Date: Wed, 20 Oct 2021 21:47:14 -0700 From: David Christensen <[email protected]> To: [email protected] CC: [email protected] Reini: Thank you for your work on Filter. :-) Attached please find a tarball (Filter-1.60-dpchrist-20211016.tar.gz) with some changes I made to Filter::cpp to help it work better with Perl code: 1. Added a pre-filter to escape octothorps ('#') not involved with C preprocessor control-lines. 2. Added a post-filter to unescape octothorps. 3. Added an options hash %opt with default values that can be overridden via Filter::cpp import() arguments. 4. Reworked the cpp and sh invocations to use %opt. 5. Added a debugging function, _d(), that is controlled by the DEBUG_FILTER__CPP environment variable and writes debug messages to a file named after the running script: "$0.debug". 6. Reworked cpp.t to dump variables on test failure, and to keep generated files on test failure or when debugging is enabled. 7. Added generated files to Makefile.PL 'clean' target. At this point, all of the test suite except t/z_manifest.t (skipped) passes on Debian GNU/Linux 9, and Filter::cpp works correctly with a simple example module (MyLib-0.01-dpchrist-20211016.tar.gz, attached). I would like to contribute my changes to Filter, if you find them agreeable. I am willing to learn and help do the work, but am unfamiliar with the process (CPAN, Git, and/or GitHub). Please advise. David --------------D816905FD494940C10351C31 Content-Type: application/gzip; name="Filter-1.60-dpchrist-20211016.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Filter-1.60-dpchrist-20211016.tar.gz" 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 LdMyLdMyLdMyLdMyLdPy/13+De6yWykAUAAA --------------D816905FD494940C10351C31 Content-Type: application/gzip; name="MyLib-0.01-dpchrist-20211016.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="MyLib-0.01-dpchrist-20211016.tar.gz" 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 FClSpEiRIkWKFCn6DPo/R9vEhwB4AAA= --------------D816905FD494940C10351C31--