]> granicus.if.org Git - clang/commitdiff
Use Text::ParseWords to make 'clang -###' parsing more robust.
authorTed Kremenek <kremenek@apple.com>
Mon, 11 May 2009 23:29:51 +0000 (23:29 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 11 May 2009 23:29:51 +0000 (23:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71504 91177308-0d34-0410-b5e6-96231b3b80d8

utils/ccc-analyzer

index 8e1f26ba7ff41da043ae5839b9396d5bef3cc24c..89c638d4647f9521ab116019c0ff3844c8774212 100755 (executable)
@@ -18,6 +18,7 @@ use Cwd qw/ getcwd abs_path /;
 use File::Temp qw/ tempfile /;
 use File::Path qw / mkpath /;
 use File::Basename;
+use Text::ParseWords;
 
 my $CC = $ENV{'CCC_CC'};
 if (!defined $CC) { $CC = "gcc"; }
@@ -115,15 +116,11 @@ sub GetCCArgs {
   close(FROM_CHILD);
   
   die "could not find clang-cc line\n" if (!defined $line);
-  my @items = ($line =~ /(".*?"|\S+)/g);
+  # Strip the newline and initial whitspace
+  chomp $line;  
+  $line =~ s/^\s+//;
   
-  for (my $i = 0; $i < scalar(@items); ++$i) {
-    my $x = $items[$i];
-    $x =~ s/^"//;
-    $x =~ s/"$//;
-    $items[$i] = $x;
-  }
-
+  my @items = quotewords('\s+', 0, $line);
   my $cmd = shift @items;
   die "cannot find 'clang-cc' in 'clang' command\n" if (!($cmd =~ /clang-cc/));
   return \@items;