LCOV - code coverage report
Current view: top level - lib/Support - Process.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 14 17 82.4 %
Date: 2017-09-14 15:23:50 Functions: 1 2 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- Process.cpp - Implement OS Process Concept --------------*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : //  This file implements the operating system Process concept.
      11             : //
      12             : //===----------------------------------------------------------------------===//
      13             : 
      14             : #include "llvm/Support/Process.h"
      15             : #include "llvm/ADT/StringExtras.h"
      16             : #include "llvm/Config/config.h"
      17             : #include "llvm/Support/FileSystem.h"
      18             : #include "llvm/Support/Path.h"
      19             : #include "llvm/Support/Program.h"
      20             : 
      21             : using namespace llvm;
      22             : using namespace sys;
      23             : 
      24             : //===----------------------------------------------------------------------===//
      25             : //=== WARNING: Implementation here must contain only TRULY operating system
      26             : //===          independent code.
      27             : //===----------------------------------------------------------------------===//
      28             : 
      29          11 : Optional<std::string> Process::FindInEnvPath(const std::string& EnvName,
      30             :                                              const std::string& FileName)
      31             : {
      32             :   assert(!path::is_absolute(FileName));
      33          11 :   Optional<std::string> FoundPath;
      34          22 :   Optional<std::string> OptPath = Process::GetEnv(EnvName);
      35          11 :   if (!OptPath.hasValue())
      36             :     return FoundPath;
      37             : 
      38           4 :   const char EnvPathSeparatorStr[] = {EnvPathSeparator, '\0'};
      39           4 :   SmallVector<StringRef, 8> Dirs;
      40          12 :   SplitString(OptPath.getValue(), Dirs, EnvPathSeparatorStr);
      41             : 
      42          13 :   for (const auto &Dir : Dirs) {
      43           4 :     if (Dir.empty())
      44           0 :       continue;
      45             : 
      46           5 :     SmallString<128> FilePath(Dir);
      47          16 :     path::append(FilePath, FileName);
      48           8 :     if (fs::exists(Twine(FilePath))) {
      49           9 :       FoundPath = FilePath.str();
      50           3 :       break;
      51             :     }
      52             :   }
      53             : 
      54             :   return FoundPath;
      55             : }
      56             : 
      57             : 
      58             : #define COLOR(FGBG, CODE, BOLD) "\033[0;" BOLD FGBG CODE "m"
      59             : 
      60             : #define ALLCOLORS(FGBG,BOLD) {\
      61             :     COLOR(FGBG, "0", BOLD),\
      62             :     COLOR(FGBG, "1", BOLD),\
      63             :     COLOR(FGBG, "2", BOLD),\
      64             :     COLOR(FGBG, "3", BOLD),\
      65             :     COLOR(FGBG, "4", BOLD),\
      66             :     COLOR(FGBG, "5", BOLD),\
      67             :     COLOR(FGBG, "6", BOLD),\
      68             :     COLOR(FGBG, "7", BOLD)\
      69             :   }
      70             : 
      71             : static const char colorcodes[2][2][8][10] = {
      72             :  { ALLCOLORS("3",""), ALLCOLORS("3","1;") },
      73             :  { ALLCOLORS("4",""), ALLCOLORS("4","1;") }
      74             : };
      75             : 
      76             : // This is set to true when Process::PreventCoreFiles() is called.
      77             : static bool coreFilesPrevented = false;
      78             : 
      79           0 : bool Process::AreCoreFilesPrevented() {
      80           0 :   return coreFilesPrevented;
      81             : }
      82             : 
      83             : // Include the platform-specific parts of this class.
      84             : #ifdef LLVM_ON_UNIX
      85             : #include "Unix/Process.inc"
      86             : #endif
      87             : #ifdef LLVM_ON_WIN32
      88             : #include "Windows/Process.inc"
      89             : #endif

Generated by: LCOV version 1.13