diff options
author | Karl Williamson <public@khwilliamson.com> | 2013-02-27 14:30:51 -0700 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2014-10-21 09:26:49 -0600 |
commit | 86c3d61a7d00d9c0436b87cee87cb18a0055b6f8 (patch) | |
tree | 12f133c7f90c048b6d4618af1241e86b606a8b1c /makedepend.SH | |
parent | 6edd329f2057bbd709a169f99a8ea89d83e6b1ad (diff) | |
download | perl-86c3d61a7d00d9c0436b87cee87cb18a0055b6f8.tar.gz |
makedepend.SH: Retain '/**/' comments
These comments may actually be necessary.
Diffstat (limited to 'makedepend.SH')
-rwxr-xr-x | makedepend.SH | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/makedepend.SH b/makedepend.SH index 3b8e050858..ca9cce1817 100755 --- a/makedepend.SH +++ b/makedepend.SH @@ -141,14 +141,22 @@ for file in `$cat .clist`; do # && defined(BAR) /* comment */ \ # && defined(BAZ) /* comment */ \ # etc. - # This code processes these latter situations first; it assumes there is - # at most one straightforward comment per continued preprocessor line. (It - # would be easier to handle more general cases if sed had a non-greedy '*' - # quantifier; but typically preprocessor directive lines are rather - # simple.) The continuation line is joined, and the process repeated on - # the enlarged line as long as there are continuations. At the end, if - # there are any comments remaining, they should be like the first situation, - # and can just be deleted. (Subsequent lines of the comment are irrelevant + # Also, in lines like + # #defined FOO(a,b) a/**/b + # the comment may be important and so needs to be retained. + # This code processes the single-line comments first; it assumes there is + # at most one straightforward comment per continued preprocessor line, + # replacing each non-empty comment (and its surrounding white space) by a + # single space. (sed only has a greedy '*' quantifier, so this doesn't + # work right if there are multiple comments per line, and strings can look + # like comments to it; both are unlikely in a preprocessor statement.) Any + # continuation line is joined, and the process repeated on the enlarged + # line as long as there are continuations. At the end, if there are any + # comments remaining, they are either completely empty or are like the + # first situation. The latter are just deleted by first deleting to the + # end of line (including preceding white space) things that start with '/*' + # and the next char isn't a '*'; then things that start with '/**', but the + # next char isn't a '/'. (Subsequent lines of the comment are irrelevant # and get dropped.) ( $echo "#line 2 \"$file\""; \ $sed -n <$file \ @@ -162,7 +170,8 @@ for file in `$cat .clist`; do -e 's/\\\n/ /g' \ -e '/^#line/d' \ -e '/^[ ]*#/{' \ - -e 's|/\*.*$||' \ + -e 's|/\*[^*].*$||' \ + -e 's|/\*\*[^/].*$||' \ -e p \ -e '}' ) >UU/$file.c |