On Sat, Nov 08, 2008 at 03:56:18PM -0600, Raphael Geissert wrote:
> Adam D. Barratt wrote:
> 
> > On Sat, 2008-11-08 at 14:41 +0100, Filippo Giunchedi wrote:
> >> Hi,
> >> 
> >> On Sun, Nov 02, 2008 at 04:15:41PM +0000, Adam D. Barratt wrote:
> >> > We are aware of the $'' bashism - indeed checkbashisms contains a
> >> > commented-out check for it. The reason the check is disabled is that
> >> > when it and a similar check for $"" were tested against the wide range
> >> > of shell scripts available in Debian, they produced a high level of
> >> > false positives and were disabled in devscripts 2.10.30, only one
> >> > package after having been introduced.
> >> 
> >> Are there any examples of such false positives? A list of packages is fine 
> >> :)
> 
> Examples:
> possible bashism in ./usr/sbin/afserverconfig line 173 ($'...' should be 
> "$(printf '...')"):
>     eval num_var_params='"$'values__$num_var_sp_idx'"'
> 
> possible bashism in ./etc/cron.daily/changetrack line 22 ($'...' should be 
> "$(printf '...')"):
>     find /var/lib/dpkg/info -name '*.conffiles' -exec grep -v '.schemas$' 
> '{}' ';' | \

thanks!
It seems like that the false positives are all generated by $ inside quotes, so
it might be sufficient to check if preceding single quotes are odd or even.

IOW here is a five minute hack:

--- checkbashisms.pl    (revision 1716)
+++ checkbashisms.pl    (working copy)
@@ -307,6 +307,14 @@
            output_explanation($filename, $orig_line, $explanation);
        }
        }
+   
+       my $re='(?<![\$\\\])\$\'[^\']+\'';
+       if ($line =~ m/(.*)($re)/){
+           my $count = () = $1 =~ /(^|[^\\])\'/g;
+           if( $count % 2 == 0 ) {
+               output_explanation($filename, $orig_line, q<$'...' should be 
"$(printf '...')">);
+           }
+       }   

        # $cat_line contains the version of the line we'll check
        # for heredoc delimiters later. Initially, remove any

unless I'm missing something this might work for false positives, same goes for 
$" " of course

filippo
--
Filippo Giunchedi - http://esaurito.net
PGP key: 0x6B79D401
random quote follows:

Odium turbae sanabit solitudo, taedium solitudinis turba.
Solitude will cure our hatred of the crowd,
the crowd will cure our disgust with solitude.
-- Seneca, De Tranquillitate Animi



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to