Home | History | Annotate | Download | only in Support
      1 //===-- Program.cpp - Implement OS Program 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 header file implements the operating system Program concept.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #include "llvm/Support/Program.h"
     15 #include "llvm/Config/config.h"
     16 using namespace llvm;
     17 using namespace sys;
     18 
     19 //===----------------------------------------------------------------------===//
     20 //=== WARNING: Implementation here must contain only TRULY operating system
     21 //===          independent code.
     22 //===----------------------------------------------------------------------===//
     23 
     24 int
     25 Program::ExecuteAndWait(const Path& path,
     26                         const char** args,
     27                         const char** envp,
     28                         const Path** redirects,
     29                         unsigned secondsToWait,
     30                         unsigned memoryLimit,
     31                         std::string* ErrMsg) {
     32   Program prg;
     33   if (prg.Execute(path, args, envp, redirects, memoryLimit, ErrMsg))
     34     return prg.Wait(path, secondsToWait, ErrMsg);
     35   else
     36     return -1;
     37 }
     38 
     39 void
     40 Program::ExecuteNoWait(const Path& path,
     41                        const char** args,
     42                        const char** envp,
     43                        const Path** redirects,
     44                        unsigned memoryLimit,
     45                        std::string* ErrMsg) {
     46   Program prg;
     47   prg.Execute(path, args, envp, redirects, memoryLimit, ErrMsg);
     48 }
     49 
     50 // Include the platform-specific parts of this class.
     51 #ifdef LLVM_ON_UNIX
     52 #include "Unix/Program.inc"
     53 #endif
     54 #ifdef LLVM_ON_WIN32
     55 #include "Windows/Program.inc"
     56 #endif
     57