[llvm-commits] CVS: llvm/lib/System/AIX/Path.cpp

Misha Brukman brukman at cs.uiuc.edu
Mon Oct 18 10:39:56 PDT 2004



Changes in directory llvm/lib/System/AIX:

Path.cpp updated: 1.4 -> 1.5
---
Log message:

AIX does not have mkdtemp() so emulate its behavior using mktemp() and mkdir()


---
Diffs of the changes:  (+10 -5)

Index: llvm/lib/System/AIX/Path.cpp
diff -u llvm/lib/System/AIX/Path.cpp:1.4 llvm/lib/System/AIX/Path.cpp:1.5
--- llvm/lib/System/AIX/Path.cpp:1.4	Fri Sep 10 23:59:30 2004
+++ llvm/lib/System/AIX/Path.cpp	Mon Oct 18 12:39:45 2004
@@ -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
 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;
 }






More information about the llvm-commits mailing list