From 4415a4b58bd561d85a7dff84f62778b675a98a09 Mon Sep 17 00:00:00 2001 From: Anton Yartsev Date: Sat, 17 Aug 2013 15:43:19 +0000 Subject: [PATCH] + make scan-build work with Strawberry Perl, ActiveState Perl, cygwin perl and msys perl ports. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188607 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/scan-build/scan-build | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/scan-build/scan-build b/tools/scan-build/scan-build index 22d5289586..82f0e837db 100755 --- a/tools/scan-build/scan-build +++ b/tools/scan-build/scan-build @@ -32,7 +32,9 @@ my $TERM = $ENV{'TERM'}; my $UseColor = (defined $TERM and $TERM =~ 'xterm-.*color' and -t STDOUT and defined $ENV{'SCAN_BUILD_COLOR'}); -my $UserName = HtmlEscape(getpwuid($<) || 'unknown'); +# Portability: getpwuid is not implemented for Win32 (see Perl language +# reference, perlport), use getlogin instead. +my $UserName = HtmlEscape(getlogin() || getpwuid($<) || 'unknown'); my $HostName = HtmlEscape(hostname() || 'unknown'); my $CurrentDir = HtmlEscape(getcwd()); my $CurrentDirSuffix = basename($CurrentDir); @@ -121,8 +123,7 @@ sub GetHTMLRunDir { my $Dir = shift @_; my $TmpMode = 0; if (!defined $Dir) { - $Dir = $ENV{'TMPDIR'}; - if (!defined $Dir) { $Dir = "/tmp"; } + $Dir = $ENV{'TMPDIR'} || $ENV{'TEMP'} || $ENV{'TMP'} || "/tmp"; $TmpMode = 1; } @@ -1603,13 +1604,17 @@ my $AbsRealBin = Cwd::realpath($RealBin); my $Cmd = "$AbsRealBin/libexec/ccc-analyzer"; my $CmdCXX = "$AbsRealBin/libexec/c++-analyzer"; -if (!defined $Cmd || ! -x $Cmd) { +# Portability: use less strict but portable check -e (file exists) instead of +# non-portable -x (file is executable). On some windows ports -x just checks +# file extension to determine if a file is executable (see Perl language +# reference, perlport) +if (!defined $Cmd || ! -e $Cmd) { $Cmd = "$AbsRealBin/ccc-analyzer"; - DieDiag("Executable 'ccc-analyzer' does not exist at '$Cmd'\n") if(! -x $Cmd); + DieDiag("'ccc-analyzer' does not exist at '$Cmd'\n") if(! -e $Cmd); } -if (!defined $CmdCXX || ! -x $CmdCXX) { +if (!defined $CmdCXX || ! -e $CmdCXX) { $CmdCXX = "$AbsRealBin/c++-analyzer"; - DieDiag("Executable 'c++-analyzer' does not exist at '$CmdCXX'\n") if(! -x $CmdCXX); + DieDiag("'c++-analyzer' does not exist at '$CmdCXX'\n") if(! -e $CmdCXX); } Diag("Using '$Clang' for static analysis\n"); -- 2.40.0