<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Apr 26, 2013, at 19:46 , Anton Yartsev <<a href="mailto:anton.yartsev@gmail.com">anton.yartsev@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  
    <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 27.04.2013 5:07, Jordan Rose wrote:<br>
    </div>
    <blockquote cite="mid:C10FA7B4-EB5F-4433-B93C-29C4E5B4F527@apple.com" type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <div><br>
      </div>
      <div>
        <div>On Apr 26, 2013, at 11:26 , Anton Yartsev <<a moz-do-not-send="true" href="mailto:anton.yartsev@gmail.com">anton.yartsev@gmail.com</a>>
          wrote:</div>
        <br class="Apple-interchange-newline">
        <blockquote type="cite">On 22.04.2013 23:51, Jordan Rose wrote:<br>
          <blockquote type="cite">   Better MinGW support is certainly
            welcome! A few comments, though...<br>
            <br>
            <br>
            ================<br>
            Comment at: tools/scan-build/scan-build:1563<br>
            @@ -1562,3 +1562,3 @@<br>
             $ClangCXX = $Clang;<br>
            -$ClangCXX =~ s/\-\d+\.\d+$//;<br>
            -$ClangCXX .= "++";<br>
            +if($^O =~/msys/) {<br>
            +  $ClangCXX =~ s/.exe$/++.exe/;<br>
            ----------------<br>
            Not being a native Perl hacker, I found this a bit
            confusing. `$OSNAME` would have been a bit friendlier.<br>
            <br>
            Also, this check //only// handles MinGW, correct? <a moz-do-not-send="true" href="http://perldoc.perl.org/perlvar.html#General-Variables">http://perldoc.perl.org/perlvar.html#General-Variables</a>
            says that native Windows returns "MSWin32" here.<br>
            <br>
            ================<br>
            Comment at: tools/scan-build/c++-analyzer.win:3<br>
            @@ +2,2 @@<br>
            +<br>
            +system ("ccc-analyzer @ARGV");<br>
            ----------------<br>
            The reason we have c++-analyzer at all is so that we can set
            run the underlying compilation with a C++ compiler. Simply
            forwarding c++-analyzer.win to ccc-analyzer won't actually
            accomplish that -- you'll have to add a flag or enviroment
            variable check to ccc-analyzer, which c++-analyzer.win can
            set before invoking ccc-analyzer.<br>
            <br>
            Also, are you sure this won't destroy arguments with spaces
            in them? (You can test with something like `"-DSTR=macro
            with spaces"`.)<br>
            <br>
            <br>
            <a moz-do-not-send="true" href="http://llvm-reviews.chandlerc.com/D703">http://llvm-reviews.chandlerc.com/D703</a><br>
          </blockquote>
          Thanx for the review, all of your fears were confirmed.<br>
          Attached is a new patch.<br>
          <br>
          Temporary excluded phabricator from recipients.<br>
        </blockquote>
      </div>
      <br>
      <div>This doesn't actually fix either problem nicely. ;-) The
        advantage of a symlink over a wrapper script is that the
        indirection cost is <i>tiny...</i>at least on platforms where
        that trick works. That said, it does seem silly to have both a
        c++-analyzer symlink and a c++-analyzer.win wrapper script. How
        about moving the bulk of ccc-analyzer into a separate .pm file,
        which you can then load from ccc-analyzer and c++-analyzer? That
        solves the quoting problem, too.</div>
    </blockquote>
    Great idea! I'll try to implement it this way.<br>
    <br>
    <blockquote cite="mid:C10FA7B4-EB5F-4433-B93C-29C4E5B4F527@apple.com" type="cite">
      <div><br>
      </div>
      <div>(What's wrong with this quoting? Well, what if there are
        double quotes in the path? Better to sidestep the issue
        altogether.)</div>
    </blockquote>
    Arguments, when passed to or from @ARGV, are seemed to be splitted
    by quotes, if any, with qoutes removal, or by spaces otherwise:<br>
    <br>
    ------- script1.pl:<br>
    foreach my $arg (@ARGV) {<br>
      print "Argument to script1.pl: $arg\n";<br>
    }<br>
    print "\n";<br>
    system ("perl script2.pl @ARGV");<br>
    <br>
    ------- script2.pl:<br>
    foreach my $arg (@ARGV) {<br>
      print "Argument to script2.pl: $arg\n";<br>
    }<br>
    <br>
    ------- command and output with single quotes:<br>
    perl script1.pl -PARAM1 "a b" -PARAM2 c<br>
    <br>
    Argument to script1.pl: -PARAM1<br>
    Argument to script1.pl: a b<br>
    Argument to script1.pl: -PARAM2<br>
    Argument to script1.pl: c<br>
    <br>
    Argument to script2.pl: -PARAM1<br>
    Argument to script2.pl: a<br>
    Argument to script2.pl: b<br>
    Argument to script2.pl: -PARAM2<br>
    Argument to script2.pl: c<br>
    <br>
    <br>
    ------- command and output with double quotes:<br>
    perl script1.pl -PARAM1 ""a b""<br>
    <br>
    Argument to script1.pl: -PARAM1<br>
    Argument to script1.pl: a<br>
    Argument to script1.pl: b<br>
    <br>
    Argument to script2.pl: -PARAM1<br>
    Argument to script2.pl: a<br>
    Argument to script2.pl: b<br>
    <br>
    <br>
    ------- command and output with mixed double quotes:<br>
    perl script1.pl -PARAM1 '"a b"'<br>
    <br>
    Argument to script1.pl: -PARAM1<br>
    Argument to script1.pl: "a b"<br>
    <br>
    Argument to script2.pl: -PARAM1<br>
    Argument to script2.pl: a b<br></div></blockquote><br></div>At least in a shell you can do this:<div><br></div><div><span></span>% perl script1.pl "a \" b"</div><div><br></div><div>which leads to this:</div><div><br></div><div><div>Argument to script1.pl: a " b</div><div><br></div><div>sh: -c: line 0: unexpected EOF while looking for matching `"'</div><div>sh: -c: line 1: syntax error: unexpected end of file</div></div><div><br></div><div>;-)</div><div>Jordan</div></body></html>