diff options
author | Chris Lattner <sabre@nondot.org> | 2004-05-27 01:20:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-05-27 01:20:55 +0000 |
commit | 1760ccd7b08ae45353ddabf5453abb9122548a09 (patch) | |
tree | 752c4a9b5033046274e4894f9dca507368142e49 /llvm/lib/Support/SystemUtils.cpp | |
parent | 67150528d42b468aa792a8203e451fd77c40eb16 (diff) | |
download | bcm5719-llvm-1760ccd7b08ae45353ddabf5453abb9122548a09.tar.gz bcm5719-llvm-1760ccd7b08ae45353ddabf5453abb9122548a09.zip |
Changes to make libSupport build on systems that don't have the wait syscall.
llvm-svn: 13806
Diffstat (limited to 'llvm/lib/Support/SystemUtils.cpp')
-rw-r--r-- | llvm/lib/Support/SystemUtils.cpp | 42 |
1 files changed, 12 insertions, 30 deletions
diff --git a/llvm/lib/Support/SystemUtils.cpp b/llvm/lib/Support/SystemUtils.cpp index a39c5ab52f5..398096a6a66 100644 --- a/llvm/lib/Support/SystemUtils.cpp +++ b/llvm/lib/Support/SystemUtils.cpp @@ -134,6 +134,7 @@ int llvm::RunProgramWithTimeout(const std::string &ProgramPath, const std::string &StdErrFile) { // FIXME: install sigalarm handler here for timeout... +#ifdef HAVE_SYS_WAIT_H int Child = fork(); switch (Child) { case -1: @@ -179,6 +180,11 @@ int llvm::RunProgramWithTimeout(const std::string &ProgramPath, exit(1); } return Status; + +#else + std::cerr << "RunProgramWithTimeout not implemented on this platform!\n"; + return -1; +#endif } @@ -220,12 +226,7 @@ int llvm::RunProgramWithTimeout(const std::string &ProgramPath, // int llvm::ExecWait(const char * const old_argv[], const char * const old_envp[]) { - // Child process ID - register int child; - - // Status from child process when it exits - int status; - +#ifdef HAVE_SYS_WAIT_H // // Create local versions of the parameters that can be passed into execve() // without creating const problems. @@ -233,56 +234,37 @@ int llvm::ExecWait(const char * const old_argv[], char ** const argv = (char ** const) old_argv; char ** const envp = (char ** const) old_envp; - // // Create a child process. - // - switch (child=fork()) - { - // + switch (fork()) { // An error occured: Return to the caller. - // case -1: return 1; break; - // // Child process: Execute the program. - // case 0: execve (argv[0], argv, envp); - - // // If the execve() failed, we should exit and let the parent pick up // our non-zero exit status. - // exit (1); - break; - // // Parent process: Break out of the switch to do our processing. - // default: break; } - // // Parent process: Wait for the child process to termiante. - // + int status; if ((wait (&status)) == -1) - { return 1; - } - // // If the program exited normally with a zero exit status, return success! - // if (WIFEXITED (status) && (WEXITSTATUS(status) == 0)) - { return 0; - } +#else + std::cerr << "llvm::ExecWait not implemented on this platform!\n"; +#endif - // // Otherwise, return failure. - // return 1; } |