diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2004-10-18 17:39:45 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2004-10-18 17:39:45 +0000 |
commit | 9c02f5c566a4c2d26ce811e5bc80c3e4ee5fdbeb (patch) | |
tree | 8ac59ea4d83558edcccddf4bd3981a1558f50fb6 /lib/System | |
parent | 4caf5d563d0e5e6a2ed56bb537cb911d99beaa4c (diff) |
AIX does not have mkdtemp() so emulate its behavior using mktemp() and mkdir()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17131 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System')
-rw-r--r-- | lib/System/AIX/Path.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/System/AIX/Path.cpp b/lib/System/AIX/Path.cpp index aef8e033ec..0d6c7fbd15 100644 --- a/lib/System/AIX/Path.cpp +++ b/lib/System/AIX/Path.cpp @@ -7,12 +7,13 @@ // //===----------------------------------------------------------------------===// // -// This file provides the AIX specific implementation of the Path class. +// This file provides the AIX-specific implementation of the Path class. // //===----------------------------------------------------------------------===// // Include the generic unix implementation #include "../Unix/Path.cpp" +#include <sys/stat.h> namespace llvm { using namespace sys; @@ -34,11 +35,15 @@ Path::is_valid() const { Path Path::GetTemporaryDirectory() { char pathname[MAXPATHLEN]; - strcpy(pathname,"/tmp/llvm_XXXXXX"); - if (0 == mkdtemp(pathname)) - ThrowErrno(std::string(pathname) + ": Can't create temporary directory"); + strcpy(pathname, "/tmp/llvm_XXXXXX"); + // AIX does not have a mkdtemp(), so we emulate it as follows: + // mktemp() returns a valid name for a _file_, not a directory, but does not + // create it. We assume that it is a valid name for a directory. + char *TmpName = mktemp(pathname); + if (!mkdir(TmpName, S_IRWXU)) + ThrowErrno(std::string(TmpName) + ": Can't create temporary directory"); Path result; - result.set_directory(pathname); + result.set_directory(TmpName); assert(result.is_valid() && "mkdtemp didn't create a valid pathname!"); return result; } |