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"

H4sICO3qcGECA015TGliLTAuMDEudGFyAO1ce3PbNhLPv8anQBXfSLqzZFHPDhXnoshKoqst
6ySn10zTaigSklhTJEuCtnWZ3Ge/XYCkaMWvprGcttiZxCSeCyx297cAqOPVkT0tVcoVbf/J
Q1EFqNVowN+a1qpUM39TeqLVtVpdazZqWE6rNlutJ7TxZAsUhdwIKH1i+eYisEN+U7m78v+g
dLyWfxiY+1+J/Gv1ZlPJ/xHk79jT/a9A/vVqra7k/0jyF0llf/lF5d+s12+Uf6NST+RfaWmQ
rjUarcYTWlHy38LwGX1lO5wFum76fptkEzhjOzu/XhRodlnQYpv4hnlmzBkVaW0iKoU8sE0u
G7gwAtd25yFkeVFAd7/vjcb9kwE9oHlcanlID9ivkR0w2rv0vQB6a4uSL/rjDpTCPpMM7E9k
9X4YnoxOJyffyQKEAj21XdOJLEZzKYv7fZm0v2CO45XTWjkCDZG7K5wbQZi7T8EwmkI5rU3+
JPp/3Bn0X/XGpw9i/2/V/2Zj0/5Xak2l/9ug7sJw5ywkifDJsXHGZrbDysMjMup1Do97ZGq7
csmTrB3IvngWuVP/yC16RG5TRrLpmAiPHzk8AXMlWZaT495pp7xaOvQuOvasyGH0Xef4iC4Z
N0qWwQ1aMCyLWXS6ojgJ+C8oyjZ/CT33nm3+awx27o42v079RzF/Nfi/ruK/x5C/0KRty19r
SfxXa9UA+dfR/tcV/tsOPf1mPwoDIXvmnlOfBc6tcA5fxZoRuPDvYr1MLhYeFU+I1cjuOvGA
5l50Rq+/z1F7RsUT5IvsQvGPjZv+hPrPH2oH8DPsP9gBZf+3Lv8Mltoi/tcqtWoi/2qtKeJ/
rdlS9v9rtP/ivWv4PAqYrp/a7kruEJgyCR2A3EFwrZe2uyMzd+FxneNAxbHPTF1/Fbkmtz03
lFmnLOS6fuwFDDparuhuFHFwIabBMSApYCt7NPItO9ijeeA4D3/Ecs1D21geQvYby0MAgcWw
3AtzaUE5uYOw+/MPe+IhV+pjAzn5hn2TuHxhN+SWF/E9ig8sgOZ2L4uiJznoDzRchZwtZcsf
oZYd0rRSTvC4Ry+8wLG+ee/m9ugvHkzILjxMJq/6R73JBJ+O+gN4aid1RT85KLNBd9a9jKtU
Pql6e11ieS6bcBACyFp557+g/4+j6m3v/7Qg2BP4v16H5wrif3hU9n8r9p++ZDOwuDS/NM4Y
tV2YDsfJUzAk4AsgZ8ksyhfwGpqB7XMaLrzIseiU0SByXWPqgHuw+YI8jVtA+5Ev084Mt243
G02rgy08o0ZI8+hwaLzu8oQ8vYkgi5pir4rmsYuQHjynWp5yL/PuGCEXBmzCvYkf2C7Pt++M
ZtZeh64bbpOXvdf9AVh2KDLxzgp5wWO+KKz7rVz23ZAFnK5wzxobpKZnMZgvx7vYg5m80uFS
7hnB7EI3hSJM9YJBcujRgBkWNGYDP0vDpT7utheEe7Y8M9tEkYKQMPry6UVgo+mW4hJdS5mV
CbnX/u9652+r+g/P6f4vxP011P9mQ8X/Wzv/aZQr1TrIoX2bqqRHPu/gJYymoHn+BKZuznhI
PgjMJCEYrGCbMwRY4cKe8dLz8dthb6TrmfJtURwbXyOSggkmggUFrVj8sfYTALZCnpavwSmQ
mC/mJUgD2smvuzwAQLh+Izv2jO4uDdvVdc/nHyw2jeaovQLeZfj8Hw33fy74AOQmwALV9SIt
lP9R3N3f1WgYmGhLLNCl3er+sk0fnfOAAeR0M6Xb5KMUiO/BUl6CQY7FEZd89uy4811v8mrU
ed0m41F3cnoyORyfHnyyq07Kwzcng3dUz4yakMwM6GTn/W5hcNLrvjmRZmcGtp1C2rrZYpta
Hn3/nuzE4JqWTFrqQ0dQ7v3urC3yEGmSlC0cQLK8cNRJmNG75G+57YRg6ZK9c7ksXzNYTGAA
jzwEquJ08G+QANIhkHXii5ii8B7TQBxi+sByA7+WjaHFf3DeEmsno4BB57i3swOWP7bzUkrx
sSUweXIsMjfnLC43HPVGvX9PhseiiQ8fZWrn5fh01OmerqtfOTGJ63benr45Gcm+D41z26JD
I3JoVxgbBr4EJJjYnhcLz5mzwDLc8IyVTW/5HBr5fRtpGfsvT3seaP/nFvtfBdrAf7VGXZ3/
bQ//03MWhKAzFNcBOfiECDkF3CLXRwxWLEReALACQDAmE7gmBjOGa1E/8GAlS+QXRDLGp55L
Ft6FrCcAYabWHlRbgfKbC9tl1GI+cy3mmjYLETQujRVdGOeAgMDoEHZpLH3oqAvIaumDCgeh
6DRuFVgDPQuMACoXRQY27UFfARRBRGsgP4QvjCyajVnGZ4GHMyOCEadtA5bqJDOB5gMz46sM
ljCJ3WFnEFcEzGy7MDkiiV3ywDABzkHDJNvALPCW1Ej6smz0v9MIWUQcKLj0mYcDngbeRSgB
HiNGAHMFU2ICOkSbCNMErhXGSmEUBvVmmREIiYVl2udSehEMZUUNMvc8SxYHoSQyS9ZCZq5S
VJrlBjomFjOxysWCiemd2ZfQF85Cdj1AVYD7fAGO4cJ1PMOCIcA09gfj087RUecULCwssOyq
ACbjynzlS1HMPAcANNTUhRuUYUPmqBrhB7wmfwX8TV/ilgk57A17g8PeoNvvjXFRrzuKZSjE
A7Mpl0sye7iI0jUlGJg6xmL9HyHdk+G7Uf/1m1PaGRzSo34X+ugRMoy44N70goCZGAr4q8Ce
L3jcpMlwfWzONExONy1Y6BZptVLV8AhZ+oeMa4jHIHlboXBnAUNJzThgFNbGKESsEFidycIS
SwW63/fEAO3ZikBCBPomxRYaS5y+YBligDbEiYYohDmzPcpsMS0iLVkmjXK1XtbAue4RI456
POGApUo7BsaBSWFYlaJyQzCWqrVxbtgOhpIwcrXv9Fj7P/FVkK37fwAA9c39H62pKf+/DRqx
c1uoJtgR7oENQestdBQcFtgYzJKQlRBcJXjPxaUnYMu0b8Eu6Y2mrjWFgSI7JbAC9tx2jdQ6
tKkZMIPLCzCL6mVItXK1JjaMYisRkp2dEgQJHVqKO1IW4JH0/0Hufn/m+W+93lDnv48g/zQ6
3er+X0tL7H+zVo3Pf1X8txU6WDDD0sT+ByEyGCxt2n90CZuAN643fjc4GY77Y8TE6dWg9jUA
OS5/2Bt3R/2hxPxjHk0hKDCjJXO5hL/YlWhjb9NziOjF8bwzhLtnTMZAEV9AhTjWWTN8AcDV
ZXPHnkPDlLleNF9giOMwRJsC5ELXJHIBFXMR0728wm455rdK5e1VQgYehKXAicVmRuTgjvp6
Cno92jkan8D0QW8C5QqUDNMxi5yN8YWRuUBYjTxczfFmJGCOGHESduDQINAxxKZ+fMJ8tVIh
aS85IwiJ7dK3g/4PxT2sjggcWmXnBs4DzE+Azvl6lkavutglAX1wLSOwQozRZgKoS5COe3MO
suLYeLQAwWbkC4EJ0J/E8ct4EiCmiGOZq41csCmExRCF3L+BeKLlThkEcZtR0B7tPXP483SX
rPdszp+n1a4Jzca9v3SEdWBGnNxi//cf3f+DI9CU/38s/5/ewX80+TcrdfX93+PLP/0+42Hj
/0qzktz/rjY0lH8LFoLCf9sgPDiU3/bIQ0NxayK9sra+yo331vCkUUXMfzn9x2+wHlb/4/u/
qf5XIUnd/9oKic9zsx9s5MU11by6/6n0f/MLzgfT/6q2qf/1ltr/3wqtv+CS32UptVf6/yV/
++M++l+r19bxX0Xs/0LAqPR/G7TxSx43XwC94Xc8fv/PeHxigeKC16OS3xqvaArI3Ff/k19P
+OJ93Pn9X7O6uf+n1ZX+b4VKpRIxpqG4m6bT/J0nP/n40EUH7St91o1VMo1sx5okF66woWsu
+gIvlTwxPXdmz/Fm9r2KWyvXWNrmRFbTqUbmzMUDFGZNpisoc03NdOe8VdYAie6J23qQz7ih
613Phezs/nq1jM5Jg87E7a2Q6TRyz1zvwiXiRz9C/LARD8MCR6cLzn19f1+ebJTEuMsh2DYT
rxjOWdllXGidqFU618r18oIvHagedwcsQ2KewLCgI3k9wvUmtmuxS+zFsvFamResdGEMS5TH
f23XJOmU0Q8fybpBYbjJ5SRkgW049n/FKdBkCn6AuRbkZ8cvfiAlezn027wyp39q+4+/dLNt
+9+s1jftf62q9n+3QgJF5RIPkKM6zd3pA+Qn0jnpCLDKj/E3Lbnf7g5yWPUn2eBV840NazIj
a8UFi1/OjsdjiY35lcHEdj3LYWriseCHtGDgCK5icx8yvJtdNn3DLYOZ348/2vtnliH8/j2X
fAqUi5kSjVRFf/ITkhzafZEq1DTmNXEAV3hIPUF2CJjB027wDT9wj19/yvTjBwy8RXilReGu
simYmPiUjXTMukYmgvVKbl3uY/z4MR166uEfvKcgcrm9vL2ftFZmbvD+hBGyCdgJHoliOXic
OiwWR1Z4aEfj5BscrCiGvxGm68NhZjVWW7VKZQK11RmLIkWKFClSpEiRIkWKFClSpEiRIkWK
FClSpEiRIkWKFCn6DPo/R9vEhwB4AAA=
--------------D816905FD494940C10351C31--